Я объявил свои роли с помощью 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.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?
Обычно вы, конечно, определяете роли в security.yaml. Попробуйте обновить свой вопрос, добавив немного дополнительной информации о том, как будут использоваться ваши параметры.