2016-04-19 3 views
0

Использование FOSUserBundle У меня есть два места, где я могу определить роли пользователей: security.yml (статические) и за roles свойство в объекте-пользователе (DB, dynamic). Как я могу получить полный список всех ролей для пользователя (также унаследованного)?Symfony, FOSUserBundle: Получить все статические и динамические роли

Пример

security: 
    role_hierarchy: 
     ROLE_ADMIN:  [ROLE_USER] 
     ROLE_SUPERADMIN: [ROLE_ADMIN] 
     ROLE_SUPERDUPERADMIN: [ROLE_SUPERADMIN] 

User-Роли (Entity):
[ROLE_BOARDMODERATOR, ROLE_CHATMODEARTOR, ROLE_ADMIN].

endresult бы быть что-то вроде:
[ROLE_USER, ROLE_ADMIN, ROLE_BOARDMODERATOR, ROLE_CHATMODERATOR]

ответ

2

Осматривая панель защиты от Symfony Profiler я разработал следующие решения (Symfony 3):

//retrieve dynamic roles and the last static role 
$endRoles = $this->get('security.token_storage')->getToken()->getRoles(); 
//add all inherited roles 
$allRoles = array_unique($this->get('security.role_hierarchy')->getReachableRoles($endRoles), SORT_REGULAR); 
Смежные вопросы