Use LogoutEvent listener instead of deprecated LogoutHandler.

This commit is contained in:
Jan Böhmer 2020-05-31 13:48:36 +02:00
parent 7f263e9916
commit d9c83d8bb2
3 changed files with 19 additions and 4 deletions

View file

@ -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%'

View file

@ -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
####################################################################################################################

View file

@ -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) {