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 = [
|
||||
'before' => [
|
||||
'cors',
|
||||
// 'honeypot',
|
||||
// 'csrf',
|
||||
// 'invalidchars',
|
||||
|
||||
@@ -11,6 +11,15 @@ $routes->get('/', 'Home::index');
|
||||
// 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)
|
||||
$routes->group('api/v1', ['namespace' => 'App\Controllers\Api\V1', 'filter' => 'cors'], function ($routes) {
|
||||
// Authentication
|
||||
|
||||
@@ -25,7 +25,7 @@ class ActivityLogModel extends Model
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'action' => 'required|max_length[255]',
|
||||
|
||||
@@ -22,7 +22,7 @@ class AiMessageModel extends Model
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'chat_id' => 'required',
|
||||
|
||||
@@ -22,7 +22,7 @@ class AiProviderModel extends Model
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'name' => 'required|max_length[100]|is_unique[ai_providers.name]',
|
||||
|
||||
@@ -27,7 +27,7 @@ class ApiAuthKeyModel extends Model
|
||||
|
||||
protected $useTimestamps = false;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'user_id' => 'required',
|
||||
|
||||
@@ -22,7 +22,7 @@ class CategoryModel extends Model
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'user_id' => 'required',
|
||||
|
||||
@@ -22,7 +22,7 @@ class ProjectModel extends Model
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = null;
|
||||
protected $updatedField = '';
|
||||
|
||||
protected $validationRules = [
|
||||
'user_id' => 'required',
|
||||
|
||||
Reference in New Issue
Block a user