src/Security/Voter/AnnonceVoter.php line 14

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author      Mehrez Labidi
  5.  */
  6. namespace App\Security\Voter;
  7. use App\Services\Annonces\SecurityAnnonce;
  8. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  9. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. class AnnonceVoter extends Voter
  12. {
  13.     public const VIEW_OWN_ANNONCE 'VIEW_OWN_ANNONCE';
  14.     
  15.     private $securityAnnonce;
  16.     private $requestStack;
  17.     public function __construct(SecurityAnnonce $securityAnnonceRequestStack $requestStack)
  18.     {
  19.         $this->securityAnnonce $securityAnnonce;
  20.         $this->requestStack $requestStack;
  21.     }
  22.     protected function supports(string $attribute$subject): bool
  23.     {
  24.         return $attribute === self::VIEW_OWN_ANNONCE;
  25.     }
  26.     protected function voteOnAttribute(string $attribute$subjectTokenInterface $token): bool
  27.     {
  28.         $request $this->requestStack->getCurrentRequest();
  29.         
  30.         if (!$request) {
  31.             return false;
  32.         }
  33.         $idAnnonce $request->attributes->get('id_annonce');
  34.         $typeRapprochement $request->attributes->get('type_raprochement');
  35.         try {
  36.             $this->securityAnnonce->annonceCurrentUser($idAnnonce$typeRapprochement);
  37.             return true;
  38.         } catch (\Exception $e) {
  39.             return false;
  40.         }
  41.     }
  42. }