Ejemplo n.º 1
0
 public static function signIn($userData = array())
 {
     $autoSignInRequest = count($userData) === 0;
     $logEntry = 'Sign in|' . $_SERVER['REMOTE_ADDR'] . '|' . session_id();
     if ($autoSignInRequest) {
         if (self::autoSignInAvailable()) {
             $userData[self::COOKIE_USERNAME] = (string) $_COOKIE[self::COOKIE_USERNAME];
             $userData[self::COOKIE_PASSWORD] = hash(self::HASH_FUNCTION, session_id() . (string) $_COOKIE[self::COOKIE_PASSWORD]);
             $logEntry .= '|auto';
         } else {
             $userData[self::COOKIE_USERNAME] = '';
             $userData[self::COOKIE_PASSWORD] = '';
             $logEntry .= '|auto not available';
         }
     } else {
         $logEntry .= '|manual';
     }
     $username = (string) $userData[self::COOKIE_USERNAME];
     $password = (string) $userData[self::COOKIE_PASSWORD];
     $logEntry .= "|{$username}|{$password}";
     if ($username === '') {
         $ezUser = new ezUser_base();
         $ezUser->setResult(self::RESULT_NOUSER);
     } else {
         $ezUser = self::lookup($username);
         if ($ezUser->status() === self::STATUS_UNKNOWN) {
             $logEntry .= "|(user not found)";
             $ezUser->setResult($autoSignInRequest ? self::RESULT_FAILEDAUTOSIGNIN : self::RESULT_UNKNOWNUSER);
         } else {
             $logEntry .= '|' . $ezUser->id();
             $ezUser->authenticate($password);
             // Sets result itself
         }
     }
     self::setSessionObject($ezUser);
     self::logMessage($logEntry . '|' . $ezUser->result());
     return $ezUser;
 }