public function logout(Request $request)
{
$event = new AccessControlEvent($request);
/** @var Token $sessionAuth */
$sessionAuth = $this->session()->get('authentication');
$userName = $sessionAuth ? $sessionAuth->getToken()->getUsername() : false;
if ($userName) {
$this->app['logger.system']->info('Logged out: ' . $userName, ['event' => 'authentication']);
$event->setUserName($userName);
}
$this->app['dispatcher']->dispatch(AccessControlEvents::LOGOUT_SUCCESS, $event);
// Clear the session
$this->accessControl()->revokeSession();
$this->session()->invalidate(-1);
// Clear cookie data
$response = $this->redirectToRoute('login');
$response->headers->clearCookie($this->app['token.authentication.name'], $request->getBasePath(), $this->getOption('general/cookies_domain'), $this->getOption('general/enforce_ssl'));
return $response;
}