[FOSUserBundle] ROLE

Par Manuel Alvarez-Iglisias, il y a 8 ans


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, il y a 8 ans

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.

Manuel Alvarez-Iglisias, il y a 8 ans

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.

00xFox, il y a 8 ans

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

Manuel Alvarez-Iglisias, il y a 8 ans

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.

00xFox, il y a 8 ans

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 ?

Manuel Alvarez-Iglisias, il y a 8 ans

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 ?

00xFox, il y a 8 ans

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.

Manuel Alvarez-Iglisias, il y a 8 ans

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 !

00xFox, il y a 8 ans

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