- Criado por Thalina Edington Vieira, última alteração por Igor Andrade em 07/05/2021
Você está vendo a versão antiga da página. Ver a versão atual.
Comparar com o atual Ver Histórico da Página
« Anterior Versão 18 Próxima »
Um sistema com múltiplas aplicações é um sistema onde vários projetos utilizam o mesmo banco de dados e compartilham informações. Como, por exemplo, ao cadastrar um usuário na aplicação A e definir que ele terá acesso as aplicações A e B, esse usuário passa a ter acesso a diferentes aplicações com um único cadastro.
Figura 1 - Esquema de três aplicações que utilizam o mesmo banco
Observação
O Multi aplicações está diretamente relacionado as Permissões de Segurança do Cronapp, acesse a documentação para mais detalhes sobre esse recurso.
Estrutura de classes
Na figura abaixo são exibidas as classes usadas para integrar múltiplas aplicações.
Figura 2 - Diagrama de classes
O modelo de dados das permissões de segurança consiste dos seguintes tipos de entidade (Figura 2):
Nome da Entidade | Descrição |
---|---|
Application | Representa uma aplicação. |
Role | Representa um grupo (função). |
Securable | Representa um permissionável. |
View | Representa um objeto do tipo View ao qual você quer aplicar controle de acesso através dos métodos de requisição HTTP. |
User | Representa um usuário. |
Application User | Associa usuários e aplicações, permitindo que o usuário tenha permissão diretamente ao conjunto de acessos do permissionável. |
Relacionamentos entre entidades
Os tipos de entidade são relacionados entre si das seguintes formas:
- Cada
Application
pode ter múltiplosRole
associados. - Cada
Application
pode ter múltiplosSecurable
associados. - Cada
Application
pode ter múltiplosView
associados. - Cada
Application
pode ter múltiplosUser
associados, e cadaUser
pode estar associado a múltiplosApplication
. Esse relacionamento muitos-para-muitos é representado pela entidadeApplicationUser
.
Tabelas
Abaixo são detalhados todos os campos das tabelas usadas pelo sistema Multi Applicações.
Application
Aplicação.
Coluna do Banco | Tipo | Função |
---|---|---|
id | Texto | Identificador único da aplicação. |
name | Texto | Nome da aplicação. |
Role
Grupo ou Função.
Coluna do Banco | Tipo | Função |
---|---|---|
id | Texto | Chave primária. |
builtin | Lógico | O registro só pode ser alterado em tempo de desenvolvimento. |
membership_enabled | Lógico | Novos membros podem ser inseridos no grupo (função). |
name | Texto | Nome do grupo (função). |
normalized_name | Texto | Cria uma cópia normalizada do nome do grupo (função), permitindo que o nome tenha com caracteres especiais. |
application | Texto | Chave estrangeira da tabela Application. |
Securable
Permissionável.
Coluna do Banco | Tipo | Função |
---|---|---|
id | Texto | Chave primária. |
name | Texto | Nome do permissionável. |
application | Texto | Chave estrangeira da tabela Application. |
View
Aplica o controle de acesso aos métodos de requisição HTTP.
Coluna do Banco | Tipo | Função |
---|---|---|
id | Texto | Chave primária. |
securable_id | Texto | Chave estrangeira da tabela Securable. |
pattern | Texto | Página ou local com o controle de acesso. |
getMethodAllowed | Lógico | Permissão para o método get. |
headMethodAllowed | Lógico | Permissão para o método head. |
putMethodAllowed | Lógico | Permissão para o método put. |
postMethodAllowed | Lógico | Permissão para o método post. |
patchMethodAllowed | Lógico | Permissão para o método patch. |
deleteMethodAllowed | Lógico | Permissão para o método delete. |
optionsMethodAllowed | Lógico | Permissão para o método options. |
traceMethodAllowed | Lógico | Permissão para o método trace. |
application | Texto | Chave estrangeira da tabela Application. |
Application User
Tabela de relacionamento entre Aplicação e Usuários.
Coluna do Banco | Tipo | Função |
---|---|---|
id | Texto | Chave primária. |
application | Texto | Chave estrangeira da tabela Application. |
user | Texto | Chave estrangeira da tabela User. |
Configuração
Banco de dados
O banco de desenvolvimento configurado por padrão não persiste os dados. Por isso, é necessário cadastrar outro banco de dados de qualquer Fabricante, exceto H2. No menu do sistema vá até Projeto, selecione Banco de Dados (destaque 1 da Figura 3), depois clique em Novo (2) e preencha os campos. Utilize a documentação Banco de dados para qualquer dúvida. Após criá-lo, o banco de dados ficará disponível na lista (destaque em amarelo).
Importante
Após cadastrar o banco no projeto A, é indispensável utilizá-lo nos outros projetos para ocorrer a integração entre eles.
Figura 3 - Criando banco de dados
Diagrama
Após criar o banco de dados, abra o Diagrama de dados (app), selecione o banco no diagrama (destaque 1 da Figura 4.1) e gere a camada de persistência (2). Escolha a opção "Utilizar tabelas existentes" (3), caso contrário os dados do banco que estão sendo usados nos outros projetos serão excluídos. Caso queria converter tabelas de um banco de dados externo, utilize a opção de Engenharia Reversa.
Repita esse procedimento em todos os projetos.
Figura 4.1 - Gerando camada de persistência no novo banco de dados
Observação
O diagrama de dados de todos os projetos deve conter as classes que serão compartilhadas com os mesmo atributos para que a integração seja possível.
Em seguida, selecione a classe Application, clique no botão direito sobre a classe e selecione a opção Criar visão para entidade (destaque 1 da Figura 4.2). Na janela Assistente de View escolha o modelo de formulário CRUD (2) e depois selecione no campo Formulário de Referência a pasta admin (2). Por fim, clique em Avançar e depois em Finalizar.
Repita esse procedimento em todos os projetos.
Figura 4.2 - Criando CRUD do permissionável
Essa pagina possibilitará consultar as aplicações que estão integradas, ou seja, que estão utilizando o sistema de múltiplas aplicações.
Recomendação
Se for necessário criar permissionáveis ou grupos específicos para uma aplicação, isso deve ser criado feito em Permissões de Segurança antes de rodar o projeto pela primeira vez. Após criá-los, será necessário gerar CRUDs (Figura 3.1) das classes Role e Securable no Diagrama de Dados.
Aplicação
Execute todos os projetos que deseja vincular. Após rodar o projeto A, basta executar a segunda aplicação pela primeira vez que os dados são atualizados automaticamente no banco de dados, através do conteúdo contido no populate.json (visível apenas no Modo Avançado).
Vincular usuários
Abra uma aplicação A e vá até a página de Usuários. Adicione um novo usuário e, no campo Aplicações, associe as aplicações (Figura 5.1) e salve. Ao escolher as aplicações, o usuário também aparecerá na grade de Usuários das aplicações informadas.
Figura 5.1 - Vinculando usuários
Efetuar login
Abra a aplicação B e, na tela de Login (Figura 5.2), acesse com os dados do usuário cadastrado na primeira aplicação.
Figura 5.2 - Efetuando login com o sistema multi aplicações
Nesta página
- Sem rótulos