Ejemplo n.º 1
0
 public function oauthReturn(GithubService $api, VariableMap $variableMap, Session $session, SessionBasedOauth $sessionBasedOauth)
 {
     $code = $variableMap->getVariable('code', false);
     $state = $variableMap->getVariable('state', false);
     $oauthUnguessable = $session->getSessionVariable('oauthUnguessable', null);
     if (!$code || !$state || !$oauthUnguessable) {
         $errorContext = OauthErrorContext::create("Missing data: '{$code}' '{$state}' '{$oauthUnguessable}'");
         return JigExecutable::createWithSharedObjects("pages/oauth/error", [$errorContext]);
     }
     if ($state !== $oauthUnguessable) {
         //Miss-match on what we're tring to validated.
         $errorContext = OauthErrorContext::create("Mismatch on secret'");
         return JigExecutable::createWithSharedObjects("pages/oauth/error", [$errorContext]);
     }
     try {
         $oauthOperation = $api->getOauthAuthorization(GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, $code, $oauthUnguessable);
         $oauthOperation->setRedirect_uri("http://" . SERVER_HOSTNAME . "/oauthReturn");
         $accessResponse = $oauthOperation->execute();
         $session->setSessionVariable(GITHUB_ACCESS_RESPONSE_KEY, $accessResponse);
         $authToken = new Oauth2Token($accessResponse->accessToken);
         $sessionBasedOauth->save($authToken);
         $oauthSuccessContext = OauthSuccessContext::create($accessResponse);
         return JigExecutable::createWithSharedObjects("pages/oauth/success", [$oauthSuccessContext]);
     } catch (GithubArtaxServiceException $fae) {
         $errorContext = OauthErrorContext::create($fae->getMessage());
         return JigExecutable::createWithSharedObjects("pages/oauth/error", [$errorContext]);
     }
 }