<?php
namespace App\EventListener;
use App\Enum\PermissionList;
use App\Service\CheckPermissionService;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Security;
use Twig\Environment;
class RequestListener
{
/**
* @var Security
*/
private $security;
/**
* @var Environment
*/
private $twig;
/**
* @var array
*/
private $spacesAccessList = [];
public function __construct(Security $security, Environment $twig)
{
$this->security = $security;
$this->twig = $twig;
}
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMasterRequest() || !$this->security->getUser()) {
return;
}
if (in_array('ROLE_SUPER_ADMIN', $this->security->getUser()->getRoles())){
$this->twig->addGlobal('access_list', PermissionList::getPermissionList());
return;
}
$checkPermissionService = new CheckPermissionService($this->security->getUser());
$checkPermissionService->check($event->getRequest()->getLocale());
$GLOBALS['spacesAccessList'] = $checkPermissionService->spacesAccessList;
$this->twig->addGlobal('access_list', $checkPermissionService->mainAccessRoles);
}
}