我正在寻找有关用户权限的数据库结构的正确解决方案。
表格:
users
companies
(相关列:id
)projects
(相关列:id
,company_id
)jobs
(相关列:id
,company_id
,project_id
)我要完成的方案是将特定的用户和/或用户分配给:
我考虑一个单独的permissions
表,我在其中插入对相关作业的权限,并使用jobs
表中的相关列来向上扩展权限。换句话说,如果用户拥有特定工作的权限,那么它也拥有父项目和母公司的权限。
答案 0 :(得分:0)
以下是permissions
的建议表结构:
USER_ID OBJ_TYPE OBJ_ID PERMISSION
JDOE COMPANY 1 1-READONLY
JDOE COMPANY 2 2-READWRITE
JDOE PROJECT 1 2-READWRITE
然后,用于检查用户访问权限的代码可能类似于:
SELECT MAX(permission) FROM permissions
WHERE user_id = :USERID
AND ( (obj_type = 'JOB' and obj_id = :JOBID)
OR (obj_type = 'PROJECT' and obj_id = :PROJECTID)
OR (obj_type = 'COMPANY' and obj_id = :COMPANYID))