1
resposta

Restringir acesso a página específica.

Olá Pessoal, estou criando usuários que possuem determinados privilégios no sistema e algumas páginas ficam ocultas para usuários específicos. A forma com que codifiquei este bloqueio, funciona, porém não sei se é a maneira mais correta, por isso gostaria de pedir a opinião dos colegas.

A codificação esta mais ou menos assim:

Minhas páginas são chamadas a partir do momento que a classe controladora é informada juntamente com o nome do método, capturo estas informações através da URL, exemplo: sistemateste.com/NomeDoController/nomeDoMetodo, assim a função chama a view requisitada. Para que o bloqueio a página acontecesse, na tabela de usuários do banco de dados, acrescentei uma coluna com o nível de acesso, até o momento, como os menus também possuem esta coluna, foi relativamente fácil oculta-los, pois só chamei os menus que possuíam o nível de acesso compatível com o do usuário. O menu estava oculto, porém o acesso a página, ainda era possível direto pela URL, para solucionar o problema, passei a capturar o nome do controlador e da função requisitada pelo usuário, assim realizo um select na tabela de menus, afim de localizar o menu que possui o link informado NomeDoController/nomeDaFuncao, localizado, acessei o nível de acesso do mesmo e comparei com a do usuário logado, caso não compatível, ele é redirecionado para outra página. Resumindo, foi através dos menus cadastrados que consegui descobrir se a página poderia ou não ser acessada.

Gostaria da opinião dos colegas com relação a esta codificação, será que o padrão é aceitável? Existe uma outra maneira mais adequada de realizar este procedimento?

1 resposta

Oi Mario,

Bom, se for com PHP puro, sem a utilização de frameworks, a sua solução está ok. Não tem um jeito único.

O ideal nesses casos é avaliar se a solução implementada é simples de dar manutenção.

Exemplo: se no futuro surgirem novos níveis de acesso ou novos menus, é fácil de atualizar o código? Ou vai ter que mexer em praticamente todas as páginas e lógicas?

Se for simples, a solução está valendo :)

Bons estudos!