every user has one identity
+---------------+ +---------+ | o_bs_identity | | o_user | +---------------+ +---------+ | id | | user_id | 1 -- 1 | fk_user_id | +---------+ +---------------+
every identity is in one ore more security groups and every security group has one or more identities
+-----------------+ | o_bs_membership | +---------------+ +---------------+ +-----------------+ | o_bs_secgroup | | o_bs_identity | | id | +---------------+ +---------------+ | secgroup_id | n -- 1 | id | | id | 1 -- n | identity_id | +---------------+ | fk_user_id | +-----------------+ +---------------+
every group has one or more policies
every resource belongs to one ore more policies
+--------------+ | o_bs_policy | +----------------+ +--------------+ +--------------+ | o_olatresource | |o_bs_secgroup | | id | +----------------+ +--------------+ | oresource_id | n --1 | resource_id | | id | 1 -- n | group_id | | resname | +--------------+ | permission | | resid | +--------------+ +----------------+
The policy shows you which group has what kind of permission for which resource-type (resname). Permissions are e.g: "access", "read", "hasRole", etc. It depends on the particular business case how they are to interpret. Resources can be everything, e.g. BaseSecurityModules, FileResources, Controllers, etc.
Table 7.2. Access Rights Example 1
GroupKey | Policy | Resource-Key | Resource-Type |
---|---|---|---|
2 | hasRole | BaseSecurityModule:RAuthor |
Every identity which is in the security-group id=2 is author.
Table 7.3. Access Rights Example 2
GroupKey | Policy | Resource-Key | Resource-Type |
---|---|---|---|
26 | access | 26 | SecGroup |
26 | hasRole | BaseSecurityModule:RAuthor | |
26 | admin | 71252385216138 | CourseModule |
If a user's identity is in the secgroup id=26 he has admin permissions to the resource '71252385216138'. He is also OLAT-author as long his identity belongs to the secgroup id=26. Additionally he might add and remove other users from the secgroup id=26.