src/Security/Voter/RouteRoleVoter.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Enum\RoleEnum;
  4. use App\Entity\RoleManagement;
  5. use App\Service\Routes\RoutesPermissions;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  9. class RouteRoleVoter extends Voter
  10. {
  11.     public function __construct(
  12.         private RequestStack $requestStack,
  13.         private RoutesPermissions $routesPermissions
  14.     ) {}
  15.     protected function supports(string $attributemixed $subject): bool
  16.     {
  17.         return in_array($attribute, [
  18.             RoleEnum::SUPER_ADMIN->value,
  19.             RoleEnum::REGULAR_ADMIN->value,
  20.             RoleEnum::STANDARD_USER->value,
  21.         ]);
  22.     }
  23.     protected function voteOnAttribute(string $attributemixed $subjectTokenInterface $token): bool
  24.     {
  25.         $user $token->getUser();
  26.         if (!$user) return false;
  27.         $request $this->requestStack->getCurrentRequest();
  28.         $routeName $request->attributes->get('_route');
  29.         return $this->routesPermissions->checkUserPermissionByRouteName($routeName);
  30.     }
  31. }