/** * Extracts access token from HTTP request data. * * @param \WebRequest $request the HTTP request data as an object * @return String access token or null */ public static function getAccessToken(\WebRequest $request) { // A cookie takes precedence over an HTTP header. $token = $request->getCookie(self::ACCESS_TOKEN_COOKIE_NAME, ''); // No access token in the cookie, try the HTTP header. if (!$token) { $header = $request->getHeader('AUTHORIZATION'); $matches = []; preg_match('/^Bearer\\s*(\\S*)$/', $header, $matches); if (!empty($matches[1])) { $token = $matches[1]; } } // Normalize the value so the method returns a non-empty string or null. if (empty($token)) { return null; } return $token; }
/** * Get a cookie. Contains an auth-specific hack. * @param \WebRequest $request * @param string $key * @param string $prefix * @param mixed $default * @return mixed */ protected function getCookie($request, $key, $prefix, $default = null) { $value = $request->getCookie($key, $prefix, $default); if ($value === 'deleted') { // PHP uses this value when deleting cookies. A legitimate cookie will never have // this value (usernames start with uppercase, token is longer, other auth cookies // are booleans or integers). Seeing this means that in a previous request we told the // client to delete the cookie, but it has poor cookie handling. Pretend the cookie is // not there to avoid invalidating the session. return null; } return $value; }
public static function getActiveLanguage() { global $cAvailableLanguages; // look in the order of most volatile first - if we find something, use it. // request cache if (self::$requestLanguage != "") { return self::$requestLanguage; } // get parameter $getParam = WebRequest::get("lang"); if ($getParam != false) { // check value is in list of allowed values if (array_key_exists($getParam, $cAvailableLanguages)) { // save local cache for other messages this request self::$requestLanguage = $getParam; // set a cookie to persist that option for this session (do we want // this option to set the preferences too?) WebRequest::setCookie("lang", $getParam); // use this value. return $getParam; } } // cookie $cookie = WebRequest::getCookie("lang"); if ($cookie != false) { // check value is in list of allowed values if (array_key_exists($cookie, $cAvailableLanguages)) { // save local cache for other messages this request self::$requestLanguage = $cookie; // use this value. return $cookie; } } // user preference // site default return "en-GB"; }
public static function isBeta(WebRequest $request) { $tux = $request->getVal('tux', null); if ($tux === null) { $tux = $request->getCookie('tux', null, true); } elseif ($tux) { $request->response()->setCookie('tux', 1); } else { $request->response()->setCookie('tux', 0); } return $tux; }
public function suggestLoginUsername(WebRequest $request) { return $request->getCookie('UserName'); }