Bonjour,
Dans le cadre d'un projet j'ai mis en place, via DoctrineGuard, différents utilisateurs que je répartis dans des groupes aux permissions distinctes.
Voici le fixtures.yml :
C'est tout du côté de SfGuard, rien dans ma table sf_guard_user_permission par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 sfGuardUser: User_admin: first_name: admin last_name: admin email_address: admin@gmail.com username: admin password: admin is_super_admin: true Groups: [Group_admin] Jane: first_name: Jane last_name: Doe email_address: jane.doe@gmail.com username: jane password: open is_super_admin: false Groups: [Group_site] sfGuardGroup: Group_admin: name: admin description: Administrator group Permissions: [Permission_admin] Group_site: name: Gérant d'exploitation description: Groupe des gérants d'exploitation Permissions: [Parametres_ReadOnly] sfGuardPermission: Permission_admin: name: admin description: Administrator permission Parametres_All: name: Permissions Paramètres description: Tous les droits sur les paramètres Parametres_ReadOnly: name: Read Only Paramètres description: Lecture seule sur les paramètres
Jane fait donc partie du groupe Site, appartenance lui octroyant alors les droits de ce site (ici Parametres_ReadOnly).
Dans le security.yml de mon module, j'ai mis en place la restriction suivante :
Pour accéder à la page index de mon module, il faut l'une des 3 permissions : admin, all, ou read only. Dans le cas qui nous intéresse mes 2 utilisateurs sont censés pouvoir y accéder (admin a les droits d'admin, Jane a les droits en ReadOnly).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 index: is_secure: on credentials: [[Permission_admin, Parametres_All, Parametres_ReadOnly]]
Le hic (car il y a un hic) c'est que seul admin accède à cette page, Jane se trouve confrontée à la page de permissions insuffisantes.
Pourtant, l'outil de debug m'indique, dans l'onglet User :
Dans l'onglet Global :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 options: auto_shutdown: false culture: null default_culture: fr_FR use_flash: true logging: '1' timeout: 1800 attributeHolder: sfGuardSecurityUser: { user_id: '2' } symfony/user/sfUser/attributes: { } culture: fr_FR authenticated: true credentials: - 'Read Only Paramètres'
J'ai tenté un petit test simple dans mon template :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 session: symfony/user/sfUser/attributes: { symfony/user/sfUser/attributes: { }, sfGuardSecurityUser: { user_id: '2' } } symfony/user/sfUser/authenticated: true symfony/user/sfUser/credentials: ['Read Only Paramètres'] symfony/user/sfUser/culture: fr_FR
Avec admin : je récupère bien mon user et dessous Parametres ReadOnly
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php if ($sf_user->isAuthenticated()): echo $sf_user; endif ?> <br/> <?php if ($sf_user->hasCredential('Parametres_ReadOnly')): echo "Parametres ReadOnly"; endif ?> <br/>
Avec Jane : uniquement son user.
J'ai vérifié point par point mes fichiers de configuration afin d'y trouver un potentiel oubli, ce qui n'a rien donné, j'espère trouver ici quelques pistes supplémentaires ! Merci !![]()
Partager