src/EventSubscriber/RouteAccessSubscriber.php line 28
<?phpnamespace App\EventSubscriber;use App\Repository\DroitUserRepository;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\Security\Core\Security;class RouteAccessSubscriber implements EventSubscriberInterface{public function __construct(private Security $security, private DroitUserRepository $droitUserRepository){}public static function getSubscribedEvents(): array{return [KernelEvents::REQUEST => 'onKernelRequest',];}public function onKernelRequest(RequestEvent $event): void{// Get the current user$user = $this->security->getUser();if ($user) {// Get the current route name$currentRoute = $event->getRequest()->attributes->get('_route');;$defaultRoutes = ['resetuserPassword', 'app_firstpage', 'app_dashboard', 'my_profile', 'app_user_resetpasswordPerson','app_notification_full','app_getuser_currency_balance','app_ajax_getTranasctioDetail','app_ajax_filterCourseForRegistration','getPersonneDetails','studentdynamicSelect2Filter','studentAcitveSelect2Filter','studentdynamicFilter','app_user_activer_action_lie','app_user_ajouter_droit','app_fonction_activer_action_lie','app_fonction_ajouter_action','app_fees_audit','filterScoreboardStudentByDepartmentNlevel','showLecturerAttendance','getStudentInfo','saveStudentTempFiles','remove_courrier_file','apercuFichier','getfeeTypes','getAttendanceInfo','app_exams_delete','app_ajaxEditTempExamQuestion','app_ajaxSaveTempExamQuestion','app_scheduled_filter'];$assignedRoutes = array_merge($this->droitUserRepository->getAssignedRoutes($user), $defaultRoutes);// Allow only API routes and Super Admin have access to everythingif (substr($currentRoute, 0, 8) !== 'app_api_' && !in_array('ROLE_SUPER_ADMIN', $user->getRoles())) {if (!in_array('ROLE_AGENT', $user->getRoles()) || !in_array('ROLE_STUDENT', $user->getRoles()) || !in_array('ROLE_LECTURER', $user->getRoles())) {// dd($assignedRoutes);$blockAccess = in_array($currentRoute, $assignedRoutes) || $currentRoute === null;if ($blockAccess === false) {$response = new Response('No permission to access this page.', Response::HTTP_FORBIDDEN);$event->setResponse($response);}}}}}}