src/Security/SurveyFillEntryItemVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\User;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use App\Entity\SurveyFillEntryItem;
  7. class SurveyFillEntryItemVoter extends Voter
  8. {
  9.     const CREATE 'create';
  10.     const UPDATE 'update';
  11.     protected function supports(string $attribute$subject)
  12.     {
  13.         if (!in_array($attribute, [self::CREATEself::UPDATE])) {
  14.             return false;
  15.         }
  16.         if (!$subject instanceof SurveyFillEntryItem) {
  17.             return false;
  18.         }
  19.         return true;
  20.     }
  21.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token)
  22.     {
  23.         $user $token->getUser();
  24.         if (!$user instanceof User) {
  25.             // the user must be logged in; if not, deny access
  26.             return false;
  27.         }
  28.         /** @var SurveyFillEntryItem $surveyFillEntryItem */
  29.         $surveyFillEntryItem $subject;
  30.         switch ($attribute) {
  31.             case self::CREATE:
  32.             case self::UPDATE:
  33.                 return $this->canCreate($surveyFillEntryItem$user);
  34.         }
  35.     }
  36.     private function canCreate(SurveyFillEntryItem $surveyFillEntryItemUser $user)
  37.     {
  38.         return $surveyFillEntryItem->canUserCreate($user);
  39.     }
  40. }