src/Infrastructure/Security/Voter/SwitchToClientVoter.php line 13

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Infrastructure\Security\Voter;
  4. use App\Domain\Common\Entity\IzOrderClient;
  5. use App\Domain\Common\Entity\UserAdmin;
  6. use App\Domain\Common\Entity\UserAgent;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  9. final class SwitchToClientVoter extends Voter
  10. {
  11.     protected function supports(string $attribute$subject): bool
  12.     {
  13.         return 'CAN_SWITCH_USER' === $attribute && $subject instanceof IzOrderClient;
  14.     }
  15.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  16.     {
  17.         $user $token->getUser();
  18.         if ($user instanceof UserAdmin) {
  19.             return true;
  20.         }
  21.         if ($user instanceof UserAgent) {
  22.             return $subject->getAgent() === $user;
  23.         }
  24.         return false;
  25.     }
  26. }