gruby refaktor otyły panie

This commit is contained in:
Sebastian Molenda
2026-05-13 22:43:29 +02:00
parent 0b23946116
commit 0e62b61188
2553 changed files with 0 additions and 532195 deletions
+41
View File
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
use App\Application\Settings\SettingsInterface;
use DI\ContainerBuilder;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Monolog\Processor\UidProcessor;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
return function (ContainerBuilder $containerBuilder) {
$containerBuilder->addDefinitions([
LoggerInterface::class => function (ContainerInterface $c) {
$settings = $c->get(SettingsInterface::class);
$loggerSettings = $settings->get('logger');
$logger = new Logger($loggerSettings['name']);
$processor = new UidProcessor();
$logger->pushProcessor($processor);
$handler = new StreamHandler($loggerSettings['path'], $loggerSettings['level']);
$logger->pushHandler($handler);
return $logger;
},
PDO::class => function () {
$dbPath = __DIR__ . '/../data.sqlite3';
$pdo = new PDO('sqlite:' . $dbPath);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
},
\Twig\Environment::class => function () {
$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../templates');
return new \Twig\Environment($loader);
},
\App\Application\Services\BlogProvider::class => \DI\autowire(\App\Application\Services\BlogProvider::class),
]);
};
+10
View File
@@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
use App\Application\Middleware\SessionMiddleware;
use Slim\App;
return function (App $app) {
$app->add(SessionMiddleware::class);
};
+14
View File
@@ -0,0 +1,14 @@
<?php
declare(strict_types=1);
use App\Domain\User\UserRepository;
use App\Infrastructure\Persistence\User\InMemoryUserRepository;
use DI\ContainerBuilder;
return function (ContainerBuilder $containerBuilder) {
// Here we map our UserRepository interface to its in memory implementation
$containerBuilder->addDefinitions([
UserRepository::class => \DI\autowire(InMemoryUserRepository::class),
]);
};
+45
View File
@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
use App\Application\Actions\User\ListUsersAction;
use App\Application\Actions\User\ViewUserAction;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\App;
use Slim\Interfaces\RouteCollectorProxyInterface as Group;
return function (App $app) {
$app->options('/{routes:.*}', function (Request $request, Response $response) {
// CORS Pre-Flight OPTIONS Request Handler
return $response;
});
$app->get('/', \App\Application\Actions\IndexAction::class);
$app->group('/users', function (Group $group) {
$group->get('', ListUsersAction::class);
$group->get('/{id}', ViewUserAction::class);
});
$app->get('/content', \App\Application\Actions\Content\AllContentsAction::class);
$app->get('/content/{key}', \App\Application\Actions\Content\ContentAction::class);
$app->get('/blog', \App\Application\Actions\BlogIndexAction::class);
$app->get('/blog/{stub}', \App\Application\Actions\BlogPostAction::class);
// Admin login/logout routes
$app->map(['GET', 'POST'], '/admin/login', \App\Application\Actions\Admin\AdminController::class . ':login');
$app->get('/admin/logout', \App\Application\Actions\Admin\AdminController::class . ':logout');
// Protected admin area
$app->group('/admin', function (Group $group) {
$group->get('', \App\Application\Actions\Admin\DashboardAction::class);
$group->get('/blog-visits', \App\Application\Actions\Admin\BlogVisitsAction::class);
$group->get('/contents', \App\Application\Actions\Content\ContentCrudAction::class . ':list');
$group->get('/access-logs', \App\Application\Actions\Admin\AccessLogsAction::class);
$group->map(['GET', 'POST'], '/contents/create', \App\Application\Actions\Content\ContentCrudAction::class . ':create');
$group->map(['GET', 'POST'], '/contents/edit/{id}', \App\Application\Actions\Content\ContentCrudAction::class . ':edit');
$group->get('/contents/delete/{id}', \App\Application\Actions\Content\ContentCrudAction::class . ':delete');
})->add(\App\Application\Middleware\AdminAuthMiddleware::class);
};
+27
View File
@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
use App\Application\Settings\Settings;
use App\Application\Settings\SettingsInterface;
use DI\ContainerBuilder;
use Monolog\Logger;
return function (ContainerBuilder $containerBuilder) {
// Global Settings Object
$containerBuilder->addDefinitions([
SettingsInterface::class => function () {
return new Settings([
'displayErrorDetails' => true, // Should be set to false in production
'logError' => false,
'logErrorDetails' => false,
'logger' => [
'name' => 'slim-app',
'path' => isset($_ENV['docker']) ? 'php://stdout' : __DIR__ . '/../logs/app.log',
'level' => Logger::DEBUG,
],
]);
}
]);
};