在我的应用程序中,一个组织有多个事件,一个用户可以在不同的事件中扮演多个角色,直到现在一切都很好我可以做一个枢轴关系顺便说一句
user_id, role_id, event_id
,但问题是我有一些角色是专注于组织例如:Owner, Admin
并且它们与事件无关。因此,以前的数据库结构无法解决我的问题,因为它仅限于在事件中具有角色的用户。
我已经尝试过建立多态关系,这基本上意味着用户可以在事件或组织中扮演这样的角色:user_id, role_id, entity_id, entity_type
,但这需要很多工作,我不知道这是否是理想的解决方案。
我找到的一个解决方案是使用支持团队的 spatie 权限包。 所以基本上一个用户可以在一个事件中扮演一个角色,一个用户也可以在一个事件中拥有权限,所以我想我使用组织的范围而不是事件的范围,然后授予用户访问特定事件的权限。例如:我邀请一个用户到
organization
成为一个Admin
,然后授予他管理特定事件或多个事件的权利(许可)。
这似乎可行,但问题是我仅限于为该组织中的用户分配一个角色,这意味着在所有事件中,因为现在数据库关系是:
user_id, role_id, organization_id
.
有什么办法可以为用户在不同的事件中分配不同的角色,以及为某些用户在事件之外分配一些角色的能力吗?
如果这对你有用,你会尝试跟随吗?
创建一个表格
user_event_roles
它的结构会像
user_event_roles
id | user_id | event_id | role_id | created_at | updated_at | updated_at |
--------------------------------------------------------------------------
您可以在
user_id
中存储用户的ID及其事件的IDevent_id
(用户可以访问该事件),并存储role_id
,即您要分配给用户的角色。
如果此方法不起作用,请分享您的反馈,以便我们找到其他解决方案。