mirror of
https://github.com/JGH0/Todo-App-Backend.git
synced 2026-06-03 13:28:47 +02:00
fix backend CORS: add global CORS filter and catch-all OPTIONS route; fix MySQL insert errors: set updatedField to empty string instead of null in models without updated_at column
This commit is contained in:
@@ -73,6 +73,7 @@ class Filters extends BaseFilters
|
|||||||
*/
|
*/
|
||||||
public array $globals = [
|
public array $globals = [
|
||||||
'before' => [
|
'before' => [
|
||||||
|
'cors',
|
||||||
// 'honeypot',
|
// 'honeypot',
|
||||||
// 'csrf',
|
// 'csrf',
|
||||||
// 'invalidchars',
|
// 'invalidchars',
|
||||||
|
|||||||
@@ -11,6 +11,15 @@ $routes->get('/', 'Home::index');
|
|||||||
// API Routes - Version 1.0
|
// API Routes - Version 1.0
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
|
// Catch-all CORS preflight handler for all API routes
|
||||||
|
$routes->options('api/v1/(:any)', function () {
|
||||||
|
$response = service('response');
|
||||||
|
return $response->setStatusCode(200)
|
||||||
|
->setHeader('Access-Control-Allow-Origin', '*')
|
||||||
|
->setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
|
||||||
|
->setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-API-Key');
|
||||||
|
});
|
||||||
|
|
||||||
// Public endpoints (no authentication required)
|
// Public endpoints (no authentication required)
|
||||||
$routes->group('api/v1', ['namespace' => 'App\Controllers\Api\V1', 'filter' => 'cors'], function ($routes) {
|
$routes->group('api/v1', ['namespace' => 'App\Controllers\Api\V1', 'filter' => 'cors'], function ($routes) {
|
||||||
// Authentication
|
// Authentication
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class ActivityLogModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'action' => 'required|max_length[255]',
|
'action' => 'required|max_length[255]',
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class AiMessageModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'chat_id' => 'required',
|
'chat_id' => 'required',
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class AiProviderModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'name' => 'required|max_length[100]|is_unique[ai_providers.name]',
|
'name' => 'required|max_length[100]|is_unique[ai_providers.name]',
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class ApiAuthKeyModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = false;
|
protected $useTimestamps = false;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'user_id' => 'required',
|
'user_id' => 'required',
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class CategoryModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'user_id' => 'required',
|
'user_id' => 'required',
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class ProjectModel extends Model
|
|||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
protected $createdField = 'created_at';
|
protected $createdField = 'created_at';
|
||||||
protected $updatedField = null;
|
protected $updatedField = '';
|
||||||
|
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'user_id' => 'required',
|
'user_id' => 'required',
|
||||||
|
|||||||
Reference in New Issue
Block a user