Add boilerplate code, Docker environment, Makefile etc.
This commit is contained in:
parent
1e9d351173
commit
114a67dbe4
21 changed files with 3766 additions and 0 deletions
41
src/Dependencies.php
Normal file
41
src/Dependencies.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MailAccountAdmin;
|
||||
|
||||
use DI\Container;
|
||||
use MailAccountAdmin\Login\LoginController;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Slim\Views\Twig;
|
||||
|
||||
class Dependencies
|
||||
{
|
||||
private const SETTINGS = 'settings';
|
||||
private const TWIG = 'view';
|
||||
private const TWIG_TEMPLATE_DIR = __DIR__ . '/../templates';
|
||||
|
||||
public static function createContainer(Settings $settings): Container
|
||||
{
|
||||
$container = new Container();
|
||||
|
||||
// App settings
|
||||
$container->set(self::SETTINGS, $settings);
|
||||
|
||||
// Twig template engine
|
||||
$container->set(self::TWIG, function (ContainerInterface $c) {
|
||||
/** @var Settings $settings */
|
||||
$settings = $c->get(self::SETTINGS);
|
||||
|
||||
return Twig::create(self::TWIG_TEMPLATE_DIR, $settings->getTwigSettings());
|
||||
});
|
||||
|
||||
// Login, registration, authentication
|
||||
$container->set(LoginController::class, function (ContainerInterface $c) {
|
||||
return new LoginController(
|
||||
$c->get(self::TWIG)
|
||||
);
|
||||
});
|
||||
|
||||
return $container;
|
||||
}
|
||||
}
|
||||
27
src/Login/LoginController.php
Normal file
27
src/Login/LoginController.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MailAccountAdmin\Login;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Slim\Views\Twig;
|
||||
|
||||
class LoginController
|
||||
{
|
||||
/** @var Twig */
|
||||
private $view;
|
||||
|
||||
public function __construct(Twig $view)
|
||||
{
|
||||
$this->view = $view;
|
||||
}
|
||||
|
||||
public function showLoginPage(Request $request, Response $response): Response
|
||||
{
|
||||
$renderData = [
|
||||
];
|
||||
|
||||
return $this->view->render($response, 'login.html', $renderData);
|
||||
}
|
||||
}
|
||||
15
src/Middlewares.php
Normal file
15
src/Middlewares.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MailAccountAdmin;
|
||||
|
||||
use Slim\App;
|
||||
use Slim\Views\TwigMiddleware;
|
||||
|
||||
class Middlewares
|
||||
{
|
||||
public static function setMiddlewares(App $app): void
|
||||
{
|
||||
$app->add(TwigMiddleware::createFromContainer($app));
|
||||
}
|
||||
}
|
||||
15
src/Routes.php
Normal file
15
src/Routes.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MailAccountAdmin;
|
||||
|
||||
use MailAccountAdmin\Login\LoginController;
|
||||
use Slim\App;
|
||||
|
||||
class Routes
|
||||
{
|
||||
public static function setRoutes(App $app): void
|
||||
{
|
||||
$app->get('/', LoginController::class . ':showLoginPage');
|
||||
}
|
||||
}
|
||||
16
src/Settings.php
Normal file
16
src/Settings.php
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MailAccountAdmin;
|
||||
|
||||
class Settings
|
||||
{
|
||||
public function getTwigSettings(): array
|
||||
{
|
||||
$cacheDir = getenv('TWIG_CACHE_DIR');
|
||||
|
||||
return [
|
||||
'cache' => !empty($cacheDir) ? $cacheDir : false,
|
||||
];
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue