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 :

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
C'est tout du côté de SfGuard, rien dans ma table sf_guard_user_permission par exemple.

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 :
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]]
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).

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 :

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'
Dans l'onglet Global :

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
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
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 admin : je récupère bien mon user et dessous Parametres ReadOnly
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 !