vendor/symfony/security-core/Authorization/Voter/RoleHierarchyVoter.php line 25

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Security\Core\Authorization\Voter;
  11. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  12. use Symfony\Component\Security\Core\Role\Role;
  13. use Symfony\Component\Security\Core\Role\RoleHierarchy;
  14. use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
  15. /**
  16.  * RoleHierarchyVoter uses a RoleHierarchy to determine the roles granted to
  17.  * the user before voting.
  18.  *
  19.  * @author Fabien Potencier <fabien@symfony.com>
  20.  */
  21. class RoleHierarchyVoter extends RoleVoter
  22. {
  23.     private $roleHierarchy;
  24.     public function __construct(RoleHierarchyInterface $roleHierarchystring $prefix 'ROLE_')
  25.     {
  26.         if (!method_exists($roleHierarchy'getReachableRoleNames')) {
  27.             @trigger_error(sprintf('Not implementing the "%s::getReachableRoleNames()" method in "%s" is deprecated since Symfony 4.3.'RoleHierarchyInterface::class, \get_class($roleHierarchy)), \E_USER_DEPRECATED);
  28.         }
  29.         $this->roleHierarchy $roleHierarchy;
  30.         parent::__construct($prefix);
  31.     }
  32.     /**
  33.      * {@inheritdoc}
  34.      */
  35.     protected function extractRoles(TokenInterface $token)
  36.     {
  37.         if (method_exists($this->roleHierarchy'getReachableRoleNames')) {
  38.             if (method_exists($token'getRoleNames')) {
  39.                 $roles $token->getRoleNames();
  40.             } else {
  41.                 @trigger_error(sprintf('Not implementing the "%s::getRoleNames()" method in "%s" is deprecated since Symfony 4.3.'TokenInterface::class, \get_class($token)), \E_USER_DEPRECATED);
  42.                 $roles array_map(function (Role $role) { return $role->getRole(); }, $token->getRoles(false));
  43.             }
  44.             return $this->roleHierarchy->getReachableRoleNames($roles);
  45.         }
  46.         return $this->roleHierarchy->getReachableRoles($token->getRoles(false));
  47.     }
  48. }