Credentials non détectées
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:
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:
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:
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:
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:
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 ! ;)