mirror of
https://github.com/flextype/flextype.git
synced 2025-08-06 05:07:41 +02:00
feat(endpoints): use new Tokens API instead of old Utils API
This commit is contained in:
@@ -22,7 +22,7 @@ use Psr\Http\Message\ServerRequestInterface;
|
||||
use function count;
|
||||
use function filesystem;
|
||||
|
||||
class Utils extends Api
|
||||
class Tokens extends Api
|
||||
{
|
||||
/**
|
||||
* Generate token
|
||||
@@ -38,7 +38,7 @@ class Utils extends Api
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'utils',
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'access_token'],
|
||||
])) > 0
|
||||
) {
|
||||
@@ -69,7 +69,7 @@ class Utils extends Api
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'utils',
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'access_token', 'string'],
|
||||
])) > 0
|
||||
) {
|
||||
@@ -100,7 +100,7 @@ class Utils extends Api
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'utils',
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'access_token', 'string', 'hash'],
|
||||
])) > 0
|
||||
) {
|
||||
@@ -115,20 +115,20 @@ class Utils extends Api
|
||||
}
|
||||
|
||||
/**
|
||||
* Create token
|
||||
* Create token entry
|
||||
*
|
||||
* @param ServerRequestInterface $request PSR7 request.
|
||||
* @param ResponseInterface $response PSR7 response.
|
||||
*
|
||||
* @return ResponseInterface Response.
|
||||
*/
|
||||
public function createToken(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
public function create(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
{
|
||||
// Validate Api Request
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'utils',
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'access_token'],
|
||||
])) > 0
|
||||
) {
|
||||
@@ -142,7 +142,7 @@ class Utils extends Api
|
||||
! entries()->has('tokens') and entries()->create('tokens', ['title' => 'Tokens']);
|
||||
|
||||
// Create new entry
|
||||
entries()->create('tokens/' . $token, ['hashed_access_token' => $hashed_access_token]);
|
||||
entries()->create('tokens/' . $token, array_merge($requestParsedBody['data'], ['hashed_access_token' => $hashed_access_token]));
|
||||
|
||||
// Fetch entry
|
||||
$entryData = entries()->fetch('tokens/' . $token)->toArray();
|
||||
@@ -154,4 +154,108 @@ class Utils extends Api
|
||||
|
||||
return $this->getApiResponse($response, [], 404);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch token entry.
|
||||
*
|
||||
* @param ServerRequestInterface $request PSR7 request.
|
||||
* @param ResponseInterface $response PSR7 response.
|
||||
*
|
||||
* @return ResponseInterface Response.
|
||||
*/
|
||||
public function fetch(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
{
|
||||
// Get Request Query Params
|
||||
$requestQueryParams = $request->getQueryParams();
|
||||
|
||||
// Validate Api Request
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'id'],
|
||||
])) > 0
|
||||
) {
|
||||
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
|
||||
}
|
||||
|
||||
// Get entry data
|
||||
$entryData = entries()->fetch('tokens/' . $requestQueryParams['id'], $requestQueryParams['options'] ?? [])->toArray();
|
||||
|
||||
if (count($entryData) > 0) {
|
||||
return $this->getApiResponse($response, $entryData, 200);
|
||||
}
|
||||
|
||||
return $this->getApiResponse($response, $this->getStatusCodeMessage(404), 404);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update token entry.
|
||||
*
|
||||
* @param ServerRequestInterface $request PSR7 request.
|
||||
* @param ResponseInterface $response PSR7 response.
|
||||
*
|
||||
* @return ResponseInterface Response.
|
||||
*/
|
||||
public function update(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
{
|
||||
// Get Request Parsed Body
|
||||
$requestParsedBody = $request->getParsedBody();
|
||||
|
||||
// Validate Api Request
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'id', 'access_token'],
|
||||
])) > 0
|
||||
) {
|
||||
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
|
||||
}
|
||||
|
||||
// Update entry
|
||||
entries()->update('tokens/' . $requestParsedBody['id'], $requestParsedBody['data'] ?? []);
|
||||
|
||||
// Fetch entry
|
||||
$entryData = entries()->fetch('tokens/' . $requestParsedBody['id'])->toArray();
|
||||
|
||||
// Return response
|
||||
if (count($entryData) > 0) {
|
||||
return $this->getApiResponse($response, $entryData, 200);
|
||||
}
|
||||
|
||||
return $this->getApiResponse($response, [], 404);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete token entry.
|
||||
*
|
||||
* @param ServerRequestInterface $request PSR7 request.
|
||||
* @param ResponseInterface $response PSR7 response.
|
||||
*
|
||||
* @return ResponseInterface Response.
|
||||
*/
|
||||
public function delete(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
|
||||
{
|
||||
// Get Request Parsed Body
|
||||
$requestParsedBody = $request->getParsedBody();
|
||||
|
||||
// Validate Api Request
|
||||
if (
|
||||
count($result = $this->validateApiRequest([
|
||||
'request' => $request,
|
||||
'api' => 'tokens',
|
||||
'params' => ['token', 'id', 'access_token'],
|
||||
])) > 0
|
||||
) {
|
||||
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
|
||||
}
|
||||
|
||||
// Copy entry
|
||||
entries()->delete('tokens/' . $requestParsedBody['id']);
|
||||
|
||||
// Return success response
|
||||
return $this->getApiResponse($response, [], 204);
|
||||
}
|
||||
}
|
126
src/flextype/routes/endpoints/tokens.php
Normal file
126
src/flextype/routes/endpoints/tokens.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype - Hybrid Content Management System with the freedom of a headless CMS
|
||||
* and with the full functionality of a traditional CMS!
|
||||
*
|
||||
* Copyright (c) Sergey Romanenko (https://awilum.github.io)
|
||||
*
|
||||
* Licensed under The MIT License.
|
||||
*
|
||||
* For full copyright and license information, please see the LICENSE
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Flextype\Endpoints\Tokens;
|
||||
|
||||
use function app;
|
||||
|
||||
/**
|
||||
* Generate token
|
||||
*
|
||||
* endpoint: POST /api/v0/tokens/generate
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
*
|
||||
* Returns:
|
||||
* Generated token object.
|
||||
*/
|
||||
app()->post('/api/v0/tokens/generate', [Tokens::class, 'generate'])->setName('tokens.generate');
|
||||
|
||||
/**
|
||||
* Generate token hash
|
||||
*
|
||||
* endpoint: POST /api/v0/tokens/generate-hash
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
* string - [REQUIRED] - String to hash.
|
||||
*
|
||||
* Returns:
|
||||
* Generated token hash object.
|
||||
*/
|
||||
app()->post('/api/v0/tokens/generate-hash', [Tokens::class, 'generateHash'])->setName('tokens.generate-hash');
|
||||
|
||||
/**
|
||||
* Verify token hash
|
||||
*
|
||||
* endpoint: POST /api/v0/tokens/verify-hash
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
* string - [REQUIRED] - String to verify.
|
||||
* hash - [REQUIRED] - Hash to verify.
|
||||
*
|
||||
* Returns:
|
||||
* Token verification object.
|
||||
*/
|
||||
app()->post('/api/v0/tokens/verify-hash', [Tokens::class, 'verifyHash'])->setName('tokens.verify-hash');
|
||||
|
||||
/**
|
||||
* Create token entry
|
||||
*
|
||||
* endpoint: POST /api/v0/tokens/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/tokens', [Tokens::class, 'create'])->setName('tokens.create');
|
||||
|
||||
/**
|
||||
* Update token entry
|
||||
*
|
||||
* endpoint: PATCH /api/v0/tokens
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the token entry.
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
* data - [REQUIRED] - Data to update for the token entry.
|
||||
*
|
||||
* Returns:
|
||||
* Toeken entry object for the entry that was just updated.
|
||||
*/
|
||||
app()->patch('/api/v0/tokens', [Tokens::class, 'update'])->setName('tokens.update');
|
||||
|
||||
/**
|
||||
* Delete token entry
|
||||
*
|
||||
* endpoint: DELETE /api/v0/tokens
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the token entry.
|
||||
* token - [REQUIRED] - Valid pulbic token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
*
|
||||
* Returns:
|
||||
* Empty body with HTTP status 204
|
||||
*/
|
||||
app()->delete('/api/v0/tokens', [Tokens::class, 'delete'])->setName('tokens.delete');
|
||||
|
||||
/**
|
||||
* Fetch token entry
|
||||
*
|
||||
* endpoint: GET /api/v0/tokens
|
||||
*
|
||||
* Query:
|
||||
* id - [REQUIRED] - Unique identifier of the token entry.
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* options - [OPTIONAL] - Select items in collection by given conditions.
|
||||
*
|
||||
* Returns:
|
||||
* Entry object.
|
||||
*/
|
||||
app()->get('/api/v0/tokens', [Tokens::class, 'fetch'])->setName('tokens.fetch');
|
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype - Hybrid Content Management System with the freedom of a headless CMS
|
||||
* and with the full functionality of a traditional CMS!
|
||||
*
|
||||
* Copyright (c) Sergey Romanenko (https://awilum.github.io)
|
||||
*
|
||||
* Licensed under The MIT License.
|
||||
*
|
||||
* For full copyright and license information, please see the LICENSE
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Flextype\Endpoints\Utils;
|
||||
|
||||
use function app;
|
||||
|
||||
/**
|
||||
* Generate token
|
||||
*
|
||||
* endpoint: POST /api/v0/utils/generate-token
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
*
|
||||
* Returns:
|
||||
* Generated token object.
|
||||
*/
|
||||
app()->post('/api/v0/utils/generate-token', [Utils::class, 'generateToken'])->setName('utils.generate-token');
|
||||
|
||||
/**
|
||||
* Generate token hash
|
||||
*
|
||||
* endpoint: POST /api/v0/utils/generate-token-hash
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
* string - [REQUIRED] - String to hash.
|
||||
*
|
||||
* Returns:
|
||||
* Generated token hash object.
|
||||
*/
|
||||
app()->post('/api/v0/utils/generate-token-hash', [Utils::class, 'generateTokenHash'])->setName('utils.generate-token-hash');
|
||||
|
||||
/**
|
||||
* Verify token hash
|
||||
*
|
||||
* endpoint: POST /api/v0/utils/verify-token-hash
|
||||
*
|
||||
* Body:
|
||||
* token - [REQUIRED] - Valid public token.
|
||||
* access_token - [REQUIRED] - Valid private access token.
|
||||
* string - [REQUIRED] - String to verify.
|
||||
* hash - [REQUIRED] - Hash to verify.
|
||||
*
|
||||
* Returns:
|
||||
* 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');
|
Reference in New Issue
Block a user