-
Notifications
You must be signed in to change notification settings - Fork 11
Description
The UnityPerms class will be defined in resources/lib/UnityPerms.php. It will be responsible for determining whether a user is authorized to perform an action on another.
The class should have a constructor that accepts the $USER and $SQL var.
You will then create a method for each permission, which returns true if the user $uid has permission to perform the action on $operated_on in the group$group. For example, the following is sequential for the unity.approve_user permission:
checkApproveUser($uid, $operated_on, $group)- Return false if
$uidis not in$group - Get the assigned role that
$uidhas in$group - Return true if the assigned role has the permission
unity.adminorunity.admin_no_grant - Return false if the assigned role doesn't have the
unity.approve_userpermission - Return false if
$operated_on's assigned role's priority is higher than or equal to$uid's assigned role priority - Otherwise return true
- Return false if
You will then create similar methods for:
unity.approve_user- Allows user to approve a user within a groupunity.deny_user- Allows user to deny a user within a groupunity.grant_role- Allows user to grant any role with a lower priority than theirsunity.revoke_role- Allows user to revoke any role with a lower priority than theirs
These permission exist but do not need methods like above since they are blanket permissions:
unity.admin_no_grant- Allows for every permission within a group, but you cannot make others adminsunity.admin- Allows for every permission within a group, including assigning this permission
This issue will involve creating helper methods in UnitySQL for the queries, as well as creating the UnityPerms class, which is new. It could be helpful to include helper private methods in UnityPerms for getting the assigned role of a user within a group, or any other repeated code that happens in the checkXYZ methods defined above. Also note that the assign role and revoke role check methods will require an additional parameter $role to check whether the role they are trying to assign is able to be assigned.