75 lines
3.3 KiB
PHP
75 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../vendor/autoload.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']);
|
|
|
|
// ══ 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']
|
|
]);
|
|
|
|
// ══ 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']
|
|
]);
|
|
|
|
// ══ 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
|
|
]);
|
|
});
|
|
|
|
// ══ SPA Shell ═══════════════════════════════════════════════
|
|
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
|
|
if (!str_starts_with($path, '/api/v1/')) {
|
|
include __DIR__ . '/shell.php';
|
|
exit;
|
|
}
|
|
|
|
$app->run();
|