diff --git a/app/dependencies.php b/app/dependencies.php index af8caff18569ad73bc5d4a82f1c9e2a43ae3cb24..70ef431be672c1eeaf3f4615ee93a2cba0d60538 100644 --- a/app/dependencies.php +++ b/app/dependencies.php @@ -13,6 +13,7 @@ use Doctrine\ORM\EntityManager; use Doctrine\ORM\Mapping\Driver\AnnotationDriver; use Doctrine\ORM\Tools\Setup; use Slim\Views\Twig; +use Slim\Flash\Messages; return function (ContainerBuilder $containerBuilder) { @@ -73,8 +74,9 @@ return function (ContainerBuilder $containerBuilder) { return $twig; }, - - + Messages::class => function (ContainerInterface $container) { + return new Messages(); + } ] ); }; diff --git a/app/routes.php b/app/routes.php index cf62c0db6cd56728a0452bee0bae1887ab98387d..3ebf2cafb8717118ad5a2458bcdb710e73a6031f 100644 --- a/app/routes.php +++ b/app/routes.php @@ -23,6 +23,7 @@ use Slim\App; use Slim\Interfaces\RouteCollectorProxyInterface as Group; use Slim\Views\Twig; +use Slim\Flash\Messages; return function (App $app) { @@ -43,13 +44,24 @@ return function (App $app) { } ); - $app->get('/login', function (Request $request, Response $response) { - return $this->get(Twig::class)->render($response, "/user/log_in.twig", []); + $app->get('/map', function (Request $request, Response $response) { + return $this->get(Twig::class)->render($response, "/map/map.twig", []); } ); - $app->get('/map', function (Request $request, Response $response) { - return $this->get(Twig::class)->render($response, "/map/map.twig", []); + $app->group('/login', function (Group $group) { + $group->get('', function(Request $request, Response $response){ + if (isset($_SESSION['userId'])) { + return $response + ->withHeader('Location', '/account') + ->withStatus(302); + } + + $message = $this->get(Messages::class)->getFirstMessage('creation'); + + return $this->get(Twig::class)->render($response, "/user/log_in.twig", ["message" => $message]); + }); + $group->post('', LogInUserAction::class); } ); diff --git a/composer.json b/composer.json index ff1f2d0e3b7a69c637c8c2cb4be2c9f111239b91..c5e9a9c112138e09e6c44af905d95a36611504df 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "doctrine/orm": "^2.7", "monolog/monolog": "^2.1", "php-di/php-di": "^6.2", + "slim/flash": "^0.4.0", "slim/psr7": "^1.1", "slim/slim": "^4.5", "slim/twig-view": "^3.1", diff --git a/composer.lock b/composer.lock index d6dcc8a4ca727365c979eea6e10b9b255907a7d8..010db60d4cc1e95b94cdde14ac993e9e74cd9258 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7387974bdd21dd35717da3f375d6af23", + "content-hash": "f987a2008db776ca427aaa7be93e9c2b", "packages": [ { "name": "doctrine/annotations", @@ -1849,6 +1849,54 @@ "description": "A polyfill for getallheaders.", "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "slim/flash", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Flash.git", + "reference": "9aaff5fded3b54f4e519ec3d4ac74d3d1f2cbbbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Flash/zipball/9aaff5fded3b54f4e519ec3d4ac74d3d1f2cbbbc", + "reference": "9aaff5fded3b54f4e519ec3d4ac74d3d1f2cbbbc", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Flash\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework Flash message service provider", + "homepage": "http://slimframework.com", + "keywords": [ + "flash", + "framework", + "message", + "provider", + "slim" + ], + "time": "2017-10-22T10:35:05+00:00" + }, { "name": "slim/psr7", "version": "1.2.0", diff --git a/src/Application/Actions/User/CreateUserAction.php b/src/Application/Actions/User/CreateUserAction.php index 62ec546234455e4f2d56500e46e614955eb7b9fd..7320d26b8ca7f6010ed31efa11b9c3c0e79a2ab0 100755 --- a/src/Application/Actions/User/CreateUserAction.php +++ b/src/Application/Actions/User/CreateUserAction.php @@ -52,10 +52,10 @@ class CreateUserAction extends UserAction $this->logger->info("User has been created."); - return $this->twig->render( - $this->response, "/user/user_profile.twig", - ["user" => $user, "id" => $user->getId()] - ); + $this->flash->addMessage('creation', 'Your account has been created. Please log in.'); + return $this->response + ->withHeader('Location', '/login') + ->withStatus(302); } /** diff --git a/src/Application/Actions/User/UserAction.php b/src/Application/Actions/User/UserAction.php index 153c815e270064765cf131bce8d7b2ccf593c756..ff9ba238c4620d3174c76cfd8493a8564201618f 100755 --- a/src/Application/Actions/User/UserAction.php +++ b/src/Application/Actions/User/UserAction.php @@ -7,6 +7,7 @@ use App\Application\Actions\Action; use Psr\Log\LoggerInterface; use Doctrine\ORM\EntityManager; use Slim\Views\Twig; +use Slim\Flash\Messages; abstract class UserAction extends Action { @@ -19,11 +20,12 @@ abstract class UserAction extends Action * @param LoggerInterface $logger * @param UserRepository $userRepository */ - public function __construct(LoggerInterface $logger, EntityManager $em, Twig $twig) + public function __construct(LoggerInterface $logger, EntityManager $em, Twig $twig, Messages $flash) { parent::__construct($logger); $this->userRepository = $em->getRepository('App\Domain\User\User'); $this->em = $em; + $this->flash = $flash; $this->twig = $twig; diff --git a/src/Application/Middleware/SessionMiddleware.php b/src/Application/Middleware/SessionMiddleware.php index cbfc1d6ed17a13e78b60d6c9bdcb42f36fd01692..4623d7f7b644d022c2f187510e4073df91dd0b73 100755 --- a/src/Application/Middleware/SessionMiddleware.php +++ b/src/Application/Middleware/SessionMiddleware.php @@ -15,10 +15,8 @@ class SessionMiddleware implements Middleware */ public function process(Request $request, RequestHandler $handler): Response { - if (isset($_SERVER['HTTP_AUTHORIZATION'])) { - session_start(); - $request = $request->withAttribute('session', $_SESSION); - } + session_start(); + $request = $request->withAttribute('session', $_SESSION); return $handler->handle($request); } diff --git a/templates/common/layout.twig b/templates/common/layout.twig index caeec15a6398ab0a2c14113264c5abae65ede978..221c349ada553220723a6cb888561b3602e345db 100644 --- a/templates/common/layout.twig +++ b/templates/common/layout.twig @@ -40,6 +40,11 @@ </div> {% endblock %} <div class="content"> + {% if message %} + <div class="ui message"> + {{message}} + </div> + {% endif %} {% block content %} {% endblock %} </div> {% block footer %}