Exemple #1
0
 public static function callback()
 {
     //Get the username
     $username = $_GET['username'];
     //Save it inside as an access_token
     Token::add(self::name, $_SESSION['userid'], $username);
     redirect_to('/');
 }
 /**
  * Parse the token line using a PCRE
  *
  * @param string $line
  * @return array|FALSE
  */
 private function parseLine($line)
 {
     if (preg_match($this->_linePattern, $line, $parts)) {
         $token = new Token($parts['name'], isset($parts['value']) ? $this->unescape($parts['value']) : '');
         if (!empty($parts['parameters']) && preg_match_all($this->_parametersPattern, $parts['parameters'], $matches, PREG_SET_ORDER)) {
             foreach ($matches as $match) {
                 if (empty($match['paramName'])) {
                     continue;
                 }
                 $token->add($match['paramName'], $this->parseValue($match['paramValue']));
             }
         }
         return $token;
     }
     return NULL;
 }
Exemple #3
0
 public static function callback()
 {
     global $HTTP_CONFIG;
     //exchange the code you get for a access_token
     $code = $_GET['code'];
     $request = new HTTP_Request2(self::ACCESS_TOKEN_URL);
     $request->setMethod(HTTP_Request2::METHOD_POST);
     $request->setConfig($HTTP_CONFIG);
     $request->addPostParameter(['client_id' => GITHUB_APP_ID, 'client_secret' => GITHUB_APP_SECRET, 'code' => $code]);
     $request->setHeader('Accept', 'application/json');
     $response = $request->send();
     $response = json_decode($response->getBody());
     $access_token = $response->access_token;
     //Use this access token to get user details
     $request = new HTTP_Request2(self::USER_URL . '?access_token=' . $access_token, HTTP_Request2::METHOD_GET, $HTTP_CONFIG);
     $response = $request->send()->getBody();
     $userid = json_decode($response)->login;
     //get the userid
     //If such a user already exists in the database
     //Just log him in and don't touch the access_token
     $already_present_token = Token::get('github', $userid);
     if ($already_present_token) {
         $_SESSION['userid'] = $userid;
         redirect_to('/');
     }
     if (defined('GITHUB_ORGANIZATION')) {
         // perform the organization check
         $request = new HTTP_Request2(json_decode($response)->organizations_url . '?access_token=' . $access_token, HTTP_Request2::METHOD_GET, $HTTP_CONFIG);
         $response = $request->send()->getBody();
         //List of organizations
         $organizations_list = array_map(function ($repo) {
             return $repo->login;
         }, json_decode($response));
         if (in_array(GITHUB_ORGANIZATION, $organizations_list)) {
             $_SESSION['userid'] = $userid;
             Token::add('github', $userid, $access_token);
         } else {
             throw new Exception('You are not in the listed members.');
         }
     } else {
         $_SESSION['userid'] = $userid;
         Token::add('github', $userid, $access_token);
     }
     redirect_to('/');
 }
Exemple #4
0
 public static function callback()
 {
     global $HTTP_CONFIG;
     //Check state for csrf attack
     if ($_SESSION['state'] != $_GET['state']) {
         throw new Exception('Invalid Request. Please try again.');
     }
     //Get the access code
     $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/login/facebook/callback';
     $token_url = 'https://graph.facebook.com/oauth/access_token?' . 'client_id=' . FACEBOOK_APP_ID . '&redirect_uri=' . urlencode($redirect_uri) . '&client_secret=' . FACEBOOK_APP_SECRET . '&code=' . $_GET['code'];
     //Send the request
     $request = new HTTP_Request2($token_url);
     $request->setConfig($HTTP_CONFIG);
     $response = $request->send()->getBody();
     parse_str($response, $params);
     //Save it inside as an access_token
     Token::add(self::name, $_SESSION['userid'], $params['access_token']);
     redirect_to('/');
 }
 public function testPhpTokens()
 {
     $this->assertPhpToken('abstract', Token::_abstract());
     $this->assertPhpToken('array', Token::_array());
     $this->assertPhpToken('as', Token::_as());
     $this->assertPhpToken('break', Token::_break());
     $this->assertPhpToken('callable', Token::_callable());
     $this->assertPhpToken('case', Token::_case());
     $this->assertPhpToken('catch', Token::_catch());
     $this->assertPhpToken('class', Token::_class());
     $this->assertPhpToken('clone', Token::_clone());
     $this->assertPhpToken('const', Token::_const());
     $this->assertPhpToken('continue', Token::_continue());
     $this->assertPhpToken('declare', Token::_declare());
     $this->assertPhpToken('default', Token::_default());
     $this->assertPhpToken('die', Token::_die());
     $this->assertPhpToken('do', Token::_do());
     $this->assertPhpToken('echo', Token::_echo());
     $this->assertPhpToken('else', Token::_else());
     $this->assertPhpToken('elseif', Token::_elseIf());
     $this->assertPhpToken('empty', Token::_empty());
     $this->assertPhpToken('enddeclare', Token::_endDeclare());
     $this->assertPhpToken('endfor', Token::_endFor());
     $this->assertPhpToken('endforeach', Token::_endForeach());
     $this->assertPhpToken('endif', Token::_endIf());
     $this->assertPhpToken('endswitch', Token::_endSwitch());
     $this->assertPhpToken('endwhile', Token::_endWhile());
     $this->assertPhpToken('eval', Token::_eval());
     $this->assertPhpToken('exit', Token::_exit());
     $this->assertPhpToken('extends', Token::_extends());
     $this->assertPhpToken('final', Token::_final());
     $this->assertPhpToken('for', Token::_for());
     $this->assertPhpToken('foreach', Token::_foreach());
     $this->assertPhpToken('function', Token::_function());
     $this->assertPhpToken('global', Token::_global());
     $this->assertPhpToken('goto', Token::_goto());
     $this->assertPhpToken('if', Token::_if());
     $this->assertPhpToken('implements', Token::_implements());
     $this->assertPhpToken('include', Token::_include());
     $this->assertPhpToken('include_once', Token::_includeOnce());
     $this->assertPhpToken('instanceof', Token::_instanceOf());
     $this->assertPhpToken('insteadof', Token::_insteadOf());
     $this->assertPhpToken('interface', Token::_interface());
     $this->assertPhpToken('isset', Token::_isset());
     $this->assertPhpToken('list', Token::_list());
     $this->assertPhpToken('namespace', Token::_namespace());
     $this->assertPhpToken('new', Token::_new());
     $this->assertPhpToken('print', Token::_print());
     $this->assertPhpToken('private', Token::_private());
     $this->assertPhpToken('protected', Token::_protected());
     $this->assertPhpToken('public', Token::_public());
     $this->assertPhpToken('require', Token::_require());
     $this->assertPhpToken('require_once', Token::_requireOnce());
     $this->assertPhpToken('return', Token::_return());
     $this->assertPhpToken('static', Token::_static());
     $this->assertPhpToken('switch', Token::_switch());
     $this->assertPhpToken('throw', Token::_throw());
     $this->assertPhpToken('trait', Token::_trait());
     $this->assertPhpToken('try', Token::_try());
     $this->assertPhpToken('unset', Token::_unset());
     $this->assertPhpToken('use', Token::_use());
     $this->assertPhpToken('var', Token::_var());
     $this->assertPhpToken('while', Token::_while());
     $this->assertPhpToken('and', Token::logicalAnd());
     $this->assertPhpToken('or', Token::logicalOr());
     $this->assertPhpToken('xor', Token::logicalXor());
     $this->assertPhpToken('(array)', Token::arrayCast());
     $this->assertPhpToken('(bool)', Token::booleanCast(), FALSE);
     $this->assertPhpToken('(boolean)', Token::booleanCast());
     $this->assertPhpToken('(real)', Token::doubleCast(), FALSE);
     $this->assertPhpToken('(float)', Token::doubleCast(), FALSE);
     $this->assertPhpToken('(double)', Token::doubleCast());
     $this->assertPhpToken('(int)', Token::integerCast(), FALSE);
     $this->assertPhpToken('(integer)', Token::integerCast());
     $this->assertPhpToken('(object)', Token::objectCast());
     $this->assertPhpToken('(string)', Token::stringCast());
     $this->assertPhpToken('(unset)', Token::unsetCast());
     $this->assertPhpToken('__halt_compiler', Token::haltCompiler());
     $this->assertPhpToken('__CLASS__', Token::classConstant());
     $this->assertPhpToken('__DIR__', Token::dirConstant());
     $this->assertPhpToken('__FILE__', Token::fileConstant());
     $this->assertPhpToken('__FUNCTION__', Token::functionConstant());
     $this->assertPhpToken('__LINE__', Token::lineConstant());
     $this->assertPhpToken('__METHOD__', Token::methodConstant());
     $this->assertPhpToken('__NAMESPACE__', Token::namespaceConstant());
     $this->assertPhpToken('__TRAIT__', Token::traitConstant());
     $this->assertPhpToken('=>', Token::doubleArrow());
     $this->assertPhpToken('->', Token::objectOperator());
     $this->assertPhpToken('::', Token::doubleColon());
     $this->assertPhpToken('&=', Token::bitwiseAndAssign());
     $this->assertPhpToken('|=', Token::bitwiseOrAssign());
     $this->assertPhpToken('^=', Token::bitwiseXorAssign());
     $this->assertPhpToken('*=', Token::multiplyAssign());
     $this->assertPhpToken('/=', Token::divideAssign());
     $this->assertPhpToken('%=', Token::modulusAssign());
     $this->assertPhpToken('+=', Token::addAssign());
     $this->assertPhpToken('-=', Token::subtractAssign());
     $this->assertPhpToken('.=', Token::concatAssign());
     $this->assertPhpToken('===', Token::isIdentical());
     $this->assertPhpToken('==', Token::isEqual());
     $this->assertPhpToken('!==', Token::isNotIdentical());
     $this->assertPhpToken('!=', Token::isNotEqual());
     $this->assertPhpToken('<=', Token::isLessThanOrEqual());
     $this->assertPhpToken('>=', Token::isGreaterThanOrEqual());
     $this->assertPhpToken('&&', Token::booleanAnd());
     $this->assertPhpToken('||', Token::booleanOr());
     $this->assertPhpToken('<<', Token::bitwiseShiftLeft());
     $this->assertPhpToken('<<=', Token::bitwiseShiftLeftAssign());
     $this->assertPhpToken('>>', Token::bitwiseShiftRight());
     $this->assertPhpToken('>>=', Token::bitwiseShiftRightAssign());
     $this->assertPhpToken('--', Token::decrement());
     $this->assertPhpToken('++', Token::increment());
     $this->assertPhpToken('`', Token::backtick());
     $this->assertPhpToken('~', Token::bitwiseNot());
     $this->assertPhpToken('!', Token::not());
     $this->assertPhpToken('@', Token::suppress());
     $this->assertPhpToken('%', Token::modulus());
     $this->assertPhpToken('^', Token::bitwiseXor());
     $this->assertPhpToken('&', Token::bitwiseAnd());
     $this->assertPhpToken('*', Token::multiply());
     $this->assertPhpToken('(', Token::openParen());
     $this->assertPhpToken(')', Token::closeParen());
     $this->assertPhpToken('-', Token::subtract());
     $this->assertPhpToken('+', Token::add());
     $this->assertPhpToken('=', Token::assign());
     $this->assertPhpToken('{', Token::openBrace());
     $this->assertPhpToken('}', Token::closeBrace());
     $this->assertPhpToken('[', Token::openBracket());
     $this->assertPhpToken(']', Token::closeBracket());
     $this->assertPhpToken('\\', Token::namespaceSeparator());
     $this->assertPhpToken('|', Token::bitwiseOr());
     $this->assertPhpToken(':', Token::colon());
     $this->assertPhpToken(';', Token::semiColon());
     $this->assertPhpToken('"', Token::doubleQuote());
     $this->assertPhpToken('<', Token::isLessThan());
     $this->assertPhpToken(',', Token::comma());
     $this->assertPhpToken('>', Token::isGreaterThan());
     $this->assertPhpToken('.', Token::concat());
     $this->assertPhpToken('?', Token::ternaryOperator());
     $this->assertPhpToken('/', Token::divide());
     $this->assertPhpToken(' ', Token::space());
     $this->assertPhpToken('?>', Token::closeTag());
 }