src/Security/UserVoter.php line 11

Open in your IDE?
  1. <?php 
  2. namespace App\Security;
  3. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  4. use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. use App\Entity\User;
  8. class UserVoter extends Voter
  9. {
  10.     const ACTIVE 'active';
  11.     /**
  12.      * @var AccessDecisionManagerInterface
  13.      */
  14.     private $decisionManager;
  15.     public function __construct(AccessDecisionManagerInterface $decisionManager)
  16.     {
  17.         $this->decisionManager $decisionManager;
  18.     }
  19.     protected function supports($attribute$subject): bool
  20.     {
  21.         if (!in_array($attribute, array(self::ACTIVE))) {
  22.             return false;
  23.         }
  24.         if (!$subject instanceof User) {
  25.             return false;
  26.         }
  27.         return true;
  28.     }
  29.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  30.     {
  31.         $user $token->getUser();
  32.         $actualUser $subject;
  33.         if (!$user instanceof UserInterface) {
  34.             return false;
  35.         }
  36.         switch ($attribute) {
  37.             case self::ACTIVE:
  38.                 if ($actualUser->isIsActive() && $actualUser->isIsAdminActive()){
  39.                     return true;
  40.                 }
  41.                 break;
  42.         }
  43.         return false;
  44.     }
  45. }