databasePath); $app = AppFactory::create(); $app->addBodyParsingMiddleware(); $app->addRoutingMiddleware(); $errorMiddleware = $app->addErrorMiddleware($config->displayErrors, true, true); $errorMiddleware->setDefaultErrorHandler( new JsonErrorHandler($app->getResponseFactory(), $config->displayErrors) ); // --- Wiring ----------------------------------------------------------------- $users = new UserRepository($database->pdo()); $jwt = new JwtService($config->jwtSecret, $config->jwtTtl); $authController = new AuthController($users, $jwt); $authMiddleware = new AuthMiddleware($jwt, $users); // --- Routes --------------------------------------------------------------- $app->group('/api', function (RouteCollectorProxy $group) use ($authController, $authMiddleware) { $group->get('/health', function (Request $request, Response $response): Response { $response->getBody()->write((string) json_encode(['status' => 'ok'])); return $response->withHeader('Content-Type', 'application/json'); }); $group->post('/auth/register', [$authController, 'register']); $group->post('/auth/login', [$authController, 'login']); $group->get('/me', [$authController, 'me'])->add($authMiddleware); }); return $app;