src/Security/Contract/ContractAccessControlVoter.php line 12
<?phpnamespace App\Security\Contract;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Authorization\Voter\Voter;/*** Class ContractAccessControlVoter* @package App\Security\Contract*/class ContractAccessControlVoter extends Voter{/*** @param string $attribute* @param mixed $subject* @return bool*/public function supports(string $attribute, mixed $subject) :bool{if ($attribute === 'contract_access_control_contract') {return true;}return false;}/*** @param string $attribute* @param mixed $subject* @param TokenInterface $token* @return bool*/protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token) :bool{/*** @var int|bool $institutionId* Vraća id od trenutnog operatera*/$requester = $subject->getReference();/*** Vraća id o trenutnog korisnika*/$requesterCity = $subject->getCity()->getId();/*** Prijavljeni korisnik*/$user = $token->getUser();// Provjera jel je korisnik uopče logiranif ((int)$requester && (int)$requesterCity && is_object($user)) {// Provjera jel je korisnikov trenutni operater isti kao operater od tog ugovoraif ((int)$requesterCity === $user->getCity()->getId()) {// Provjera kreatora ugovora jel isti kao trenutno logirani korisnik ($requester)if ((int)$requester === $user->getReference())return true;}}return false;}}