/**
  * 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;
 }
示例#2
0
 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();
 }