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]); } }
public static function initialExecutable(Session $session) { $data = $session->getSessionVariable(GITHUB_ACCESS_RESPONSE_KEY, null); $token = new NullToken(); $oauthContext = new OauthContext(false, $token); if (strlen($data) > 0) { if (strpos($data, 'token ') === 0) { $data = substr($data, strlen('token ')); } $token = new Oauth2Token($data); $oauthContext = new OauthContext(true, $token); } $aliases = []; $aliases['GithubService\\AuthToken'] = get_class($token); return new InjectionParams([$oauthContext, $token], $aliases); }