src/Tasks/Security/Voter/TaskVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Tasks\Security\Voter;
  3. use App\Core\Entity\User;
  4. use App\Tasks\Entity\Task;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  7. final class TaskVoter extends Voter
  8. {
  9.     const CHECK_TASK_ALLOWED_ISSUE 'check_task_allowed_issue';
  10.     /**
  11.      * {@inheritdoc}
  12.      */
  13.     public function supports(string $attribute$subject): bool
  14.     {
  15.         return $subject instanceof Task && in_array($attribute, [
  16.             self::CHECK_TASK_ALLOWED_ISSUE,
  17.         ]);
  18.     }
  19.     /**
  20.      * {@inheritdoc}
  21.      *
  22.      * @param Task $subject
  23.      */
  24.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  25.     {
  26.         $user $token->getUser();
  27.         if (!$user instanceof User) {
  28.             return false;
  29.         }
  30.         if ($attribute === self::CHECK_TASK_ALLOWED_ISSUE) {
  31.             return in_array($subject->getType(), [
  32.                 Task::TYPE_MILESTONE,
  33.                 Task::TYPE_OR,
  34.                 Task::TYPE_DOR,
  35.                 Task::TYPE_OC_ORR,
  36.                 Task::TYPE_OC_OTK,
  37.                 Task::TYPE_FDS,
  38.                 Task::TYPE_OC,
  39.                 Task::TYPE_OC_OSZ,
  40.                 Task::TYPE_OSZ,
  41.                 Task::TYPE_OC_TUNEL,
  42.             ]);
  43.         }
  44.         return false;
  45.     }
  46. }