src/CalendarAccount/Voter/CanAccessCalendarAccountVoter.php line 12

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Harmonizely\CalendarAccount\Voter;
  4. use Harmonizely\Model\CalendarAccountInterface;
  5. use Harmonizely\Model\UserInterface;
  6. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  7. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  8. final class CanAccessCalendarAccountVoter extends Voter
  9. {
  10.     public const ACCESS 'access';
  11.     protected function supports($attribute$subject): bool
  12.     {
  13.         if (self::ACCESS !== $attribute) {
  14.             return false;
  15.         }
  16.         if (false === $subject instanceof CalendarAccountInterface) {
  17.             return false;
  18.         }
  19.         return true;
  20.     }
  21.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  22.     {
  23.         /** @var UserInterface $loggedInUser */
  24.         $loggedInUser $token->getUser();
  25.         if (!$loggedInUser instanceof UserInterface) {
  26.             return false;
  27.         }
  28.         /** @var CalendarAccountInterface $subject */
  29.         $calendarAccountUser $subject->getUser();
  30.         return $loggedInUser->getId() === $calendarAccountUser->getId();
  31.     }
  32. }