Bonjour,

Voila je rencontre un petit problème avec les roles dans symfony (je débute dans l'apprentissage de celui ci).
J'essaye d'organiser des Roles (il m'en faudrais genre 5 ou 6)
j'ai donc ajouter dans security.yml différent roles comme les exemples données.

Par contre j'ai remarqué que le ROLE_USER ne part pas en demote.

est ce que c'est normal ?

cordialement.

9 réponses


00xFox
Réponse acceptée

Je dirais plutôt que ton ROLE_USER n'a pas de rôle inférieur. Il est simplement inférieur à ROLE_ADMIN. Tu devrais écrire ça :

ROLE_USER: ROLE_NORMAL
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN

Si tu essaies comme ça, le problème est toujours le meme ? Je ne suis pas sur que FOS permettent un retour à un attribut roles vide.
Tu regardes la présence du ROLE_USER directement dans la bdd ou via l'objet user ?

Bonjour,

Si le ROLE_USER est le rôle le plus bas, il semble logique de ne pas pouvoir descendre plus dans la hiérarchie.

Comment on défini tous ça ?
Pour essayer j'ai fait comme ceci :
ROLE_NORMAL: ROLE_NORMAL
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
J'ai voulu resteindre quelques accès à des pages au ROLE_USER mais sur mon compte de test le ROLE_USER ne part pas, par contre je peux ajouter et enlever ROLE_NORMAL.

Il faut qu'il y est une cohérence dans la hiérarchie par exemple :

ROLE_MEMBRE: ROLE_USER
ROLE_PREMIUM: ROLE_MEMBRE
ROLE_ADMIN:ROLE_ROLE_PREMIUM

Si on écrit ça d'une autre façon pour faire apparaître la hiérarchie on aurait :

ROLE_USER < ROLE_MEMBRE < ROLE_PREMIUM < ROLE_ADMIN

En espérant répondre à ta question

A voir ton exemple je pense que j'avais bien compris déjà le principe. Du coup pourquoi mon role ROLE_USER n'est pas demote ?
Car si j'ai bien compris :

ROLE_NORMAL: ROLE_NORMAL
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN

donne :
ROLE_NORMAL< ROLE_USER< ROLE_ADMIN
Donc si je fais un

doctrine:user:demote user_name ROLE_USER

il devrais partir non ? hors là il me dis que ca a fonctionné mais le role reste quand même dans le tableau des roles de l'utilisateur.

Aaaah mais attend ! ça veut dire que synthaxiquement

ROLE_SUPER_ADMIN : ROLE_ADMIN 

ne signifie pas que mon ROLE_SUPER_ADMIN est définie avec la valeur ROLE_ADMIN
il s'agit de dire que ROLE_ADMIN < ROLE_SUPER_ADMIN
C'est ça ?

C'est plutôt comme ça que tu peux l'interprêter. Vois plutôt ça comme un système d'héritage, d'arbre.

D'accord je comprend mieux alors. Je pensais qu'il s'agissais d'affecter juste des valeurs pour des rôles. Je vais essayer tout ça !

Si jamais ça répond a ta question, pense à marqué le sujet comme résolu :)