Ir para conteúdo

Arquivado

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

pinoc

Sistema de permissões

Recommended Posts

Boa pessoal.

 

Vim aqui pedir uma luz de vocês, to querendo criar um sistema de permissões para usuários, porem já me passo umas 30 formas de fazer isso so não sei qual seria a mais coreta.

 

Uma coisa que eu quero é que o sistema seja com checkbox da seguinte forma:

 

Pagina | Ver | Adicionar | Editar | Excluir

Pag1 [ ] [ ] [ ] [ ]

Pag2 [ ] [ ] [ ] [ ]

 

Porem não sei uma forma de receber os checkbox que não forão selecionados foi o php não pega eles (ja me derão a ideia de usar hidden so que vai ser muito checkbox e acho que o codigo vai ficar feio com tanto hidden junto)

 

Se alguem poder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
É complicado, tem diversas formas de se fazer essas verificações de permissão. Tudo vai depender de como o seu sistema foi estrurado.


Mas o básico é:


- Uma tabela para quais permissões existem, por exemplo: Visualizar, editar, excluir, etc


- Uma tabela para relacionar as permissões com os usuários. Por exemplo, usuario 5 (João) tem a permissão 2(Editar).


Espero ter ajudado um pouco.. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é essa parte de tabela eu ja até sei como fazer no meu caso.

Porem não consigu achar uma boa solução para os checkbox que preciso basicamente enviar pro banco o valor 1 se for selecionado e 0 se não for selecionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Penso em fazer alguma da seguinte forma so não sei como continuar.

 

Meu HTML

 

<form method="post">
    <ul>
    
<?php 
    $select = mysql_query("SELECT * FROM menu");
    while ($array = mysql_fetch_array($select)){
    	$nomePagina = $array["pagina"];
	$pagina = str_replace(" ", "_", $nomePagina);
    ?>
        <li>           
            <?php echo $nomePagina; ?>
            <label>ver</label>
            <input type="checkbox" name="ver[<?php echo $pagina ?>]" value="1">
            
            <label>adicionar</label>
            <input type="checkbox" name="adicionar[<?php echo $pagina ?>]" value="1">
            
            <label>editar</label>
            <input type="checkbox" name="editar[<?php echo $pagina ?>]" value="1">

            <label>excluir</label>
            <input type="checkbox" name="excluir[<?php echo $pagina ?>]" value="1">
            
            <input type="hidden" name="pagina" value="<?php echo $nomePagina ?>">
        </li>
	<?php 
    }
    ?>             
      
        <li><input type="submit" name="submit"></li>
    </ul>
</form>

Sei que sempre terei 4 checkbox, obviamente terei que receber sempre 4 valores sendo que se os 4 checkbox forem selecionados se não for preciso fazer o php deduzir que sera zero.

Porem como fazer isso como receber os valores e fazer setar o valor de 0 se ele não receber nada.

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você está errando um pouco na lógica nos nomes dos campos, tente da seguinte maneira.

 

<label>ver</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][ver]" value="1">
            
<label>adicionar</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][adicionar]" value="1">
            
<label>editar</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][editar]" value="1">

<label>excluir</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][excluir]" value="1">
            
<input type="hidden" name="pagina" value="<?php echo $nomePagina ?>">

 

 

Quando você der um submit, automaticamente, virá na variável $_POST, os checkboxes que foram escolhidos, segue um exemplo de como deve ficar a parte para pegar os valores correto:


<?php

// $_POST['pagina'][2]['ver'] = 1;
// $_POST['pagina'][2]['editar'] = 1;
// $_POST['pagina'][4]['ver'] = 1;


foreach ($_POST['pagina'] as $pagina_id => $pagina) {
  
  // Valores padrões para da o submit
  $default = array(
    'ver' => 0;
    'adicionar' => 0,
    'editar' => 0,
    'excluir' => 0,
  );

  foreach ($pagina as $permissao_nome => $permissao_valor) 
    $default[$permissao_nome] = $permissao_valor;
  }

  // INSERT OS VALORES DA VARIÁVEL DEFAULT

}


?>

 

 

Não testei a função, mas deve funciona muito, é um caminho para você começar.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro separe os elementos:

 

Grupos, Usuários e Permissões. São três tabelas diferentes.

 

Na tabela de Grupos você tem apenas o ID Primário e o nome do Grupo.

 

Na tabela de Usuários, você tem dentre tudo aquilo que vai precisar, uma coluna para relacionar com a tabela Grupos.

 

Na tabela Permissões você tem além do ID Primário, uma coluna para se relacionar com o ID do Grupo e uma para cada ação que os membros daquele Grupo poderá realizar. Esses valores serão simples, como zeros e uns.

 

Segundo, na tela de criação/edição de um Grupo você mostra um checkbox para cada coluna de ação (a do ID primário e estrangeiro não contam). Por padrão mostre tudo marcado, mas se estiver atualizando um grupo existente condicione o atributo checked com o valor armazenado.

 

Terceiro, no acesso antes de executar cada ação você busca o valor da coluna referente a ação condicionando a coluna que referencia o Grupo das Permissões com o ID do Grupo ao qual o usuário pertence. Essa informação normalmente vêm junto com os dados de sessão, durante a autenticação.

 

Para facilitar, crie formas rápidas de executar essas verificações. Se estiver trabalhando com Orientação a Objetos fica ainda melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem maneira mais simples 

Mais a página de permissões do amigo está correta mais em vez de números usa letras tipo.


<label></label>


<label>ver</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][ver]" value="v">
            
<label>adicionar</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][adicionar]" value="a">
            
<label>editar</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][editar]" value="e">

<label>excluir</label>
<input type="checkbox" name="pagina[<?php echo $pagina ?>][excluir]" value="d">
            
<input type="hidden" name="pagina" value="<?php echo $nomePagina ?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na tabela que irá gravar ficará assim.

Pagina:a,v,d,0 = adicionar, ver, deletar

Pagina2:v,0,0,0 = ver

Pagina03:a,v,e,d = adicionar, ver, editar, deletar

 

Mando já o modo de paginas e tabelas 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tabelas:

Permissões

Categoria de permissões.

Usuários.

Em permissões irá ter campo id

Categoria > usuarios campo id_categoria.

Em tabela usuários > id_categoria de permissões. 

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.