src/Security/Voter/Scholar/Manager/LockContentVoter.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter\Scholar\Manager;
  3. use App\Entity\Channel\LockByInterface;
  4. use App\Entity\Scholar\Lesson\Lesson;
  5. use App\Entity\Scholar\Module\Module;
  6. use App\Entity\Scholar\Training\Training;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  9. class LockContentVoter extends Voter
  10. {
  11.     const IS_NOT_LOCKED 'IS_NOT_LOCKED';
  12.     public function supportsAttribute(string $attribute): bool
  13.     {
  14.         return $attribute === self::IS_NOT_LOCKED;
  15.     }
  16.     public function supportsType(string $subjectType): bool
  17.     {
  18.         return is_subclass_of($subjectTypeTraining::class)
  19.                 || is_subclass_of($subjectTypeModule::class)
  20.                 || is_subclass_of($subjectTypeLesson::class)
  21.             ;
  22.     }
  23.     protected function supports(string $attribute$subject): bool
  24.     {
  25.         return $this->supportsAttribute($attribute) && $this->supportsType($subject::class);
  26.     }
  27.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  28.     {
  29.         return !$subject instanceof LockByInterface;
  30.     }
  31. }