Параметры доступа Symfony в parameters.yml от объекта User - PullRequest
0 голосов
/ 08 июня 2018

Я объявил свои роли с параметрами .yml, и я хочу получить к ним доступ из своего объекта User для функции getRoles (из UserInterface https://api.symfony.com/3.4/Symfony/Component/Security/Core/User/UserInterface.html#method_getRoles).

role_global_admin: ROLE_GLOBAL_ADMIN
role_admin: ROLE_ADMIN
role_manager: ROLE_MANAGER

Я хотел получить доступмои параметры благодаря определению сервиса, но я узнал, что это строго запрещено в symfony (для сущностей).У сущностей не должно быть зависимостей.

User.php

/**
 * Returns the roles granted to the user.
 *
 * @return (Role|string)[] The user roles
 */
public function getRoles()
{
    if (true === $this->isGlobalAdminRole()) {
        return ['ROLE_GLOBAL_ADMIN'];
    }

    return null == $this->getSymfonyOrganigramRole() ? ['ROLE_MANAGER'] : [$this->getSymfonyOrganigramRole()];
}

Я хочу получить доступ к параметру role_global_admin, например, а не к его значению напрямую.getRoles () выполняется автоматически во время соединения, чтобы дать пользователю роль.

Как этого добиться, я хочу, чтобы мои роли были централизованы в файле параметров.

Спасибо

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете определить свои роли как константы в отдельном файле или в вашей сущности, а затем использовать их в вашей сущности, security.yml или любом другом файле yml , как указано здесь

Дляпример:

AppBundle \ Utils \ UserMetaData

class UserMetaData {
    const ROLE_ADMIN = 'ROLE_ADMIN';
    const ROLE_USER  = 'ROLE_USER';
}

security.yml:

role_hierarchy:
    !php/const AppBundle\Utils\UserMetaData::ROLE_ADMIN: !php/const AppBundle\Utils\UserMetaData::ROLE_USER
...