Symfony - Plusieurs entités pour se connecter [Résolu]

Signaler
Messages postés
1359
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2020
-
Messages postés
1359
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2020
-
Bonjour,

Je développe une application en Symfony 5 pour un client afin de gérer sa cvtheque et son recrutement et sur laquelle il y a deux types de personnes.

Des candidats qui ont un accès a leur propre compte et les salariés des entreprises.
Les salariés sont liés à une seule entreprise et les candidats sont liés à une table cvtheque (qui peut contenir plusieurs candidat).

Cvthèque est liée à une ou plusieurs entreprises. (les entreprises peuvent partager un cvtheque ou avoir leur propre cvtheque).

Les deux types de personnes utiliseront le même formulaire pour se connecter à l'application et ils seront redirigés sur un dashboard différent en fonction du type de personne connectée (candidat ou salarié).

La distinction est donc importante. J'ai essayé avec une seule classe User et une propriété Type mais du coup je ne peux pas lier des User à une CVTheque sinon même les salariés seront liés à la cvtheque... D'où l'importance d'avoir une table Candidate différente...

Comment faire en Symfony pour avoir un seul form de connexion et avoir cette distinction entre candidat et salarié ?

Avoir 2 entités qui implémentent UserInterface, un seul firewall et 2 guard authenticator ?

Merci pour votre aide

1 réponse

Messages postés
2103
Date d'inscription
mercredi 21 août 2002
Statut
Contributeur
Dernière intervention
25 octobre 2020
343
Bonjour,

Je me trompe peut être mais avec SecurityBundle, tu peux utiliser plusieurs types de sources pour connecter un utilisateur. Tout se passe dans security.yaml
Messages postés
1359
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
24 avril 2020
119
Bonjour

Tu as raison, j'avais trouvé en solution de créer deux entités qui sont liées à UserInterface et de chainer les entités pour le provider du firewall. ça fonctionne très bien.


providers:
# used to reload user from session & other features (e.g. switch_user)
admin_user_provider:
entity:
class: App\Entity\User
property: email

candidate_user_provider:
entity:
class: App\Entity\Candidate
property: email

all_users:
chain:
providers: ['admin_user_provider', 'candidate_user_provider']