diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-10-25 18:53:05 +0200 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2019-06-12 10:24:02 +0200 |
commit | 6ed891fc0416e8025f929cf60a07b1020118b221 (patch) | |
tree | 17e6a0d312693838133cb8241320424b9c0fcd1e /src | |
parent | 2e51fbff9d8472a0e98af39aff52d30f0b67706b (diff) |
Added logout via AuthController
Diffstat (limited to 'src')
-rw-r--r-- | src/Controllers/AuthController.php | 36 | ||||
-rw-r--r-- | src/Http/Response.php | 23 | ||||
-rw-r--r-- | src/Http/UrlGeneratorServiceProvider.php | 1 | ||||
-rw-r--r-- | src/Middleware/LegacyMiddleware.php | 4 |
4 files changed, 60 insertions, 4 deletions
diff --git a/src/Controllers/AuthController.php b/src/Controllers/AuthController.php new file mode 100644 index 00000000..cdaee167 --- /dev/null +++ b/src/Controllers/AuthController.php @@ -0,0 +1,36 @@ +<?php + +namespace Engelsystem\Controllers; + +use Engelsystem\Http\Response; +use Engelsystem\Http\UrlGeneratorInterface; +use Symfony\Component\HttpFoundation\Session\SessionInterface; + +class AuthController extends BaseController +{ + /** @var Response */ + protected $response; + + /** @var SessionInterface */ + protected $session; + + /** @var UrlGeneratorInterface */ + protected $url; + + public function __construct(Response $response, SessionInterface $session, UrlGeneratorInterface $url) + { + $this->response = $response; + $this->session = $session; + $this->url = $url; + } + + /** + * @return Response + */ + public function logout() + { + $this->session->invalidate(); + + return $this->response->redirectTo($this->url->to('/')); + } +} diff --git a/src/Http/Response.php b/src/Http/Response.php index 58cd7662..1a7c8209 100644 --- a/src/Http/Response.php +++ b/src/Http/Response.php @@ -121,4 +121,27 @@ class Response extends SymfonyResponse implements ResponseInterface return $new; } + + /** + * Return an redirect instance + * + * This method retains the immutability of the message and returns + * an instance with the updated status and headers + * + * @param string $path + * @param int $status + * @param array $headers + * @return Response + */ + public function redirectTo($path, $status = 302, $headers = []) + { + $response = $this->withStatus($status); + $response = $response->withHeader('location', $path); + + foreach ($headers as $name => $value) { + $response = $response->withAddedHeader($name, $value); + } + + return $response; + } } diff --git a/src/Http/UrlGeneratorServiceProvider.php b/src/Http/UrlGeneratorServiceProvider.php index 9b9988aa..774e3e35 100644 --- a/src/Http/UrlGeneratorServiceProvider.php +++ b/src/Http/UrlGeneratorServiceProvider.php @@ -11,5 +11,6 @@ class UrlGeneratorServiceProvider extends ServiceProvider $urlGenerator = $this->app->make(UrlGenerator::class); $this->app->instance(UrlGenerator::class, $urlGenerator); $this->app->instance('http.urlGenerator', $urlGenerator); + $this->app->bind(UrlGeneratorInterface::class, UrlGenerator::class); } } diff --git a/src/Middleware/LegacyMiddleware.php b/src/Middleware/LegacyMiddleware.php index bd3987d2..af2c6a70 100644 --- a/src/Middleware/LegacyMiddleware.php +++ b/src/Middleware/LegacyMiddleware.php @@ -183,10 +183,6 @@ class LegacyMiddleware implements MiddlewareInterface $title = register_title(); $content = guest_register(); return [$title, $content]; - case 'logout': - $title = logout_title(); - $content = guest_logout(); - return [$title, $content]; case 'admin_questions': $title = admin_questions_title(); $content = admin_questions(); |