95 lines
4.4 KiB
PHP
95 lines
4.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
require_once __DIR__ . '/../app/Core/helpers.php';
|
|
|
|
use App\Core\Application;
|
|
use App\Modules\Auth\AuthController;
|
|
use App\Middleware\AuthMiddleware;
|
|
|
|
$app = new Application(dirname(__DIR__));
|
|
$router = $app->getRouter();
|
|
|
|
// ══ Auth Routes ══════════════════════════════════════════════
|
|
$router->addRoute('POST', '/api/v1/auth/login', [AuthController::class, 'login']);
|
|
$router->addRoute('POST', '/api/v1/auth/register', [AuthController::class, 'register']);
|
|
|
|
// ══ 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('PUT', '/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, 'list']
|
|
]);
|
|
$router->addRoute('POST', '/api/v1/users', [
|
|
'middleware' => [\App\Middleware\AuthMiddleware::class],
|
|
'handler' => [\App\Modules\Users\UsersController::class, 'create']
|
|
]);
|
|
|
|
// ══ Invoice Routes ═══════════════════════════════════════════
|
|
$router->addRoute('GET', '/api/v1/invoices', [
|
|
'middleware' => [\App\Middleware\AuthMiddleware::class],
|
|
'handler' => [\App\Modules\Invoices\InvoiceController::class, 'list']
|
|
]);
|
|
$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, 'detail']
|
|
]);
|
|
|
|
// ══ Subscriptions ═════════════════════════════════════════════════
|
|
$router->addRoute('GET', '/api/v1/subscriptions/me', [
|
|
'middleware' => [\App\Middleware\AuthMiddleware::class, \App\Middleware\TenantMiddleware::class],
|
|
'handler' => [\App\Modules\Subscriptions\SubscriptionController::class, 'me']
|
|
]);
|
|
|
|
// ══ External API (HMAC) ══════════════════════════════════════
|
|
$router->addRoute('POST', '/api/v1/external/invoices/upload', [
|
|
'middleware' => [\App\Middleware\HmacMiddleware::class],
|
|
'handler' => [\App\Modules\Invoices\InvoiceController::class, 'upload']
|
|
]);
|
|
|
|
// ══ Dashboard ════════════════════════════════════════════════
|
|
$router->addRoute('GET', '/api/v1/dashboard', [
|
|
'middleware' => [\App\Middleware\AuthMiddleware::class],
|
|
'handler' => [\App\Modules\Dashboard\DashboardController::class, 'getStats']
|
|
]);
|
|
|
|
// ══ 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();
|