- Ymox,
Bonjour !
Aujourd'hui, en travaillant sur une application Symfony, je me rends compte quelque chose qui ne fait pas vraiment mon beurre.
L'application en question a plusieurs rôles, organisés avec une simple hiérarchie dans security.yml pour diverses raisons. Du fait de la hiérarchie, je pensais logiquement tester les rôles les moins élevés plutôt qu'explicitement tous les rôles qui pourraient avoir accès. Seulement, je me rends compte que la hiérarchie n'est apparemment pas gérée comme je m'y attendais, en cela qu'un utilisateur ayant le rôle ROLE_SUPER_ADMIN
n'a que celui-ci, alors qu'il est bien défini dans la hiérarchie. Qu'il n'y ait eu que les rôles explicitement définis comme enfants, passe encore, mais ce n'est même pas le cas.
1 2 3 4 5 6 7 8 9 10 | security: role_hierarchy: ROLE_PETIT: - ROLE_USER ROLE_ADMIN: - ROLE_PETIT - ROLE_MOYEN ROLE_SUPER_ADMIN: - ROLE_ALLOWED_TO_SWITCH - ROLE_ADMIN |
J'ai pu constater qu'en base de données, les rôles ne sont pas enregistrés tel quels, la méthode getRoles()
retourne un tableau avec un seul rôle selon la valeur simple en BDD.
Maintenant, plusieurs questions :
- est-ce qu'il y a besoin de récupérer la hiérarchie depuis le rôle le plus élevé dans l'entité même ou normalement Symfony s'en charge ?
D'après ce que j'ai pu voir, il y a bien des récupérations de hiérarchies dans les classes de sécurisation, mais du coup, je ne comprends pas pourquoi ça ne fonctionne pas. - est-ce qu'il y a moyen de récupérer cette hiérarchie dans l'entité au besoin ?
Je me vois mal redéfinir les services impliqués juste pour ça, et intercaler un quelconque wrapper n'est pas vraiment propre
Merci d'avance