Implémentation de UserInterface sur une entité
Bonjour,
J'ai lu plusieurs articles sur l'authentification utilisateur depuis une table de la base de données, que j'ai implémenté, mais j'ai l'impression que la méthode d'authentification de Symfony n'instancie pas mon entité User.
Concrètement, la vérification d'email/mot de passe s'effectue correctement, mais les méthodes associées à l'entité ne fonctionnent pas.
Par exemple, dans l'entité User je dois faire :
Code:
1 2 3 4 5 6 7
| public function getRoles()
{
if ($this->roles === null) {
$this->roles = array();
}
return $this->roles;
} |
alors que le constructeur contient :
Code:
1 2 3 4
| public function __construct()
{
$this->roles = array();
} |
J'ai essayé de faire un die() dans ce constructeur, il n'est jamais lancé.
Voici ma configuration de security.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
| security:
encoders:
Medijob\Bundle\MainBundle\Entity\User: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
entity:
entity: { class: Medijob\Bundle\MainBundle\Entity\User, property: email }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
account:
pattern: ^/
anonymous: ~
form_login:
check_path: /authentification
login_path: /connexion
logout:
path: /deconnexion
access_control:
- { path: ^/compte, roles: ROLE_USER } |
Mon entité User contient également l'annotation indiquant son repository, qui implémente UserProviderInterface, mais lui non plus n'est jamais appelé. Les logs indiquent que Symfony utilise le provider par défaut, Symfony\Bridge\Doctrine\Security\User\EntityUserProvider.
Merci de votre aide.