Gerenciamento de Permissões via PHP

Enviada por Diego R. Mengarda 
Diego R. Mengarda
Gerenciamento de Permissões via PHP
09 de February de 2012 às 10:13AM
Eai galera, gostaria de saber qual método é utilizado para criar um sistema com permissoes de acesso a diferentes páginas em 1 sistema.

Tenho 4 páginas, Empresa, USuários, Eventos, Notícias

Tenho 3 usuários, Administrador, Carlos, Fernando

Gostaria que por exemplo.:

Administrador tivesse acesso a todas páginas.
Carlos tivesse acesso a Empresa e Eventos.
Fernando tivesse acesso a Eventos.

Como poderia fazer esse controle de permissões se tivesse que adicionar mais páginas e usuários, nunca achei nada parecido na internet explicando como fazer isso, por isso estou precisando das idéias de vocês.

Fico no aguardo.

Obrigado.
Jayme A. C. Gimenez
Re: Gerenciamento de Permissões via PHP
09 de February de 2012 às 10:38AM
O que eu faço é o gerenciamento pelo status dos usuários. No bd, uma tabela assessória cadastra todos os status possívies (administrador, operador senior, etc, etc. Quantos status serão possíveis vai depender de palnejamento). E quando um novo usuário é cadastrado na tabela que guarda os operadores do sistema, um status é atribuído a esse novo usuário.

Nos scripts PHP é que controlo o acesso de cada status às páginas (ou mesmo a detalhes das páginas).

Controlar o acesso a toda a página é fácil: vc faz um script padrão para isso, que vai usar o status do operador, gravado na session quando ele fizer login. E esse script padrão vai ser sempre a primeira coisa (ou quase a primeira, junto com outros controles de segurança) da página. Em essência, é um if e else: se aquele usuário tem status para acessar a página, ela abre. Se não tem, no mínimo, primeiro o script da página é interrompido; segundo, a session é destruída de todas as formas possíveis; ato contínuo, ele é levado de volta para o index. Em alguns casos, se isso se repete, esse usuário, que parece estar tentando hackear o sistema, é bloqueado, no bd, e vai precisar se explicar pessoalmente :-).
Diego R. Mengarda
Re: Gerenciamento de Permissões via PHP
09 de February de 2012 às 11:07AM
Hehe, entendi Jayme, mas a minha idéia era não ter muitas classes de usuário.
Seria por ex.:
Administrador, Vendas, Administrativo, Financeiro, Técnico.

Só que eu queria poder editar as permissões diferentes, liberar algumas coisas pra uns, limitar para outros, gostaria que fosse mais dinâmico esse sistema.

Não teria algum outro modo?

Pensei em cada vez que se cadastrar um usuário, cria um conjunto de registros no banco em 1 tabela separada +- assim:

Tabela - permissoes

idPermissao | idUser | pagina | acesso

ao cadastrar o usuário eu já cadastro todas a páginas sem acesso, ai entro no sistema e libero o acesso alterando esses registros para 0 (sem acesso) ou 1(com acesso),

para não ficar muito pesado, penso em carregar essas informações em 1 array quando o usuário logar no sistema a primeira vez,

o que você acha?
Jayme A. C. Gimenez
Re: Gerenciamento de Permissões via PHP
09 de February de 2012 às 11:26AM
Acho sensacional a ideia!

Mas estou pensando se uma baita estrutura dessas seria, mesmo, necessária para o que vc quer.

Supondo os status que vc sugere: eu crio uma página que será acessível somente a administrador e financeiro.

Vamos supor que eu sequer fizesse um include, ou uma classe para gerenciar acessos. Eu simplesmente escreveria um if else dando acesso somente a administrador e financeiro. E nunca mais me preocuparia com isso.

Para que um usuário tivesse acesso a essa página, ele teria que ser "promovido" a administrador ou financeiro, em seu status no bd. Para fazer esse tipo de promoção, aí sim, estou certo de que vale a pena fazer scripts que facilitem a vida de quem vai cuidar de "promover" e "rebaixar" os status dos usuários.
Diego R. Mengarda
Re: Gerenciamento de Permissões via PHP
09 de February de 2012 às 11:31AM
Sim, essa é a minha preocupação, ter que dar acesso a uma página diferente sem dar poderes administrativos a aquela pessoa, pq o administrador teria alguns poderes super sayajins hehe.

Vou por em prática essa minha idéia, posto aqui se tiver algum problema ou se funcionar realmente como eu quero ;)

Abraço, vlw pelo apoio.
Victor Freidinger
Re: Gerenciamento de Permissões via PHP
09 de February de 2012 às 01:49PM
Diego,

Eu gosto da idéia de se criar, separadamente, uma tela de privilégios.
Nessa tela você amarra quais as telas que tal privilégio terá acesso(até níveis, para ter financeiro 1 que só pode ver até um valor, 2 até outros, 3 de aprovação, etc).

E atribuir esse tipo de privilégio num cadastro de usuário.

Claro que isso daria um pouco mais de trabalho, mas, acho que talvez resolveria melhor e possibilitaria de você ter diferentes tipos dentro do mesmo.

(Essa idéia precisei utilizar quando haviam 2 pessoas para financeiro, uma de Contas a Pagar e outra de Contas a Receber e que uma não podia colocar o trabalho nos olhos da outra).

Espero ter dado uma visão da experiência que tive.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.