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 A e definir que ele terá acesso aos projetos A e B, ele poderá realizar o acesso no projeto B a partir de um único cadastro.
Inserir fluxograma
Figura 1 - Esquema de duas aplicações que utilizam o mesmo banco
Estrutura de classes
Na figura abaixo são exibidas as classes usadas no Multi aplicações.
Image Added
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 | |
Role | |
Securable | |
View | |
Application User |
Relacionamentos entre entidades
Os tipos de entidade são relacionados entre si das seguintes formas:
- Cada
User
pode ter múltiplosSecurables
associados, e cadaSecurable
pode estar associado a múltiplosUsers
. Esse relacionamento muitos-para-muitos é representado pela entidadeUserSecurable
. - Cada
User
pode ter múltiplosLogins
associados. - Cada
User
pode ter múltiplosRoles
associados, e cadaRole
pode estar associada a múltiplosUsers
. Esse relacionamento muitos-para-muitos é representado pela entidadeUserRole
. - Cada
Role
pode ter múltiplosSecurables
associados, e cadaSecurable
pode estar associado a múltiplosRoles
. Esse relacionamento muitos-para-muitos é representado pela entidadeRoleSecurable
. - Cada
Securable
pode ter múltiplosViews
associados.
Tabelas
Abaixo são detalhados todos os campos das tabelas usadas pelo sistema Multi Applicações.
Application
.
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 dos projetos deve conter as mesmas classes
- para que a integração entre as funções 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 até finalizar.
Repita esse procedimento para todos os projetos.
Figura 3.1 - Criando CRUD do permissionável
Vincular usuários
Rode as aplicações. Abra uma delas e vá até a página de Usuários. Vamos adicionar um novo usuário e, no campo Aplicações, basta associar esses permissionáveis (que são as aplicações) e salvar. Por exemplo, o usuário abaixo terá acesso a aplicação Projeto 1 e Projeto 2 (Figura 3.2). Caso o usuário não esteja vinculado com a aplicação, ele nunca irá conseguir fazer o login nessa aplicação.
Figura 3.2 - Vinculando usuários
Testando
Abra a segunda aplicação e, na tela de Login, acesse com os dados do usuário cadastrado na primeira aplicação.
Figura 3.3 - Testando o sistema multi aplicações
Se o usuário continuar na página de login e a mensagem do bloco de exceção for informada na tela (Figura 3.3) significa que ele não possui o Permissionável da aplicação.
Índice |
---|