Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Criando um sistema de permissão
- ===============================
- Primeiro precisamos da tabela de usuários:
- usuarios
- id - INT AUTO_INCREMENT PRIMARY KEY
- nome - VARCHAR
- email - VARCHAR
- senha - VARCHAR
- ativo - INT (0 - Inativo / 1 - Ativo)
- nivel - (0 - usuário comum / 1 - Administrador / 2 - Desenvolvedor / 3 - Administrador e Desenvolvedor)
- Agora temos que mapear as páginas do sistema
- paginas
- id - PIRMARY KEY -- Código único que identifique a página (pode até ser o nome do arquivo ou um INT AUTO_INCREMENT)
- arquivo - VARCHAR -- Nome do arquivo
- nome - VARCHAR
- sistema - INT -- (0 - Não / 1 - Sim) é uma página do sistema como por exemplo uma página Erro 404 / Acesso Restrito / Etc...
- Agora a tabela de acesso:
- acesso_paginas
- usuario_id
- pagina_id
- consultar (0 - Não / 1 - Sim)
- incluir (0 - Não / 1 - Sim)
- editar (0 - Não / 1 - Sim)
- excluir (0 - Não / 1 - Sim)
- Utilize o campo `consultar`, para ver se o usuário tem acesso a essa página, e os demais campos você pode colocar nos botões de inclusão/exclusão e nos campos caso o usuário não possa editar. Se você quer que cada campo tenha um acesso diferênte, você terá que mapear todos os campos do seu sistema, algo que dá muito trabalho, mas poderia fazer assim:
- fields
- id - INT PRIMARY KEY
- nome - VARCHAR
- pagina_id
- E o acesso:
- acesso_fields
- field_id
- pagina_id
- usuario_id
- visivel (0 - Não / 1 - Sim)
- editavel (0 - Não / 1 - Sim)
- Utilize o campo `visivel` para exibir o campo no sistema e o campo editavel para habilitar ou desabilitar.
- Regra
- -----
- Sempre que um usuário acessar alguma página, você busca a página na tabela `acesso_paginas` e verifica se ele tem acesso a aquela página. Se o usuário tiver acesso, você verifica qual o tipo de acesso, e aplica as devidas regras de acordo com o tipo de acesso. Exemplo, se ele só pode consultar a página apenas exiba o necessário com todos os campos desabilitados.
- Se você for validar os campos, busque na tabela `acesso_fields` o `ID` do campo e verifique os tipos de acesso.
- Exemplo
- -------
- Acesso à página:
- $pageid = 36;
- $sql = "SELECT * FROM acesso_paginas WHERE usuario_id = {$_SESSION['user']['id']} AND pagina_id = {$pageid};"
- // Receba o resultado e verifique o tipo de acesso.
- if ($res['consultar'] == '0') {
- header("HTTP/1.1 401 Unauthorized");
- exit;
- }
- .
- .
- .
- if ($res['excluir'] == '1') echo '<button type="button" id="excluir" class="button">Excluir</button>';
- Acesso ao campo:
- $pageid = 36;
- $sql = "SELECT * FROM acesso_fields WHERE usuario_id = {$_SESSION['user']['id']} AND pagina_id = {$pageid};"
- // Receba os dados
- function FieldAccess($dados){
- // Faça uma função quer percorra o array recebido do baco e retorne os devidos acessos ao campo
- // Pode usar códigos do tipo
- // 0 - Sem acesso total (não exibe campo)
- // 1 - Acesso visual (apenas exibe o campo, mas não permite editar o valor)
- // 2 - Acesso total
- }
- .
- .
- .
- <?php
- $acesso = FieldAccess(348);
- if ($acesso > 0){
- ?>
- <input type="text" name="cpf" id="cpf" placeholder="Informe o CPF"<?=($acesso == '1' ? ' readonly' : '')?>>
- <?php
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement