/** * Get a user that has a given login. * * @access public * @author Jerome Bogaerts, <*****@*****.**> * @param string login the user login is the unique identifier to retrieve him. * @param core_kernel_classes_Class A specific class to search the user. * @return core_kernel_classes_Resource */ public function getOneUser($login, core_kernel_classes_Class $class = null) { $returnValue = null; if (empty($login)) { throw new common_exception_InvalidArgumentType('Missing login for ' . __FUNCTION__); } $class = !empty($class) ? $class : $this->getRootClass(); $user = $this->generisUserService->getOneUser($login, $class); if (!empty($user)) { $userRolesProperty = new core_kernel_classes_Property(PROPERTY_USER_ROLES); $userRoles = $user->getPropertyValuesCollection($userRolesProperty); $allowedRoles = $this->getAllowedRoles(); if ($this->generisUserService->userHasRoles($user, $allowedRoles)) { $returnValue = $user; } else { common_Logger::i('User found for login \'' . $login . '\' but does not have matchign roles'); } } else { common_Logger::i('No user found for login \'' . $login . '\''); } return $returnValue; }
public function testGetUserRoles() { $prefix = LOCAL_NAMESPACE . '#'; $subRole2 = new core_kernel_classes_Resource($prefix . 'subRole2'); if ($this->service->loginExists('user')) { $this->service->getOneUser('user')->delete(); } $user = $this->service->addUser('user', 'password', $subRole2); $userRoles = $this->service->getUserRoles($user); $this->assertEquals(count($userRoles), 2); $this->assertTrue(array_key_exists($prefix . 'subRole2', $userRoles)); $this->assertTrue(array_key_exists($prefix . 'baseRole', $userRoles)); $user->delete(); $subRole11 = new core_kernel_classes_Resource($prefix . 'subRole11'); $user = $this->service->addUser('user', 'password', $subRole11); $userRoles = $this->service->getUserRoles($user); $this->assertEquals(count($userRoles), 3); $this->assertTrue(array_key_exists($prefix . 'subRole11', $userRoles)); $this->assertTrue(array_key_exists($prefix . 'subRole1', $userRoles)); $this->assertTrue(array_key_exists($prefix . 'baseRole', $userRoles)); $user->delete(); }