Symfony - Plusieurs entités pour se connecter

Résolu/Fermé
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 15 janv. 2020 à 19:09
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 5 févr. 2020 à 09:59
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

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 496
1 févr. 2020 à 18:24
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
1
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 125
5 févr. 2020 à 09:59
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']
0