예제 #1
0
 /**
  * Returns the currently authenticated user, or null if a user has not been authenticated.
  *
  * @return IAuthenticatable || null
  */
 protected function GetCurrentUser()
 {
     if (!$this->_cu) {
         $this->Phreezer->Observe("Loading CurrentUser from Session");
         $this->_cu = Authenticator::GetCurrentUser($this->GUID);
         if ($this->_cu) {
             if (get_class($this->_cu) == "__PHP_Incomplete_Class") {
                 // this happens if the class used for authentication was not included before the session was started
                 $tmp = print_r($this->_cu, 1);
                 $parts1 = explode("__PHP_Incomplete_Class_Name] => ", $tmp);
                 $parts2 = explode("[", $parts1[1]);
                 $name = trim($parts2[0]);
                 Authenticator::ClearAuthentication($this->GUID);
                 throw new Exception("The class definition used for authentication '{$name}' must be defined (included) before the session is started, for example in _config.php.");
             } else {
                 $this->_cu->Refresh($this->Phreezer);
             }
         }
     } else {
         $this->Phreezer->Observe("Using previously loaded CurrentUser");
     }
     return $this->_cu;
 }