![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/symfony/security-core/Authorization/Voter/ |
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <[email protected]> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Core\Authorization\Voter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; /** * RoleVoter votes if any attribute starts with a given prefix. * * @author Fabien Potencier <[email protected]> */ class RoleVoter implements CacheableVoterInterface { private $prefix; public function __construct(string $prefix = 'ROLE_') { $this->prefix = $prefix; } /** * {@inheritdoc} */ public function vote(TokenInterface $token, $subject, array $attributes) { $result = VoterInterface::ACCESS_ABSTAIN; $roles = $this->extractRoles($token); foreach ($attributes as $attribute) { if (!\is_string($attribute) || !str_starts_with($attribute, $this->prefix)) { continue; } if ('ROLE_PREVIOUS_ADMIN' === $attribute) { trigger_deprecation('symfony/security-core', '5.1', 'The ROLE_PREVIOUS_ADMIN role is deprecated and will be removed in version 6.0, use the IS_IMPERSONATOR attribute instead.'); } $result = VoterInterface::ACCESS_DENIED; foreach ($roles as $role) { if ($attribute === $role) { return VoterInterface::ACCESS_GRANTED; } } } return $result; } public function supportsAttribute(string $attribute): bool { return str_starts_with($attribute, $this->prefix); } public function supportsType(string $subjectType): bool { return true; } protected function extractRoles(TokenInterface $token) { return $token->getRoleNames(); } }