mirror of
https://github.com/flextype/flextype.git
synced 2025-08-13 16:44:36 +02:00
feat(core): Content Management API (CMA) #421
This commit is contained in:
@@ -99,18 +99,18 @@ $registry->set('flextype', $flextype_settings);
|
||||
*/
|
||||
$app = new App([
|
||||
'settings' => [
|
||||
'debug' => $registry->get('flextype.errors.display'),
|
||||
'whoops.editor' => $registry->get('flextype.whoops.editor'),
|
||||
'whoops.page_title' => $registry->get('flextype.whoops.page_title'),
|
||||
'displayErrorDetails' => $registry->get('flextype.display_error_details'),
|
||||
'addContentLengthHeader' => $registry->get('flextype.add_content_length_header'),
|
||||
'routerCacheFile' => $registry->get('flextype.router_cache_file'),
|
||||
'determineRouteBeforeAppMiddleware' => $registry->get('flextype.determine_route_before_app_middleware'),
|
||||
'outputBuffering' => $registry->get('flextype.output_buffering'),
|
||||
'responseChunkSize' => $registry->get('flextype.response_chunk_size'),
|
||||
'httpVersion' => $registry->get('flextype.http_version'),
|
||||
'debug' => $registry->get('flextype.settings.errors.display'),
|
||||
'whoops.editor' => $registry->get('flextype.settings.whoops.editor'),
|
||||
'whoops.page_title' => $registry->get('flextype.settings.whoops.page_title'),
|
||||
'displayErrorDetails' => $registry->get('flextype.settings.display_error_details'),
|
||||
'addContentLengthHeader' => $registry->get('flextype.settings.add_content_length_header'),
|
||||
'routerCacheFile' => $registry->get('flextype.settings.router_cache_file'),
|
||||
'determineRouteBeforeAppMiddleware' => $registry->get('flextype.settings.determine_route_before_app_middleware'),
|
||||
'outputBuffering' => $registry->get('flextype.settings.output_buffering'),
|
||||
'responseChunkSize' => $registry->get('flextype.settings.response_chunk_size'),
|
||||
'httpVersion' => $registry->get('flextype.settings.http_version'),
|
||||
'images' => [
|
||||
'driver' => $registry->get('flextype.image.driver'),
|
||||
'driver' => $registry->get('flextype.settings.image.driver'),
|
||||
],
|
||||
],
|
||||
]);
|
||||
@@ -131,18 +131,19 @@ include_once 'dependencies.php';
|
||||
include_once 'endpoints/delivery/images.php';
|
||||
include_once 'endpoints/delivery/entries.php';
|
||||
include_once 'endpoints/delivery/registry.php';
|
||||
include_once 'endpoints/management/entries.php';
|
||||
|
||||
/**
|
||||
* Set internal encoding
|
||||
*/
|
||||
function_exists('mb_language') and mb_language('uni');
|
||||
function_exists('mb_regex_encoding') and mb_regex_encoding($flextype['registry']->get('flextype.charset'));
|
||||
function_exists('mb_internal_encoding') and mb_internal_encoding($flextype['registry']->get('flextype.charset'));
|
||||
function_exists('mb_regex_encoding') and mb_regex_encoding($flextype['registry']->get('flextype.settings.charset'));
|
||||
function_exists('mb_internal_encoding') and mb_internal_encoding($flextype['registry']->get('flextype.settings.charset'));
|
||||
|
||||
/**
|
||||
* Display Errors
|
||||
*/
|
||||
if ($flextype['registry']->get('flextype.errors.display')) {
|
||||
if ($flextype['registry']->get('flextype.settings.errors.display')) {
|
||||
|
||||
/**
|
||||
* Add WhoopsMiddleware
|
||||
@@ -155,7 +156,7 @@ if ($flextype['registry']->get('flextype.errors.display')) {
|
||||
/**
|
||||
* Set default timezone
|
||||
*/
|
||||
date_default_timezone_set($flextype['registry']->get('flextype.timezone'));
|
||||
date_default_timezone_set($flextype['registry']->get('flextype.settings.timezone'));
|
||||
|
||||
/**
|
||||
* Init plugins
|
||||
|
501
src/flextype/endpoints/management/entries.php
Normal file
501
src/flextype/endpoints/management/entries.php
Normal file
@@ -0,0 +1,501 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype (http://flextype.org)
|
||||
* Founded by Sergey Romanenko and maintained by Flextype Community.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Flextype\Component\Filesystem\Filesystem;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use function array_replace_recursive;
|
||||
use function count;
|
||||
|
||||
/**
|
||||
* Validate management entries token
|
||||
*/
|
||||
function validate_management_entries_token($token) : bool
|
||||
{
|
||||
return Filesystem::has(PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml');
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate auth token
|
||||
*/
|
||||
function validate_auth_token($token) : bool
|
||||
{
|
||||
return Filesystem::has(PATH['site'] . '/tokens/auth/' . $token . '/token.yaml');
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch entry(entries)
|
||||
*
|
||||
* endpoint: GET /api/management/entries
|
||||
*
|
||||
* Query:
|
||||
* id - [REQUIRED] - Unique identifier of the entry(entries).
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* filter - [OPTIONAL] - Select items in collection by given conditions.
|
||||
*
|
||||
* Returns:
|
||||
* An array of entry item objects.
|
||||
*/
|
||||
$app->get('/api/management/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
// Get Query Params
|
||||
$query = $request->getQueryParams();
|
||||
|
||||
// Set variables
|
||||
$id = $query['id'];
|
||||
$token = $query['token'];
|
||||
$filter = $query['filter'] ?? null;
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
// Validate management token
|
||||
if (validate_management_entries_token($token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token. '/token.yaml';
|
||||
|
||||
// Set management token file
|
||||
if ($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) {
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.'], 401);
|
||||
}
|
||||
|
||||
// Fetch entry
|
||||
$data['data'] = $flextype['entries']->fetch($id, $filter);
|
||||
|
||||
// Set response code
|
||||
$response_code = count($data['data']) > 0 ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Create entry
|
||||
*
|
||||
* endpoint: POST /api/management/entries
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the entry.
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* auth_token - [REQUIRED] - Valid Authentication token.
|
||||
* data - [REQUIRED] - Data to store for the entry.
|
||||
*
|
||||
* Returns:
|
||||
* Returns the entry item object for the entry item that was just created.
|
||||
*/
|
||||
$app->post('/api/management/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$auth_token = $post_data['auth_token'];
|
||||
$id = $post_data['id'];
|
||||
$data = $post_data['data'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate management and auth token
|
||||
if (validate_management_entries_token($token) && validate_auth_token($auth_token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml';
|
||||
$auth_token_file_path = PATH['site'] . '/tokens/auth/' . $auth_token . '/token.yaml';
|
||||
|
||||
// Set management and auth token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($auth_token_file_data = $flextype['parser']->decode(Filesystem::read($auth_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.0'], 401);
|
||||
}
|
||||
|
||||
if ($auth_token_file_data['state'] === 'disabled' ||
|
||||
($auth_token_file_data['limit_calls'] !== 0 && $auth_token_file_data['calls'] >= $auth_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.00'], 401);
|
||||
}
|
||||
|
||||
// Create entry
|
||||
$create_entry = $flextype['entries']->create($id, $data);
|
||||
|
||||
if ($create_entry) {
|
||||
$data = $flextype['entries']->fetch($id);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Set response code
|
||||
$response_code = ($create_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.1'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.2'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.3'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
||||
|
||||
/**
|
||||
* Update entry
|
||||
*
|
||||
* endpoint: PATCH /api/management/entries
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the entry.
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* auth_token - [REQUIRED] - Valid Authentication token.
|
||||
* data - [REQUIRED] - Data to update for the entry.
|
||||
*
|
||||
* Returns:
|
||||
* Returns the entry item object for the entry item that was just created.
|
||||
*/
|
||||
$app->patch('/api/management/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$auth_token = $post_data['auth_token'];
|
||||
$id = $post_data['id'];
|
||||
$data = $post_data['data'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate management and auth token
|
||||
if (validate_management_entries_token($token) && validate_auth_token($auth_token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml';
|
||||
$auth_token_file_path = PATH['site'] . '/tokens/auth/' . $auth_token . '/token.yaml';
|
||||
|
||||
// Set management and auth token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($auth_token_file_data = $flextype['parser']->decode(Filesystem::read($auth_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.0'], 401);
|
||||
}
|
||||
|
||||
if ($auth_token_file_data['state'] === 'disabled' ||
|
||||
($auth_token_file_data['limit_calls'] !== 0 && $auth_token_file_data['calls'] >= $auth_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.00'], 401);
|
||||
}
|
||||
|
||||
// Update entry
|
||||
$update_entry = $flextype['entries']->update($id, $data);
|
||||
|
||||
if ($update_entry) {
|
||||
$data = $flextype['entries']->fetch($id);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Set response code
|
||||
$response_code = ($update_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.1'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.2'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.3'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
||||
|
||||
/**
|
||||
* Rename entry
|
||||
*
|
||||
* endpoint: PUT /api/management/entries
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the entry.
|
||||
* new_id - [REQUIRED] - New Unique identifier of the entry.
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* auth_token - [REQUIRED] - Valid Authentication token.
|
||||
*
|
||||
* Returns:
|
||||
* Returns the entry item object for the entry item that was just renamed.
|
||||
*/
|
||||
$app->put('/api/management/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$auth_token = $post_data['auth_token'];
|
||||
$id = $post_data['id'];
|
||||
$new_id = $post_data['new_id'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate management and auth token
|
||||
if (validate_management_entries_token($token) && validate_auth_token($auth_token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml';
|
||||
$auth_token_file_path = PATH['site'] . '/tokens/auth/' . $auth_token . '/token.yaml';
|
||||
|
||||
// Set management and auth token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($auth_token_file_data = $flextype['parser']->decode(Filesystem::read($auth_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.0'], 401);
|
||||
}
|
||||
|
||||
if ($auth_token_file_data['state'] === 'disabled' ||
|
||||
($auth_token_file_data['limit_calls'] !== 0 && $auth_token_file_data['calls'] >= $auth_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.00'], 401);
|
||||
}
|
||||
|
||||
// Rename entry
|
||||
$rename_entry = $flextype['entries']->rename($id, $new_id);
|
||||
|
||||
// Get entry data
|
||||
if ($rename_entry) {
|
||||
$data = $flextype['entries']->fetch($new_id);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Set response code
|
||||
$response_code = ($data) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.1'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.2'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.3'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
||||
|
||||
/**
|
||||
* Copy entry(entries)
|
||||
*
|
||||
* endpoint: PUT /api/management/entries/copy
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the entry.
|
||||
* new_id - [REQUIRED] - New Unique identifier of the entry.
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* auth_token - [REQUIRED] - Valid Authentication token.
|
||||
*
|
||||
* Returns:
|
||||
* Returns the entry item object for the entry item that was just copied.
|
||||
*/
|
||||
$app->put('/api/management/entries/copy', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$auth_token = $post_data['auth_token'];
|
||||
$id = $post_data['id'];
|
||||
$new_id = $post_data['new_id'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate management and auth token
|
||||
if (validate_management_entries_token($token) && validate_auth_token($auth_token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml';
|
||||
$auth_token_file_path = PATH['site'] . '/tokens/auth/' . $auth_token . '/token.yaml';
|
||||
|
||||
// Set management and auth token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($auth_token_file_data = $flextype['parser']->decode(Filesystem::read($auth_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.0'], 401);
|
||||
}
|
||||
|
||||
if ($auth_token_file_data['state'] === 'disabled' ||
|
||||
($auth_token_file_data['limit_calls'] !== 0 && $auth_token_file_data['calls'] >= $auth_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.00'], 401);
|
||||
}
|
||||
|
||||
// Rename entry
|
||||
$rename_entry = $flextype['entries']->copy($id, $new_id);
|
||||
|
||||
// Get entry data
|
||||
if ($rename_entry) {
|
||||
$data = $flextype['entries']->fetch($new_id);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Set response code
|
||||
$response_code = ($data) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.1'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.2'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.3'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
||||
|
||||
/**
|
||||
* Delete entry
|
||||
*
|
||||
* endpoint: DELETE /api/management/entries
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the entry.
|
||||
* token - [REQUIRED] - Valid Content Management API token for Entries.
|
||||
* auth_token - [REQUIRED] - Valid Authentication token.
|
||||
*
|
||||
* Returns:
|
||||
* Returns an empty body with HTTP status 204
|
||||
*/
|
||||
$app->delete('/api/management/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$auth_token = $post_data['auth_token'];
|
||||
$id = $post_data['id'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate management and auth token
|
||||
if (validate_management_entries_token($token) && validate_auth_token($auth_token)) {
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token . '/token.yaml';
|
||||
$auth_token_file_path = PATH['site'] . '/tokens/auth/' . $auth_token . '/token.yaml';
|
||||
|
||||
// Set management and auth token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($auth_token_file_data = $flextype['parser']->decode(Filesystem::read($auth_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.0'], 401);
|
||||
}
|
||||
|
||||
if ($auth_token_file_data['state'] === 'disabled' ||
|
||||
($auth_token_file_data['limit_calls'] !== 0 && $auth_token_file_data['calls'] >= $auth_token_file_data['limit_calls'])) {
|
||||
return $response->withJson(['detail' => 'Incorrect authentication credentials.00'], 401);
|
||||
}
|
||||
|
||||
// Delete entry
|
||||
$data = $flextype['entries']->delete($id);
|
||||
|
||||
// Set response code
|
||||
$response_code = ($data) ? 204 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($data, $response_code)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.1'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.2'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson(['detail' => 'Incorrect authentication credentials.3'], 401)
|
||||
->withHeader('Access-Control-Allow-Origin', '*');
|
||||
});
|
Reference in New Issue
Block a user