User/Team/Channel

model-user-team-channel.svg

Permission

Landscape

model-permission.svg

Scheme 中定义了DefaultTeamAdminRole、DefaultTeamUserRole、DefaultTeamGuestRole 以及 DefaultChannelAdminRole、DefaultChannelUserRole、DefaultChannelGuestRole 等,分别保存 Roles 中的 Name。从这些内容来看,Scheme 定义了 Team、Channel 中用户在没有特定角色时的默认角色。
在 ChannelMembers 中,定义了 User 在 Channel 中的角色。根据默认角色和特定角色,最终定义了用户的角色。根据角色在 Roles 中可以获取对应权限。

Channel Permission

model-channel-permission.svg

根据 Session 的 UserId,获取本用户在所有 Channel 中的 Roles,以 map (key: ChannelId, value: Roles)形式返回,然后根据要操作的 Channel,对比 Role 的权限及需要的权限。