2016-04-19 7 views
0

Mit FOSUserBundle habe ich zwei Stellen, an denen ich Benutzerrollen definieren kann: security.yml (statisch) und pro roles Eigenschaft in der Benutzer-Entität (DB, dynamisch). Wie kann ich eine vollständige Liste von alle Rollen für einen Benutzer (auch die geerbten) abrufen?Symfony, FOSUserBundle: Alle statischen und dynamischen Rollen abrufen

Beispiel

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

Benutzer-Rollen (Entity):
[ROLE_BOARDMODERATOR, ROLE_CHATMODEARTOR, ROLE_ADMIN].
[ROLE_USER, ROLE_ADMIN, ROLE_BOARDMODERATOR, ROLE_CHATMODERATOR]

Antwort

2

Inspizieren des Sicherheits-Panel von Symfony Profiler ich gearbeitet folgende Lösung (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); 

Das Endresultat wäre so etwas wie sein müssen

Verwandte Themen