vendor/akyos/cms-bundle/Security/AccessVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace Akyos\CmsBundle\Security;
  3. use Akyos\CmsBundle\Repository\AdminAccessRepository;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Security;
  7. class AccessVoter extends Voter
  8. {
  9.     private Security $security;
  10.     private AdminAccessRepository $adminAccessRepository;
  11.     public function __construct(Security $securityAdminAccessRepository $adminAccessRepository)
  12.     {
  13.         $this->security $security;
  14.         $this->adminAccessRepository $adminAccessRepository;
  15.     }
  16.     protected function supports($attribute$subject): bool
  17.     {
  18.         return $this->adminAccessRepository->findOneBy(['slug' => $attribute]) && $this->security->getUser();
  19.     }
  20.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  21.     {
  22.         $role $this->adminAccessRepository->findOneBy(['slug' => $attribute]);
  23.         $r true;
  24.         if ($role) {
  25.             $authorizedRoles $role->getRoles();
  26.             if (!empty($authorizedRoles)) {
  27.                 $r false;
  28.                 foreach ($authorizedRoles as $authorizedRole) {
  29.                     if ($this->security->isGranted($authorizedRole)) {
  30.                         $r true;
  31.                         break;
  32.                     }
  33.                 }
  34.             }
  35.         }
  36.         return $r;
  37.     }
  38. }