1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-06 13:16:45 +02:00

feat(endpoints): add create-token endpoint

This commit is contained in:
Awilum
2022-04-28 21:04:51 +03:00
parent 37749d1205
commit 4ebd19be89
2 changed files with 55 additions and 0 deletions

View File

@@ -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);
}
}

View File

@@ -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');