src/Calendar/Voter/ConnectCalendarVoter.php line 13

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Harmonizely\Calendar\Voter;
  4. use Doctrine\Common\Collections\Collection;
  5. use Harmonizely\Model\CalendarAccountInterface;
  6. use Harmonizely\Model\User;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  9. final class ConnectCalendarVoter extends Voter
  10. {
  11.     public const CONNECT_CALENDAR 'connect_calendar';
  12.     protected function supports($attribute$subject)
  13.     {
  14.         if ($attribute !== self::CONNECT_CALENDAR) {
  15.             return false;
  16.         }
  17.         if (false === $subject instanceof User) {
  18.             return false;
  19.         }
  20.         return true;
  21.     }
  22.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  23.     {
  24.         /** @var User $subject */
  25.         /** @var CalendarAccountInterface[]|Collection $calendarAccounts */
  26.         $calendarAccounts $subject->getCalendarAccounts();
  27.         if ($calendarAccounts->isEmpty()) {
  28.             return true;
  29.         }
  30.         $calendarCount $calendarAccounts->count();
  31.         if ($calendarCount $subject->getSubscriptionCalendarsLimit()) {
  32.             return true;
  33.         }
  34.         return false;
  35.     }
  36. }