src/Http/Admin/Security/AdminVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Http\Admin\Security;
  3. use App\Domain\Auth\Entity\User;
  4. use Symfony\Component\Security\Core\Security;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class AdminVoter extends Voter
  8. {
  9.     private $security;
  10.     public function __construct(
  11.         Security $security
  12.     )
  13.     {
  14.         $this->security $security;
  15.     }
  16.     protected function supports(string $attribute$subject)
  17.     {
  18.         if(is_null($attribute) || $attribute == '') return false;
  19.         if(strpos($attribute'ROLE_') !== false ) return false;
  20.         return true;
  21.     }
  22.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token)
  23.     {
  24.         $user $token->getUser();
  25.         if (!$user instanceof User) {
  26.             return false;
  27.         }
  28.         if($user->hasRole('ROLE_ADMIN') && $subject != 'only') return true;
  29.         $rights $user->getModulesRightSlug();
  30.         foreach($rights as $r) {
  31.             if($attribute == $r) return true;
  32.         }
  33.         return false;
  34.     }
  35. }