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($subjectType, Training::class)
  19. || is_subclass_of($subjectType, Module::class)
  20. || is_subclass_of($subjectType, Lesson::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, $subject, TokenInterface $token): bool
  28. {
  29. return !$subject instanceof LockByInterface;
  30. }
  31. }