src/V4/Voters/OutlookSubscriptionConfigurationVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\V4\Voters;
  3. use App\Security\User;
  4. use LogicException;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class OutlookSubscriptionConfigurationVoter extends Voter
  8. {
  9.     const OUTLOOK_SUBSCRIPTION_CONFIGURATION_SHOW_LIST 'outlook_subscription_configuration_show_list';
  10.     const OUTLOOK_SUBSCRIPTION_CONFIGURATION_ADD_EDIT 'outlook_subscription_configuration_add_edit';
  11.     const OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_SHOW_LIST 'outlook_subscription_configuration_user_show_list';
  12.     const OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_ADD_EDIT 'outlook_subscription_configuration_user_add_edit';
  13.     /**
  14.      * @param $attribute
  15.      * @param $subject
  16.      *
  17.      * @return bool
  18.      */
  19.     protected function supports($attribute$subject): bool
  20.     {
  21.         return in_array($attribute, [
  22.             self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_SHOW_LIST,
  23.             self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_ADD_EDIT,
  24.             self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_SHOW_LIST,
  25.             self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_ADD_EDIT,
  26.         ], true);
  27.     }
  28.     /**
  29.      * @param $attribute
  30.      * @param $subject
  31.      * @param TokenInterface $token
  32.      *
  33.      * @return bool
  34.      *
  35.      * @throws LogicException
  36.      */
  37.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  38.     {
  39.         $user $token->getUser();
  40.         if (!$user instanceof User) {
  41.             return false;
  42.         }
  43.         switch ($attribute) {
  44.             case self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_SHOW_LIST:
  45.                 return $this->canOutlookSubscriptionConfigurationShowList($user);
  46.             case self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_ADD_EDIT:
  47.                 return $this->canOutlookSubscriptionConfigurationAddEdit($user);
  48.             case self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_SHOW_LIST:
  49.                 return $this->canOutlookSubscriptionConfigurationUserShowList($user);
  50.             case self::OUTLOOK_SUBSCRIPTION_CONFIGURATION_USER_ADD_EDIT:
  51.                 return $this->canOutlookSubscriptionConfigurationUserAddEdit($user);
  52.         }
  53.         throw new LogicException('This should never happen');
  54.     }
  55.     /**
  56.      * @param User $user
  57.      *
  58.      * @return bool
  59.      */
  60.     private function canOutlookSubscriptionConfigurationShowList(User $user): bool
  61.     {
  62.         return $user->isSuperAdmin();
  63.     }
  64.     /**
  65.      * @param User $user
  66.      *
  67.      * @return bool
  68.      */
  69.     private function canOutlookSubscriptionConfigurationAddEdit(User $user): bool
  70.     {
  71.         return $user->isSuperAdmin();
  72.     }
  73.     /**
  74.      * @param User $user
  75.      *
  76.      * @return bool
  77.      */
  78.     private function canOutlookSubscriptionConfigurationUserShowList(User $user): bool
  79.     {
  80.         return $user->isSuperAdmin();
  81.     }
  82.     /**
  83.      * @param User $user
  84.      *
  85.      * @return bool
  86.      */
  87.     private function canOutlookSubscriptionConfigurationUserAddEdit(User $user): bool
  88.     {
  89.         return $user->isSuperAdmin();
  90.     }
  91. }