src/Security/Voter/PermissionVoter.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use Symfony\Component\HttpFoundation\RequestStack;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Security;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. class PermissionVoter extends Voter
  9. {
  10. public const EDIT = 'POST_EDIT';
  11. public const VIEW = 'POST_VIEW';
  12. private $session;
  13. private $security;
  14. private $requestStack;
  15. public function __construct(RequestStack $sessionInterface, Security $security)
  16. {
  17. $this->security = $security;
  18. // $this->session = $sessionInterface;
  19. $this->requestStack =$sessionInterface;
  20. $this->session = $this->requestStack->getSession();
  21. }
  22. protected function supports(string $attribute, $subject): bool
  23. {
  24. if (!$this->security->getUser() )
  25. return false;
  26. $permission = $this->session->get("PERMISSION");
  27. if ($this->security->getUser() && in_array("rlspad", $this->security->getUser()->getRoles()))
  28. return true;
  29. if (!$permission)
  30. $permission = array();
  31. return in_array($attribute, $permission);
  32. }
  33. protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool
  34. {
  35. $user = $token->getUser();
  36. if (!$user instanceof UserInterface) {
  37. return false;
  38. }
  39. return true;
  40. }
  41. }