From 4ebd19be89f51e673f37972a09e59abf775d3ac0 Mon Sep 17 00:00:00 2001 From: Awilum Date: Thu, 28 Apr 2022 21:04:51 +0300 Subject: [PATCH] feat(endpoints): add `create-token` endpoint --- src/flextype/core/Endpoints/Utils.php | 41 +++++++++++++++++++++++++ src/flextype/routes/endpoints/utils.php | 14 +++++++++ 2 files changed, 55 insertions(+) diff --git a/src/flextype/core/Endpoints/Utils.php b/src/flextype/core/Endpoints/Utils.php index 4c095567..05f4eee9 100644 --- a/src/flextype/core/Endpoints/Utils.php +++ b/src/flextype/core/Endpoints/Utils.php @@ -113,4 +113,45 @@ class Utils extends Api // Return success response return $this->getApiResponse($response, ['verified' => $verified], 200); } + + /** + * Create token + * + * @param ServerRequestInterface $request PSR7 request. + * @param ResponseInterface $response PSR7 response. + * + * @return ResponseInterface Response. + */ + public function createToken(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface + { + // Validate Api Request + if ( + count($result = $this->validateApiRequest([ + 'request' => $request, + 'api' => 'utils', + 'params' => ['token', 'access_token'], + ])) > 0 + ) { + return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']); + } + + $token = generateToken(); + $access_token = generateToken(); + $hashed_access_token = generateTokenHash($access_token); + + ! entries()->has('tokens') and entries()->create('tokens', ['title' => 'Tokens']); + + // Create new entry + entries()->create('tokens/' . $token, ['hashed_access_token' => $hashed_access_token]); + + // Fetch entry + $entryData = entries()->fetch('tokens/' . $token)->toArray(); + + // Return response + if (count($entryData) > 0) { + return $this->getApiResponse($response, ['token' => $token, 'access_token' => $access_token], 200); + } + + return $this->getApiResponse($response, [], 404); + } } diff --git a/src/flextype/routes/endpoints/utils.php b/src/flextype/routes/endpoints/utils.php index 6559a52f..224baa44 100644 --- a/src/flextype/routes/endpoints/utils.php +++ b/src/flextype/routes/endpoints/utils.php @@ -64,3 +64,17 @@ app()->post('/api/v0/utils/generate-token-hash', [Utils::class, 'generateTokenHa * Token verification object. */ app()->post('/api/v0/utils/verify-token-hash', [Utils::class, 'verifyTokenHash'])->setName('utils.verify-token-hash'); + +/** + * Create token + * + * endpoint: POST /api/v0/utils/create-token + * + * Body: + * token - [REQUIRED] - Valid public token. + * access_token - [REQUIRED] - Valid private access token. + * + * Returns: + * Token entry object with the token entry that was just created. + */ +app()->post('/api/v0/utils/create-token', [Utils::class, 'createToken'])->setName('utils.create-token');