在 laravel 应用程序中,我有users
,roles
和permissions
. 角色附加到用户,权限附加到角色。
用户:
id | name | email
______________________
1 | saba | saba@gmail.com
2 | nika | nika@gmail.com
3 | gio | gio@gmail.com
角色:
id | name
______________________
1 | Admin
2 | Client
3 | Service_provider
权限:
id | name
______________________
1 | add_admin
2 | delete_admin
3 | approve_order
4 | delete_order
用户角色:
id | user_id | role_id
______________________
1 | 1 | 1
2 | 2 | 2
角色权限:
id | role_id | permission_id
____________________________
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
在这个例子user
中id
1 , is Admin
and he can add_admin
, delete_admin
,approve_order
但我需要不同的管理员拥有不同的权限。在这个结构中,如果我将admin
角色附加到user
2 id
,他的权限将user
与id
1相同。
我需要不同的管理员拥有不同的权限,不同的客户拥有不同的权限。
有一个小场景:
想象有两个用户A和B,他们想注册为客户,所以当他们注册时,我会将客户角色附加到他们身上。他们具有相同的权限,但如果用户A将上传他的文档,我需要将新权限附加给用户A,而不是用户B。
我的解决方案是创建一个新表,在其中将权限附加给用户
用户权限:
Id | user_id | permission_id
____________________________
1 | 1 | 4
所以用户的所有权限将是他角色的权限+上面我描述的表中的权限
我需要你们帮助我决定这个解决方案是好是坏,或者还有其他更好的方法吗?(这类问题的最佳实践是什么?)