/** * Handle request token, access token and xAuth login */ protected function handle($action) { $response = []; //\Debugbar::disable(); $now = new Carbon(); try { $statusCode = 200; $response = ['result' => ['status' => 'success', 'code' => $statusCode, 'server' => $_SERVER['SERVER_ADDR'], 'time' => $now->timestamp, 'version' => 1]]; switch ($action) { case 'requestToken': $result = OAuthServer::requestToken(); break; case 'accessToken': $result = OAuthServer::accessToken(); break; case 'xAuth': $result = OAuthServer::xAuth(); break; case 'logout': $result = OAuthServer::logout(); break; default: throw OAuthException::make(OAuthException::SERVICE_UNAVAILABLE); } $response = array_merge($response, $result); } catch (OAuthException $e) { $statusCode = 400; $response = ['result' => ['status' => 'error', 'code' => $statusCode, 'message' => $e->getName(), 'server' => $_SERVER['SERVER_ADDR'], 'time' => $now->timestamp, 'version' => 1, 'errors' => [['message' => $e->getMessage(), 'code' => $e->getCode(), 'method' => \Request::method(), 'url' => \Request::fullUrl()]]]]; } catch (\Exception $e) { \Log::error($e, ['method' => \Request::method(), 'url' => \Request::fullUrl(), 'error' => 'OAuth exception occured']); $statusCode = 500; $response = ['status' => 'error', 'code' => $statusCode, 'server' => $_SERVER['SERVER_ADDR'], 'time' => $now->timestamp, 'version' => 1, 'errors' => [['message' => 'Error occured', 'code' => 500, 'method' => \Request::method(), 'url' => \Request::fullUrl()]]]; } finally { return \Response::json($response, $statusCode); } }
/** * Verify the authorization information * * @return array The state of authorization flow */ public function authorizeVerify() { // Authorization implementation goes here $token = $this->getParam(self::OAUTH_TOKEN, true); if (!isset($this->storages['request_token'])) { throw new \RuntimeException('You must supply a storage object implementing ' . $this->storageMap['request_token']); } $requestToken = $this->storages['request_token']->getRequestToken($token); if (!$requestToken) { throw OAuthException::make(OAuthException::TOKEN_REJECTED, ['value' => $token]); } $state = $this->loadState(); // We need to remember the callback if (empty($state['token']) || strcmp($state['token'], $requestToken['token'])) { $state['token'] = $requestToken['token']; $state['consumer_key'] = $requestToken['consumer_key']; $cb = $this->getParam(self::OAUTH_CALLBACK, true); if ($cb) { $state['callback_url'] = $cb; } else { $state['callback_url'] = $requestToken['callback_url']; } $this->storeState($state); } return $state; }
/** * Perform version check. * @exception OAuthException thrown when sanity checks failed */ protected function verifyVersion() { $version = $this->getParam(self::OAUTH_VERSION, true); if (empty($version)) { throw OAuthException::make(OAuthException::PARAMETER_ABSENT, ['name' => self::OAUTH_VERSION]); } if ($version != '1.0' && $version != '1.0a') { throw OAuthException::make(OAuthException::VERSION_REJECTED, ['value' => $version]); } }