- Refactored AuthService to use UserRepository for user authentication. - Added .env file for environment configuration. - Created migration system with Migrator and ConnectionFactory classes. - Added database migration files for creating users table. - Implemented settings controller for managing database migrations. - Developed user repository for user data handling. - Created users controller for user management interface. - Added frontend standards and migration documentation. - Introduced reusable UI components and jQuery alerts module.
57 lines
2.2 KiB
PHP
57 lines
2.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
use App\Core\Application;
|
|
use App\Core\Http\Request;
|
|
use App\Core\Http\Response;
|
|
use App\Core\Security\Csrf;
|
|
use App\Modules\Auth\AuthController;
|
|
use App\Modules\Auth\AuthMiddleware;
|
|
use App\Modules\Settings\SettingsController;
|
|
use App\Modules\Users\UsersController;
|
|
|
|
return static function (Application $app): void {
|
|
$router = $app->router();
|
|
$template = $app->template();
|
|
$auth = $app->auth();
|
|
$translator = $app->translator();
|
|
|
|
$authController = new AuthController($template, $auth, $translator);
|
|
$usersController = new UsersController($template, $translator, $auth, $app->users());
|
|
$settingsController = new SettingsController($template, $translator, $auth, $app->migrator());
|
|
$authMiddleware = new AuthMiddleware($auth);
|
|
|
|
$router->get('/health', static fn (Request $request): Response => Response::json([
|
|
'status' => 'ok',
|
|
'app' => (string) $app->config('app.name', 'orderPRO'),
|
|
'timestamp' => date(DATE_ATOM),
|
|
]));
|
|
|
|
$router->get('/', static function (Request $request) use ($auth): Response {
|
|
return $auth->check()
|
|
? Response::redirect('/dashboard')
|
|
: Response::redirect('/login');
|
|
});
|
|
|
|
$router->get('/login', [$authController, 'showLogin']);
|
|
$router->post('/login', [$authController, 'login']);
|
|
$router->post('/logout', [$authController, 'logout'], [$authMiddleware]);
|
|
|
|
$router->get('/dashboard', static function (Request $request) use ($template, $auth, $translator): Response {
|
|
$user = $auth->user();
|
|
$html = $template->render('dashboard/index', [
|
|
'title' => $translator->get('dashboard.title'),
|
|
'activeMenu' => 'dashboard',
|
|
'user' => $user,
|
|
'csrfToken' => Csrf::token(),
|
|
], 'layouts/app');
|
|
|
|
return Response::html($html);
|
|
}, [$authMiddleware]);
|
|
|
|
$router->get('/users', [$usersController, 'index'], [$authMiddleware]);
|
|
$router->post('/users', [$usersController, 'store'], [$authMiddleware]);
|
|
$router->get('/settings/database', [$settingsController, 'database'], [$authMiddleware]);
|
|
$router->post('/settings/database/migrate', [$settingsController, 'migrate'], [$authMiddleware]);
|
|
};
|