vendor/ibexa/rest/src/lib/Server/Security/RestLogoutHandler.php line 19

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. namespace Ibexa\Rest\Server\Security;
  7. use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  11. use Symfony\Component\Security\Http\Logout\LogoutHandlerInterface;
  12. /**
  13.  * Logout handler used by REST session based logout.
  14.  * It forces session cookie clearing.
  15.  */
  16. class RestLogoutHandler implements LogoutHandlerInterface
  17. {
  18.     /**
  19.      * @var \Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface
  20.      */
  21.     private $configResolver;
  22.     /**
  23.      * @param \Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface $configResolver
  24.      */
  25.     public function __construct(ConfigResolverInterface $configResolver)
  26.     {
  27.         $this->configResolver $configResolver;
  28.     }
  29.     /**
  30.      * @param \Symfony\Component\HttpFoundation\Request $request
  31.      * @param \Symfony\Component\HttpFoundation\Response $response
  32.      * @param \Symfony\Component\Security\Core\Authentication\Token\TokenInterface $token
  33.      */
  34.     public function logout(Request $requestResponse $responseTokenInterface $token)
  35.     {
  36.         if (!$request->attributes->get('is_rest_request')) {
  37.             return;
  38.         }
  39.         $path '/';
  40.         $domain null;
  41.         $session $this->configResolver->getParameter('session');
  42.         if (array_key_exists('cookie_domain'$session)) {
  43.             $domain $session['cookie_domain'];
  44.         }
  45.         if (array_key_exists('cookie_path'$session)) {
  46.             $path $session['cookie_path'];
  47.         }
  48.         $response->headers->clearCookie($request->getSession()->getName(), $path$domain);
  49.     }
  50. }
  51. class_alias(RestLogoutHandler::class, 'EzSystems\EzPlatformRest\Server\Security\RestLogoutHandler');