Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 5
0
 public function suggestLoginUsername(WebRequest $request)
 {
     return $request->getCookie('UserName');
 }