<?php
/**
* Request Listener check is active user
*
* @package RMCS
* @author Vlad Shashkov <vlad.s@zimalab.com>
* @copyright 2014 - 2019 The Zimalab
*/
declare(strict_types=1);
namespace App\EventListener;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
class RequestListener
{
/**
* @var TokenStorageInterface
*/
private $storage;
/**
* RequestListener constructor.
* @param TokenStorageInterface $storage
*/
public function __construct(TokenStorageInterface $storage)
{
$this->storage = $storage;
}
/**
* Listener AuthenticationSuccessEvent
*
* @return void
*/
public function onAuthenticationSuccess():void
{
$this->isActiveUser();
}
/**
* Listener Request
*
* @return void
*/
public function onRequest():void
{
$this->isActiveUser();
}
/**
* Access denied not active user
*
* @return void
*/
private function isActiveUser():void
{
$token = $this->storage->getToken();
if (method_exists($token, 'getUser') &&
$token->getUser() !== 'anon.' &&
!$token->getUser()->isStatus()) {
throw new AuthenticationException('Your account not active');
}
}
}