getRouter(); // ══ Auth Routes ══════════════════════════════════════════════ $router->addRoute('POST', '/api/v1/auth/login', [AuthController::class, 'login']); $router->addRoute('POST', '/api/v1/auth/register', [AuthController::class, 'register']); $router->addRoute('GET', '/api/v1/auth/me', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [AuthController::class, 'me'] ]); $router->addRoute('POST', '/api/v1/auth/logout', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [AuthController::class, 'logout'] ]); $router->addRoute('POST', '/api/v1/auth/2fa/enable', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [AuthController::class, 'enable2FA'] ]); $router->addRoute('POST', '/api/v1/auth/2fa/verify', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [AuthController::class, 'verify2FA'] ]); $router->addRoute('POST', '/api/v1/auth/2fa/disable', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [AuthController::class, 'disable2FA'] ]); // ══ Company Routes ═══════════════════════════════════════════ $router->addRoute('GET', '/api/v1/companies', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'list'] ]); $router->addRoute('POST', '/api/v1/companies', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'create'] ]); $router->addRoute('POST', '/api/v1/companies/{id}/jofotara', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Companies\CompanyController::class, 'updateJoFotara'] ]); // ══ User Routes ══════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/users', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Users\UsersController::class, 'index'] ]); $router->addRoute('POST', '/api/v1/users', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Users\UsersController::class, 'create'] ]); $router->addRoute('DELETE', '/api/v1/users/{id}', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Users\UsersController::class, 'delete'] ]); // ══ Invoice Routes ═══════════════════════════════════════════ $router->addRoute('GET', '/api/v1/invoices', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'index'] ]); $router->addRoute('POST', '/api/v1/invoices/upload', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'upload'] ]); $router->addRoute('GET', '/api/v1/invoices/{id}', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'show'] ]); $router->addRoute('GET', '/api/v1/invoices/{id}/status', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'status'] ]); $router->addRoute('POST', '/api/v1/invoices/{id}/submit', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'submit'] ]); $router->addRoute('GET', '/api/v1/invoices/{id}/file', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Invoices\InvoiceController::class, 'serveFile'] ]); // ══ API Keys ═══════════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/api-keys', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\ApiKeys\ApiKeyController::class, 'index'] ]); $router->addRoute('POST', '/api/v1/api-keys', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\ApiKeys\ApiKeyController::class, 'create'] ]); $router->addRoute('DELETE', '/api/v1/api-keys/{id}', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\ApiKeys\ApiKeyController::class, 'revoke'] ]); // ══ Dashboard ════════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/dashboard', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Dashboard\DashboardController::class, 'getStats'] ]); // ══ Admin (Super Admin only) ══════════════════════════════════ $router->addRoute('GET', '/api/v1/admin/tenants', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Admin\AdminController::class, 'listTenants'] ]); $router->addRoute('GET', '/api/v1/admin/stats', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Admin\AdminController::class, 'getSystemStats'] ]); $router->addRoute('GET', '/api/v1/admin/health', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Admin\AdminController::class, 'health'] ]); $router->addRoute('GET', '/api/v1/admin/queue', [ 'middleware' => [\App\Middleware\AuthMiddleware::class], 'handler' => [\App\Modules\Admin\AdminController::class, 'getQueueStatus'] ]); // ══ Health Check ═════════════════════════════════════════════ $router->addRoute('GET', '/api/v1/health', function($request) { \App\Core\Response::json([ 'status' => 'ok', 'timestamp' => date('c'), 'php' => PHP_VERSION, 'db' => 'connected' // Simple check ]); }); // ══ Determine if this is an API request ═════════════════════════════ $apiRoute = $_GET['route'] ?? null; if (!$apiRoute) { // Not an API call — serve the SPA shell include __DIR__ . '/shell.php'; exit; } $app->run();