diff --git a/config/packages/security.yaml b/config/packages/security.yaml index c8e61f87..cd50fc96 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -16,7 +16,8 @@ security: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: - anonymous: lazy + anonymous: true + lazy: true user_checker: App\Security\UserChecker two_factor: @@ -40,7 +41,6 @@ security: logout: path: logout target: homepage - handlers: [App\EventSubscriber\LogSystem\LogoutLoggerHandler] remember_me: secret: '%kernel.secret%' diff --git a/config/services.yaml b/config/services.yaml index d750587c..e5e2a52d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -78,6 +78,12 @@ services: $allow_attachments_downloads: '%partdb.attachments.allow_downloads%' $mimeTypes: '@mime_types' + App\EventSubscriber\LogSystem\LogoutLoggerListener: + tags: + - name: 'kernel.event_listener' + event: 'Symfony\Component\Security\Http\Event\LogoutEvent' + dispatcher: security.event_dispatcher.main + #################################################################################################################### # Attachment system #################################################################################################################### diff --git a/src/EventSubscriber/LogSystem/LogoutLoggerHandler.php b/src/EventSubscriber/LogSystem/LogoutLoggerListener.php similarity index 90% rename from src/EventSubscriber/LogSystem/LogoutLoggerHandler.php rename to src/EventSubscriber/LogSystem/LogoutLoggerListener.php index 260f3f6f..765b314f 100644 --- a/src/EventSubscriber/LogSystem/LogoutLoggerHandler.php +++ b/src/EventSubscriber/LogSystem/LogoutLoggerListener.php @@ -48,12 +48,13 @@ use App\Services\LogSystem\EventLogger; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +use Symfony\Component\Security\Http\Event\LogoutEvent; use Symfony\Component\Security\Http\Logout\LogoutHandlerInterface; /** * This handler logs to event log, if a user logs out. */ -class LogoutLoggerHandler implements LogoutHandlerInterface +class LogoutLoggerListener { protected $logger; protected $gpdr_compliance; @@ -64,8 +65,16 @@ class LogoutLoggerHandler implements LogoutHandlerInterface $this->gpdr_compliance = $gpdr_compliance; } - public function logout(Request $request, Response $response, TokenInterface $token): void + + public function __invoke(LogoutEvent $event) { + $request = $event->getRequest(); + $token = $event->getToken(); + + if ($token === null) { + return; + } + $log = new UserLogoutLogEntry($request->getClientIp(), $this->gpdr_compliance); $user = $token->getUser(); if ($user instanceof User) {