src/Infrastructure/Security/AdministrationVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Infrastructure\Security;
  3. use App\Domain\Common\Entity\User;
  4. use App\Domain\Common\Enum\UserTypeEnum;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class AdministrationVoter extends Voter
  8. {
  9. public const SHOW_ADMINISTRATION = 'SHOW_ADMINISTRATION';
  10. protected function supports(string $attribute, $subject): bool
  11. {
  12. return self::SHOW_ADMINISTRATION === $attribute;
  13. }
  14. protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool
  15. {
  16. $grantedUserTypes = [
  17. UserTypeEnum::TYPE_ADMIN,
  18. ];
  19. $user = $token->getUser();
  20. if (!$user instanceof User) {
  21. return false;
  22. }
  23. return \in_array($user->getType(), $grantedUserTypes);
  24. }
  25. }