src/Tasks/Security/Voter/WECertificationVoter.php line 11

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 App\Tasks\WECertification\Consts\AllowedObjectsConst;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. final class WECertificationVoter extends Voter
  9. {
  10.     const IS_TASK_WE_CERTIFICATION 'is_task_we_certification';
  11.     const IS_WE_CERTIFICATION_ALLOWED_OBJECT 'is_we_certification_allowed_object';
  12.     /**
  13.      * {@inheritdoc}
  14.      */
  15.     public function supports(string $attribute$subject): bool
  16.     {
  17.         return $subject instanceof Task && in_array($attribute, [
  18.             self::IS_TASK_WE_CERTIFICATION,
  19.             self::IS_WE_CERTIFICATION_ALLOWED_OBJECT,
  20.         ]);
  21.     }
  22.     /**
  23.      * {@inheritdoc}
  24.      *
  25.      * @param Task $subject
  26.      */
  27.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  28.     {
  29.         $user $token->getUser();
  30.         if (!$user instanceof User) {
  31.             return false;
  32.         }
  33.         if ($attribute === self::IS_TASK_WE_CERTIFICATION) {
  34.             return $subject->getType() === Task::TYPE_CERTYFIKACJA_WE;
  35.         }
  36.         if ($attribute === self::IS_WE_CERTIFICATION_ALLOWED_OBJECT) {
  37.             return in_array($subject->getType(), AllowedObjectsConst::ALLOWEDtrue);
  38.         }
  39.         return false;
  40.     }
  41. }