/** * 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); }
/** * @param UmgtUser $user * * @return UmgtGroup[] */ private function getGroups(UmgtUser $user) { return $user->loadRelatedObjects('Group2User'); }