Hi,
Ik ben bezig met het maken van mijn CMS systeem, en wil daarbij een RBAC rechten systeem gebruiken. Daarvoor heb ik momenteel de volgende tabellen;
Nu is het probleem, dat als ik met die tabel een recht van een user wil controleren, moet ik na het vaststellen van de user kijken of hij bepaalde rechten heeft, bijv;
Nadeel van deze structuur is dat je bij het controleren van bepaalde rechten van te voren al MOET weten welke functies er zijn binnen de applicatie, en welke rechten, dus valt een heel groot deel van de flexibiliteit van het systeem weg, want je kunt dan niet later zeggen van "ik maak er nog een rol `translator` bij, want dan zou je ook de broncode weet aan moeten passen. Mijn vraag is dan ook, kan dit via RBAC ook nog op een andere manier, waarbij deze flexibiliteit er wel is?
Ik heb nu een aantal topics en artikelen gelezen op verschillende site's, maar hier kom ik niet uit.
MartijnG
Ik ben bezig met het maken van mijn CMS systeem, en wil daarbij een RBAC rechten systeem gebruiken. Daarvoor heb ik momenteel de volgende tabellen;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| ## Users
CREATE TABLE users
(
u_id INT (7) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
u_name VARCHAR(255) NOT NULL default '',
u_username VARCHAR(255) NOT NULL default '',
u_password VARCHAR(32) NOT NULL default '',
u_email VARCHAR(255) NOT NULL default '',
u_active ENUM('Y', 'N')
.....
.....
) TYPE=MyISAM;
## Roles
CREATE TABLE roles
(
r_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
r_name VARCHAR(255) NOT NULL default ''
) TYPE=MyISAM;
## Permissions
CREATE TABLE permissions
(
p_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
p_name VARCHAR(255) NOT NULL default ''
) TYPE=MyISAM;
## UserRole
CREATE TABLE user_role
(
u_id INT(7) UNSIGNED default '0',
r_id INT(6) UNSIGNED default '0'
) TYPE=MyISAM;
## RolePermission
CREATE TABLE role_permission
(
r_id INT(6) UNSIGNED default '0',
p_id INT(6) UNSIGNED default '0'
) TYPE=MyISAM; |
Nu is het probleem, dat als ik met die tabel een recht van een user wil controleren, moet ik na het vaststellen van de user kijken of hij bepaalde rechten heeft, bijv;
code:
1
2
3
4
| if ( $user->hasPermission ('editArticle') )
{
// Edit article
} |
Nadeel van deze structuur is dat je bij het controleren van bepaalde rechten van te voren al MOET weten welke functies er zijn binnen de applicatie, en welke rechten, dus valt een heel groot deel van de flexibiliteit van het systeem weg, want je kunt dan niet later zeggen van "ik maak er nog een rol `translator` bij, want dan zou je ook de broncode weet aan moeten passen. Mijn vraag is dan ook, kan dit via RBAC ook nog op een andere manier, waarbij deze flexibiliteit er wel is?
Ik heb nu een aantal topics en artikelen gelezen op verschillende site's, maar hier kom ik niet uit.
MartijnG