I recommend you to create a table in your data bank for example: tbl_permissions
Table tbl_users
+----------------------------+
| ID | USERNAME | PASSWORD |
+----------------------------+
| 1 | USER01 | PASSWORD |
| 2 | USER02 | PASSWORD |
| 3 | USER03 | PASSWORD |
+----------------------------+
Table tbl_permissions: contains a column user_id, and the other columns as in the example below are the areas or methods that the user may or may not have access to, and 0 is not permitted and 1 you have permission.
+-----------------------------------------+
| ID | USER_ID | CREATE | EDIT | DELETE |
+-----------------------------------------+
| 1 | 1 | 1 | 0 | 0 |
| 1 | 2 | 1 | 1 | 1 |
| 1 | 3 | 0 | 0 | 1 |
+-----------------------------------------+
As I am currently without access to a database, I ran a test on https://ideone.com/WFDIB8
<?php
$Users = [
1 => [
'id' => 1,
'nome' => 'USER01',
'permissoes' => [
'create' => 1,
'edit' => 0,
'delete' => 0
]
],
2 => [
'id' => 2,
'nome' => 'USER02',
'permissoes' => [
'create' => 1,
'edit' => 1,
'delete' => 0
]
],
3 => [
'id' => 3,
'nome' => 'USER03',
'permissoes' => [
'create' => 1,
'edit' => 1,
'delete' => 1
]
],
4 => [
'id' => 4,
'nome' => 'USER04',
'permissoes' => [
'create' => 0,
'edit' => 0,
'delete' => 1
]
]
];
Class usuarios {
/**
* Função para verificar se o usuário logado
* tem permissão para acessar uma página / método etc..
*/
function verificarPermissao($UserID, $FuncName) {
global $Users;
if($Users[$UserID]["permissoes"][$FuncName] === 1) {
$this->$FuncName();
} else {
echo "Usuário não tem permissão para executar: {$FuncName}\n";
}
}
function create() {
echo "Usuário tem permissão para criar\n";
}
function edit() {
echo "Usuário tem permissão para editar\n";
}
function delete() {
echo "Usuário tem permissão para deletar\n";
}
}
$user1 = new usuarios();
$user1->verificarPermissao(1, 'edit');
$user1->verificarPermissao(1, 'create');
$user1->verificarPermissao(1, 'delete');
echo "\n\n";
$user2 = new usuarios();
$user2->verificarPermissao(2, 'edit');
$user2->verificarPermissao(2, 'create');
$user2->verificarPermissao(2, 'delete');
echo "\n\n";
$user3 = new usuarios();
$user3->verificarPermissao(3, 'edit');
$user3->verificarPermissao(3, 'create');
$user3->verificarPermissao(3, 'delete');
echo "\n\n";
$user4 = new usuarios();
$user4->verificarPermissao(4, 'edit');
$user4->verificarPermissao(4, 'create');
$user4->verificarPermissao(4, 'delete');