- Added a new Email defintion (which will soon see it's components changed)

- Added a new post-install script for composer which adds a project skeleton "ready to use".
- Error 500 are now handled properly in production; waiting to see if adjustements will be required before adding other code pages.
This commit is contained in:
mcndave committed 2021-03-01 16:01:27 +00:00
1 parent 09b3e47c19
commit 01bb926ca7
30 files changed
+887 -2

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
<?php
use function DI\autowire, DI\create, DI\get;
use %NAMESPACE%\Entity;
use Ulmus\Entity\Field\Datetime,
Ulmus\User\Lib\Authenticate;
use Storage\{ Session, Cookie };
use Laminas\Diactoros\Response\{ RedirectResponse, HtmlResponse };
use Notes\Security\SecurityHandler;
use Picea\Picea;
use TheBugs\Email\{ EmailConfiguration, MailerInterface, SwiftMailer };
return [
Entity\User::class => autowire(Entity\User::class),
Authenticate::class => create(Authenticate::class)->constructor(get(Session::class), get(Cookie::class), get('authentication.method')),
SecurityHandler::class => create(SecurityHandler::class)->constructor(function() {
return new RedirectResponse(getenv("URL_BASE")."/connexion");
}),
'authentication.error' => function($c, Picea $picea) {
return function($message) use ($picea) {
return new HtmlResponse($picea->renderHtml('lean/error/500', [
'title' => "",
'subtitle' => "",
'message' => $message,
]));
};
},
EmailConfiguration::class => function($c) {
$email = new EmailConfiguration( EmailConfiguration::AUTH_TYPE_SMTP );
$email->smtpHost = getenv('SMTP_HOST');
$email->smtpPort = getenv('SMTP_PORT');
$email->smtpUsername = getenv('SMTP_USERNAME');
$email->smtpPassword = getenv('SMTP_PASSWORD');
$email->smtpUseTLS = getenv('SMTP_TLS');
$email->toAddress = getenv("TO_EMAIL");
$email->fromAddress = getenv("FROM_EMAIL");
$email->fromName = getenv("FROM_NAME");
return $email;
},
];
+36
View File
@@ -0,0 +1,36 @@
<?php
use function DI\autowire, DI\create, DI\get;
$dir = getenv("META_PATH") . "/definitions";
return array_merge(
Lean\Lean::definitions(),
Lean\Console\Lean::definitions(),
[
'%APPKEY%' => [
'picea' => [
'context' => "%ESCAPED_NAMESPACE%\\View",
'extensions' => [
],
],
'ulmus' => [
'entities' => [ '%ESCAPED_NAMESPACE%\\Entity' => getenv("PROJECT_PATH") . '/src/Entity/' ],
],
'routes' => [
'%ESCAPED_NAMESPACE%\\Controller' => getenv("PROJECT_PATH") . '/src/Controller/',
],
],
],
require("$dir/auth.php"),
require("$dir/storage.php"),
require("$dir/env/" . getenv('APP_ENV') . ".php"),
[ 'config' => function () { return require(getenv("META_PATH")."/config.php"); } ]
);
+14
View File
@@ -0,0 +1,14 @@
<?php
use function DI\create, DI\autowire, DI\get;
use Dump\DumpMiddleware;
if ($_GET['sql'] ?? false) {
\Ulmus\Common\PdoObject::$dump = "dump";
}
return [
"dump" => create(DumpMiddleware::class),
"errorHandler" => create(Middlewares\Whoops::class),
];
+42
View File
@@ -0,0 +1,42 @@
<?php
use Picea\Picea;
use CSLSJ\Debogueur\DebogueurMiddleware;
use Laminas\Diactoros\Response\HtmlResponse;
use Psr\Http\Server\MiddlewareInterface,
Psr\Http\Message\ServerRequestInterface,
Psr\Http\Server\RequestHandlerInterface,
Psr\Http\Message\ResponseInterface;
use function DI\{ create, get, autowire };
error_reporting(getenv('ERROR_REPORTING') ?: ( E_ALL & ~E_USER_DEPRECATED & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE ));
return [
/* do nothing in production !*/
"dump" => function($c) {
if (! function_exists('dump') ) {
function dump(...$what) {}
}
return new class implements MiddlewareInterface {
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface { return $handler->handle($request); }
};
},
"errorHandler" => create(DebogueurMiddleware::class)->constructor(getenv('DEBOGUEUR_HASH') ?: "", null, get('app.errorhandler.html')),
'app.errorhandler.html' => function($c, Picea $picea) {
return function(\Throwable $exception) use ($picea) {
return new HtmlResponse($picea->renderHtml('lean/error/500', [
'title' => "Une erreur s'est produite lors de l'exécution du script.",
'subtitle' => "Êtes-vous connecté avec le bon compte ?",
'message' => $exception->getMessage(),
'exception' => $exception,
]));
};
},
];
+25
View File
@@ -0,0 +1,25 @@
<?php
use Psr\Container\ContainerInterface;
use Ulmus\ConnectionAdapter,
Ulmus\Container\AdapterProxy;
use LdapRecord\Connection;
return [
ConnectionAdapter::class => function($c) {
$adapter = new ConnectionAdapter('default', $c->get('config')['ulmus'], true);
$adapter->resolveConfiguration();
$adapter->connect();
return $adapter;
},
AdapterProxy::class => function (ContainerInterface $c) {
return new AdapterProxy(
$c->get(ConnectionAdapter::class)
);
}
];