/**
  * Returns all roles the user is either assigned directly (User <-> Role) or
  * indirectly (User <-> Group <-> Role).
  *
  * @param UmgtUser $user
  *
  * @return UmgtRole[]
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 19.06.2015<br />
  */
 protected function getRoles(UmgtUser $user)
 {
     $roles = [];
     // map roles int associative array to ensure unique result set
     foreach ($user->loadRelatedObjects('Role2User') as $role) {
         $roles[$role->getObjectId()] = $role;
     }
     // add roles assigned via group to allow easy role/permission assignment
     foreach ($user->loadRelatedObjects('Group2User') as $group) {
         foreach ($group->loadRelatedObjects('Role2Group') as $groupRole) {
             if (!isset($roles[$groupRole->getObjectId()])) {
                 $roles[$groupRole->getObjectId()] = $groupRole;
             }
         }
     }
     return array_values($roles);
 }
 /**
  * Loads all roles and associated permissions of a given user. Filters duplicate entries.
  *
  * @param UmgtUser $user The current user.
  *
  * @return UmgtPermission[] The list of permissions associated to the given user.
  * @throws GenericORMapperException In case of any issues with loading permission.
  *
  * @author Christian Merz
  * @version
  * Version 0.1, 16.10.2015<br />
  */
 private function getPermissions(UmgtUser $user)
 {
     $RoleList = $user->loadRelatedObjects('Role2User');
     $permissionArray = array();
     foreach ($RoleList as $Role) {
         $PermissionList = $Role->loadRelatedObjects('Role2Permission');
         foreach ($PermissionList as $Permission) {
             if (!array_key_exists($Permission->getObjectId(), $permissionArray)) {
                 $permissionArray[$Permission->getObjectId()] = $Permission;
             }
         }
     }
     return array_merge($permissionArray);
 }
Example #3
0
 /**
  * @param UmgtUser $user
  *
  * @return UmgtGroup[]
  */
 private function getGroups(UmgtUser $user)
 {
     return $user->loadRelatedObjects('Group2User');
 }