/**
  * This method return a singleton instance of __RoleManager instance
  *
  * @return __RoleManager a reference to the current __RoleManager instance
  */
 public static function &getInstance()
 {
     if (self::$_instance == null) {
         // Use "Lazy initialization"
         self::$_instance = new __RoleManager();
     }
     return self::$_instance;
 }
 public function &loadAnonymousUser()
 {
     $return_value = new __User();
     //If there is not need to authenticate the user, will set the admin role:
     if (__ContextManager::getInstance()->getContext('LION_ADMIN_AREA')->getPropertyContent('LION_ADMIN_AUTH_REQUIRED') == false) {
         $admin_role = __RoleManager::getInstance()->getRole('ADMIN');
         $return_value->addRole($admin_role);
     }
     $return_value->setCredentials(new __AnonymousCredentials());
     return $return_value;
 }
 /**
  * Get an array of roles corresponding to a given user
  * 
  * @return array
  */
 public function _loadRoles($dbh, $user_id)
 {
     $return_value = array();
     $statement = $dbh->prepare("SELECT * \n                                    FROM roles \n                                    WHERE user_id = ?");
     $statement->execute(array($user_id));
     $statement->setFetchMode(PDO::FETCH_ASSOC);
     $roles_info = $stmt->fetchAll();
     foreach ($roles_info as $role_info) {
         $role = __RoleManager::getInstance()->getRole($role_info['role']);
         $return_value[] = $role;
     }
     return $return_value;
 }
 /**
  * Get the user identity and returns a user corresponding
  * to the given identity.
  * 
  * Note that the returned user contains his
  * credentials in order to be used by the security
  * framework
  * 
  */
 public function &loadUser(__IUserIdentity $user_identity)
 {
     $user = null;
     if ($user_identity instanceof __UsernameIdentity) {
         //get the login string from the user identity:
         $login = $user_identity->getUsername();
         //check if the login correspond to any of our
         //valid logins:
         if (key_exists($login, $this->_user_and_passwords)) {
             //create a user instance and set the credentials:
             $user = new __User();
             $credentials = new __PasswordCredentials();
             $credentials->setPassword($this->_user_and_passwords[$login]);
             $user->setCredentials($credentials);
             //get the role identified as REGISTERED_USER:
             $role = __RoleManager::getInstance()->getRole('REGISTERED_USER');
             //assign the role to the user:
             $user->addRole($role);
         }
     }
     return $user;
 }