Permissions system

0

I have a user registry and a user table field where the permissions to edit files (eg 1-edit, 2-delete) will be stored and stored in MySQL.

Someone could help because I do not know how I could do this control with PHP.

    
asked by anonymous 01.09.2015 / 05:15

1 answer

2

I suggest a simpler, faster model to pursue the goal. Suppose we have a table like this:

CREATE TABLE usuarios (
   id int unsigned not null AUTO_INCREMENT, /* numero de usuário */
   username varchar(30), /* nome de usuário */
   ...
   perm tinyint, /* as permissões */
   PRIMARY KEY (id));

The code to use this template will be more or less this (it does not have authorization process and session initiation):

<?php

// podemos definir as permissoes como constantes
define('READ', 0);
define('WRITE', 1);
define('DELETE', 2);

// usando comandos preparados, a inserção de dados será mais segura
$db = new mysqli("host","login","password","database");
$s = $db->prepare("SELECT * FROM usuarios where username=?");
$s->bind_param('s', $_POST['usuario']);
$s->execute();
$s->bind_result($id,$usuario,$perm);
$s->fetch();

// assim podemos verificar simplesmente se o usuario tem a permissão para preceder com a operação
if(pode_editar($perm))
        echo "USUARIO $usuario PODE EDITAR";

// as funções para verificação de permissões
// cada função vai retornar true ou false dependente da variável dada
function pode_ler($perm) {
return ($perm >= READ ? true : false);
}
function pode_editar($perm) {
return ($perm <= WRITE ? true : false);
}
function pode_eliminar($perm) {
return ($perm == DELETE && $perm <= DELETE ? true : false);
}
    
01.09.2015 / 11:54