<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Security\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\HttpFoundation\RequestStack;
use App\Services\ManagerEntity\DroitsAccesManagers;
use Symfony\Component\Security\Core\Security;
/**
* Description of ProfilRepreneurVoter
*
* @author mehrez
*/
class DiagnosticRepreneurUserTestVoter extends Voter {
public const VIEW_OWN_PROFIL_REPRENEUR = 'ROLE_DIAGNOSTIC_REPRENEUR_USER_TEST';
private $requestStack;
/**
* Initialise le voter avec les dépendances nécessaires.
*
* @param Security $security Service de sécurité Symfony
* @param DroitsAccesManagers $dam Gestionnaire des droits d'accès aux services
* @param RequestStack $requestStack Pile des requêtes HTTP courantes
*/
public function __construct(Security $security, DroitsAccesManagers $dam, RequestStack $requestStack) {
$this->security = $security;
$this->dam = $dam;
$this->requestStack = $requestStack;
}
protected function supports(string $attribute, $subject): bool {
return $attribute === self::VIEW_OWN_PROFIL_REPRENEUR;
}
protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool {
$request = $this->requestStack->getCurrentRequest();
if (!$request || !$this->security->getUser()) {
return false;
}
try {
$acces = $this->dam->checkIfThisUserHasDroitService($this->security->getUser(), ["84"] );
return $acces;
} catch (\Exception $e) {
return false;
}
}
}