Jump to content

Permissions Table


ejaboneta

Recommended Posts

You could create something like:

 

acl (user_id, role_id, permission, rule)

 

Or you could create something like:

 

user (.., group_id, .., permission, ..)

group (.., permission, ..)

 

where permission is an integer-value and acts as a bit-map where each bit represents an allowed/disallowed rule, easy and effective if you only have <= 32 permissions (bigint gives you 64)

 

This has the advantage of being able to give individual permissions, select it like:

 

SELECT g.permission | u.permission AS permissions, .. FROM user u JOIN group g ON u.group_id = g.id WHERE ..

 

Use it in your application like:

 

if ($row['permissions'] & SOME_PERMISSION)

 

I just wrote this out of the top of my head and am actually uncertain their is a perfect conversion between MySQL int and PHP int altough it should work (for the int-part). A bigint will result in a float and possibly in a loss of data.

Link to comment
https://forums.phpfreaks.com/topic/200609-permissions-table/#findComment-1052837
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.