src/Offer/Security/OfferDraft/Voter.php line 27
<?phpdeclare(strict_types=1);/*** Copyright (c) 2021 TECLA Consulting Group oü.* All rights reserved.** This unpublished material is proprietary to TECLA Consulting Group oü.* All rights reserved. The methods and* techniques described herein are considered trade secrets* and/or confidential. Reproduction or distribution, in whole* or in part, is forbidden except by express written permission* of TECLA Consulting Group oü.** @author Matúš Sýkorjak <matus@tecla.no>* @copyright 2021 TECLA Consulting Group oü*/namespace App\Offer\Security\OfferDraft;use App\Offer\Model\OfferDraftInterface;use LogicException;use Symfony\Component\DependencyInjection\ServiceLocator;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Authorization\Voter\Voter as BaseVoter;final class Voter extends BaseVoter{private ServiceLocator $permissions;public function __construct(ServiceLocator $permissions){$this->permissions = $permissions;}protected function supports(string $attribute, $subject): bool{return $this->permissions->has($attribute) && (null === $subject || (true === $subject instanceof OfferDraftInterface));}protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool{/** @var ?OfferDraftInterface $offerDraft */$offerDraft = $subject;/** @var PermissionInterface $permission */$permission = ($this->permissions)($attribute);if (null !== $permission) {return $permission->isGranted($offerDraft);}throw new LogicException('This code should not be reached!');}}