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 2 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 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.


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últiplos Securables associados, e cada Securable pode estar associado a múltiplos Users. Esse relacionamento muitos-para-muitos é representado pela entidade UserSecurable.
  • Cada User pode ter múltiplos Logins associados.
  • Cada User pode ter múltiplos Roles associados, e cada Role pode estar associada a múltiplos Users. Esse relacionamento muitos-para-muitos é representado pela entidade UserRole.
  • Cada Role pode ter múltiplos Securables associados, e cada Securable pode estar associado a múltiplos Roles. Esse relacionamento muitos-para-muitos é representado pela entidade RoleSecurable.
  • Cada Securable pode ter múltiplos Views 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  TextoIdentificador único da aplicação.
name TextoNome da aplicação.

Role

Grupo ou Função.

Coluna do Banco

Tipo

Função

id  TextoChave primária.
builtin  LógicoO registro só pode ser alterado em tempo de desenvolvimento.
membership_enabled  LógicoNovos membros podem ser inseridos no grupo (função).
name  TextoNome do grupo (função).
normalized_name  TextoCria uma cópia normalizada do nome do grupo (função), permitindo que o nome tenha com caracteres especiais.
applicationTextoChave estrangeira da tabela Application.

Securable

Permissionável.

Coluna do Banco

Tipo

Função

id  TextoChave primária.
nameTextoNome do permissionável.
applicationTextoChave estrangeira da tabela Application.

View

Aplica o controle de acesso aos métodos de requisição HTTP.

Coluna do Banco

Tipo

Função

id  TextoChave primária.
securable_id  TextoChave estrangeira da tabela Securable.
pattern  TextoPágina ou local com o controle de acesso.
getMethodAllowed  LógicoPermissão para o método get.
headMethodAllowed  LógicoPermissão para o método head.
putMethodAllowed  LógicoPermissão para o método put.
postMethodAllowed  LógicoPermissão para o método post.
patchMethodAllowed  LógicoPermissão para o método patch.
deleteMethodAllowed  LógicoPermissão para o método delete.
optionsMethodAllowed  LógicoPermissão para o método options.
traceMethodAllowed  LógicoPermissão para o método trace.
applicationTextoChave estrangeira da tabela Application.

Application User

Tabela de relacionamento entre Aplicação e Usuários.

Coluna do Banco

Tipo

Função

id  TextoChave primária.
applicationTextoChave estrangeira da tabela Application.
userTextoChave 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.

  • Sem rótulos