Como funciona um controle de permissões?

Prezados, muito boa tarde!

Estou precisando implementar um controle de acesso para edição, exclusão e visualização de registros, porém não tenho idéia de como implementar, pois nunca trabalhei com isso.
Gostaria que me dessem ideia de como modelar o banco e implementar um controle desses.

Basicamente é um sistema de upload de arquivos.
Preciso implementar regras para tipos de usuários.
Usuário administrador terá permissão total: incluir, remover e visualizar, inclusive cadastrar e apagar outros usuários simples.
Usuário simples precisa de controle de acesso: alguns terão permissão para incluir, outros apenas para visualizar, etc.

Poderiam me dar umas ideias e me ajudar nessa missão?

Desde já, sou grato!

Faltou a linguagem?

Uma vez modelei um banco para isso, ficou algo assim:

  • Usuario (ex.: admin, userA, userB, etc.)
  • Perfil (administrador, gerente, visitante, etc.)
  • Acesso (Incluir, Remover, Visualizar, Alterar, etc) - ou mais específico (Incluir Tal Coisa, Remover Tal Coisa)
  • Usuario_Perfil (um usuário pode ter N perfis)
  • Usuario_Acesso (um usuário pode ter um acesso que não existe em seus perfis)

Bom, pela sua pergunta e pelas TAGS, foi o que entendi.

Abraços!

2 curtidas

Boa noite!

É em PHP…

Boa noite, Lucas!

Interessante essa abordagem… Mas no caso da validação no PHP não ficaria mais trabalhoso verificar por perfil e por acesso juntos?

Estou com uma dúvida: Não sei se é viável eu controlar o acesso escondendo elementos do html. A idéia seria aproveitar a página que lista os arquivos para fazer as operações incluir e remover também, escondendo esses links de acordo com o acesso do usuário.
É legal fazer isso ou pode ser inseguro?
Há forma melhor, reaproveitando a página?

vou te passar um projeto… é simples todo feito em bootstrap v4 e mysqli e nele você consegue observar todo fluxo de permissões…
segue zipado(só fazer o download)

uma dica, youtube é seu maior aliado.

1 curtida

Essa abordagem é levando em consideração que um perfil pode ter vários acessos. Tem acessos (permissões) que um admin tem que um usuário comum não tem.

Coloquei como “acesso”, mas é “permissão” que quero dizer

Valeu Thalles. Já baixei aqui e vou dar uma olhada.
Retorno aí quando ver.

Obrigado!

Estou pensando em mesclar a sua ideia. Criar vários perfis de usuários, um em cada área e aplicar os acessos nos perfis. Cada usuário terá um perfil.
Se necessários outros acessos, perfis diferentes serão criados. Não terei 02 tabelas auxiliares de acesso.

O que acha da ideia?

Acho muito boa. Atende.

Se o sistema for muito grande, apenas acho melhor deixar a possibilidade do usuário poder ter vários perfis. Quanto mais flexibilidade melhor (mesmo se não for usar).

1 curtida

Show de bola!

Aí Thalles, deu pra ter uma boa noção de como funciona o sistema de permissão com esse projeto seu. Bem simples, gostei muito.

Estou pensando em guardar na super global um array com os ids de todas as permissões que um perfil de usuário tem e ao invés de controlar diretamente pelo perfil, como vc fez, verificar no array de permissões, se aquela pertencente ao bloco de código php está dentro.

Show de bola cara. Muito obrigado!

1 curtida

Obrigado a todos vocês pela luz que me deram.
Grande abraço!

Lembre-se que não é adequado fazer com MYSQLI, tenta modificar tudo para PDO com mysql :wink:

Esse projeto serve de base para tantos outros projetos… por exemplo dá pra fazer um sistema de controle de funcionários, reservas de veículos, cadastro de clientes, vendas vish… é uma base infinita. Mas tenta recriar o projeto do zero… vendo como tudo se inicia… dica comece pelo “index.php” e por aí vai…

acompanha ai


acompanha esse canal, só vídeo projetos top de php

1 curtida

Beleza Thalles! É isso que fiz. Peguei pelo index e fui vendo pra onde iam suas rotas e o que faziam. É bem interessante e simples.
Ah… e já uso PDO no meu projeto…

Vou acompanhar esse canal que vc indicou.
Mais uma vez, agradeço a atenção parceiro!

1 curtida