Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
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 página do projeto aplicação A e definir que ele terá acesso aos projetos as aplicações A e B, ele poderá realizar o acesso no projeto B a partir de 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
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
Para utilizar a funcionalidade, é necessário atender alguns requisitos.
- Utilizar o mesmo banco de dados em todos os projetos (não pode ser o banco H2, pois ele não persiste os dados);
- 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.
Gerar CRUD
Após criar o projeto, abra o diagrama de dados app e selecione a classe Application. Clique no botão direito sobre a classe, selecione a opção Criar visão para entidade (destaque 1 da Figura 3.1), selecione 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 para todos os projetos.
Figura 3.1 - Criando CRUD do permissionável
Nessa página é possível visualizar todas as aplicações integradas, ou seja, que estão utilizando o sistema de múltiplas aplicações.
Vincular usuários
Rode todos os projetos que deseja vincular. 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 3.2) e salve. Ao escolher as aplicações, o usuário também aparecerá na grade de Usuários das aplicações informadas. Se nenhuma aplicação for informada, o usuário terá acesso apenas na origem.
Figura 3.2 - Vinculando usuários
Efetuando login
Abra a aplicação B e, na tela de Login, acesse com os dados do usuário cadastrado na primeira aplicação.
Figura 3.3 - Efetuando login com o sistema multi aplicações
Índice |
---|