Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CleitonGarcia

Árvore de privilégios/permissões (LDAP/AD)

Recommended Posts

Olá colegas,

 

Estou desenvolvendo uma aplicação, na qual utiliza o protocolo LDAP para se autenticar ao Active Directory, posso privar os usuários a um grupo ou não. Até aqui tudo bem.

 

O problema vem na árvore de privilégios que pretendo fazer. É complexo e trabalhoso.

 

A aplicação trabalhará com muitas regras de negócio, portando teremos de ter um sistema para usuários central, onde o administrador poderá atribuir ou retirar privilégios de usuários da aplicação, como por exemplo, usr1 pode ter um botão "Imprimir Fatura" na página inicial, mas ele não tem acesso a página de faturas. usr1, pode apenas ler um input1. Já usr2, além de imprimir fatura, tem acesso a página de faturas e pode editar o input1.

 

E isso afeta diretamente o algoritmo da aplicação e a forma como ela se relaciona.

 

Portanto, não podemos pensar de maneira simples, devo criar uma árvore, literalmente de relacionamento de permissões para sistemas diferentes.

 

Alguém pode ajudar?

 

 

Caramba. Ninguém?! Putz!

 

Nenhuma ideiazinha?... Decepcionado :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recentemente produzi um pequeno sistema de controle de estoque e, para os privilégios crie na tabela "usuários" um campo chamado nível. Como só tinha 2 tipos, usei "admin" e "comum". A lógica utilizei ao usuário logar-se. Estabelecia uma sessão,verificava se era admin ou comum. Se a a sessão fosse,por exemplo "admin" exibia os itens do menu que era relacionado aos administradores (apagar, criar usuários) senão só exibia as funções pertinentes ao usuário comum (visualizar etc)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Marcos, essa é uma maneira simples de um sistema de permissões. Minha ideia inicial é ter um gerenciador central. Pois, eu tenho vários sistemas, e as permissões estarão concentradas em base de dados diferente do sistema. Ele apenas vai usar o webservice desse outro sistema, que gerenciará, além dos usuários, as permissões deles. E não somente por grupo, mas também por privilégios para cada perfil.

 

Ou seja, um usuário, além de estar em um grupo que determina determinados acessos, ele ainda tem privilégios que os demais não tem.

 

Então, não é algo sequencial, é como uma árvore. Com vários meios de acesso! Tem que pensar de maneira complexa... Tenho vários sistemas, vários perfis de usuários, vários grupos para adequar aos usuários, vários componentes de uma página.

 

Cada botão, cada link, cada input do sistema, será cadastrado nesse usuário central.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além de Level na table User,

 

crie outras duas tables, seta as permissões para cada usuario.

 

group-level

-- level_id int() auto increment

 

attributes-group-level

-- level_id int()

-- name

-- permission

 

user

-- level_id int()

 

 

Acho que dessa forma você controla o que quiser. :coolio:

Compartilhar este post


Link para o post
Compartilhar em outros sites

É algo bem chato de se entender mesmo. Além de ser algo bem específico. É que tenho diversos sistemas, todos eles utilizaram um webservice chamado UserCentral. Aí na hora de logar, ele vai acessar esse WS, pegar o email digitado e verificar os privilégios na base de dados. E assim exibir o sistema de acordo com as permissões do perfil dele para aquele sistema.

 

Todos elementos da página serão cadastrados nesse sistema, e se o administrador permitir, ele atribui esses elementos ao perfil do usuário.

 

Vejamos a seguinte situação: eu tenho um banco armazenando as informações de cada componente de cada página. Além disso, eu posso criar grupos de privilégios e atribuir usuários à eles, além disso, posso dar permissões exclusivas à usuários específicos.

 

Suponhamos que o usuário X tem um menu chamado "Relatórios". E ele também tem, na página Configurações um link rápido à relatórios. Mas agora, pelo outro lado da moeda, temos outro usuário, que tem acesso a página de configurações, porém não à página de relatórios. Então esse determinado link não deve ser exibido nem no menu, e nem na página de configurações.

 

Se trabalharmos com cálculos então, esse tema se extenderá por muito tempo. É um total controle da regra de negócio e fluxo da aplicação através de um webservice e permissões atribuídas a usuários, nesse tempo, encontraremos muito "e se", "e se", mas "e se"... Eu gostaria de ideias de uma estrutura em árvore de privilégios. O primeiro ponto, seria padronização dos nomes de botões.

Afinal, temos de ter coerência na aplicação e no banco de dados, e são diversos sistemas, eles (programadores) não podem dar nomes de permissões como quiserem, ou nome aos elementos como quiserem.

 

Agradeço a colaboração dos colegas acima! Dicas, dicas, dicas, alguém tem sugestões ou dicas? Bora!!! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

CleitonGarcia, acredito que meu problema seja semelhante.

 

Hoje, o sistema que criei possui várias páginas, os privilégios, da maneira que eu havia criado, não suportam todos os critérios, vou ter de editar tudo o que havia feito. Ainda não resolvi completamente o problema, penso que passamos nos ajudar...

 

Claro, aceitando qualquer ajuda. (Por isso não enviei MP)

 

Pensei em trabalhar da seguinte forma:

  1. Uma tabela para grupos, controlando os usuários de cada grupo;
  2. Uma tabela para funcionalidades, controlando as funcionalidades existentes;
  3. Uma tabela de permissões, atribuindo um grupo a uma funcionalidade e seus respectivos privilégios;
  4. Uma tabela para processos, atribuindo cada processo a uma funcionalidade.

Agora os problemas que encontrei:

  1. Não há como um usuário acessar determinadas funcionalidades sem um grupo;
  2. Como controlar as páginas do processo?
  3. Para cada nova funcionalidade, eu deveria criar um formulário específico para ela, com os diferentes privilégios.

Espero que já tenha resolvido seu problema e possa me ajudar, hehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não resolvemos, deixamos um pouco parado. O problema disso é um usuário querer ter permissões que somente outro usuário tem ou permissões de vários grupos por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza, valeu pela sugestão!

 

O problema agora pra mim é que já estou em outro projeto, esse foi deixado de lado por enquanto por sua complexidade. Imagina, você definir um esquema de permissões que abrangerá novos sistemas além dos já existentes que são dezenas?!

 

Agora estou criando um WebService.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.