src/Infrastructure/Security/UserVoter.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 UserVoter extends Voter
  8. {
  9. public const SHOW_PROFILE = 'SHOW_PROFILE';
  10. protected function supports(string $attribute, $subject): bool
  11. {
  12. return self::SHOW_PROFILE === $attribute;
  13. }
  14. protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool
  15. {
  16. $grantedUserTypes = [
  17. UserTypeEnum::TYPE_DIAGNOSTIQUEUR,
  18. UserTypeEnum::TYPE_ADMIN,
  19. ];
  20. $user = $token->getUser();
  21. if (!$user instanceof User) {
  22. return false;
  23. }
  24. return \in_array($user->getType(), $grantedUserTypes);
  25. }
  26. }