src/Security/ExamFillEntryItemVoter.php line 11

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