При включенном автоматическом подключении вы также можете напрямую внедрить объект RoleHierarchy
, заполненный глобальной иерархией ролей.
Просто введите RoleHierarchyInterface
в свой контроллер или службу, используя внедрение зависимостей :
use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
public function __construct(RoleHierarchyInterface $roleHierarchy)
{
$this->roleHierarchy = $roleHierarchy;
}
Примечание: Это также позволяет вам вызывать getReachableRoles()
для объекта RoleHierarchy
, что может быть полезно в вашем случае:
use Symfony\Component\Security\Core\Role\Role;
$this->roleHierarchy->getReachableRoles([new Role('ROLE_USER')])
Начиная с Symfony4, вы должны добавить псевдоним для security.role_hierarchy
в вашем config/services.yml
, добавив следующую строку:
services:
# creating alias for RoleHierarchyInterface
Symfony\Component\Security\Core\Role\RoleHierarchyInterface: '@security.role_hierarchy'