Параметры доступа Symfony в parameters.yml из объекта User

Я объявил свои роли с помощью parameters.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 () выполняется автоматически во время соединения, чтобы дать пользователю роль.

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

Спасибо

Обычно вы, конечно, определяете роли в security.yaml. Попробуйте обновить свой вопрос, добавив немного дополнительной информации о том, как будут использоваться ваши параметры.

Cerad 08.06.2018 15:55

Я редактировал вопрос.

Thomas Fournet 12.06.2018 09:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
310
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете определить свои роли как константы в отдельном файле или в своей сущности, а затем использовать их в своей сущности, 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

Спасибо за ответ, это частично решает мою проблему для security.yml, но как мне получить доступ к этим константам в моем объекте User.php?

Thomas Fournet 12.06.2018 09:47

Другие вопросы по теме