src/Security/Voter/CoordinatorVoter.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Account\User;
  4. use App\Entity\Channel\Channel;
  5. use App\Entity\ChannelUserData\ChannelUserData;
  6. use App\Service\Account\UserService;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  9. class CoordinatorVoter implements VoterInterface
  10. {
  11.     public function __construct(
  12.         private UserService $userService,
  13.     ) {}
  14.     public function vote(TokenInterface $token$subject, array $attributes): int
  15.     {
  16.         if (!in_array('NIM_COORDINATOR'$attributes)) {
  17.             return VoterInterface::ACCESS_ABSTAIN;
  18.         }
  19.         /** @var User $user */
  20.         $user $token->getUser();
  21.         if (!$subject instanceof Channel) {
  22.             return VoterInterface::ACCESS_ABSTAIN;
  23.         }
  24.         return $this->userService->isCoordinator($user$subject);
  25.     }
  26. }