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; }