Bonjour,
J'aimerais avoir un avis sur l'organisation et la gestion de comptes utilisateurs, j'ai une application qui gère 3 types d'utilisateurs (Entreprise, Institution, Student) ces trois utilisateurs n'ont rien en commun apart une adresse email et un mot de passe, ma question serait de savoir comment sur symfony je peux géré l'authentification et surtout comment je pourrais modéliser la base de donnée pour permettre à ces trois utilisateurs de se connecter et d'effectuer des actions en fontion de leur type
Ce que je fais
Pour l'instant j'ai créé une entité User qui contient uniquement les informations de connexion (mot de passe, email et roles) en suite cette entité à des propriétés (Entreprise, Institution, Student) qui sont des entités à part en relation OneToOne nullable avec User
Quand je crée une Entreprise, je crée aussi un User et je fais la liaison avec l'entreprise pour permettre l'authentification de cette dernière en rajoutant le rôle ROLE_ENTREPRISE sur l'entité, pareil pour les autres type d'utilisateurs, en gros j'ai séparé les données d'authentification des données de l'utilisateur lui-même
$entreprise = $this->getUser()->getEntreprise();
Ceci rajoute une complexité dans le code, surtout lors de la recupération de l'utilisateur connecté en fonction du type, j'ai des requètes SQL supplémentaires même en utilisant un fetch EAGER sur l'entité User ça impacte les performances de l'application
Une Alternative ?
face à ce cas d'utilisation, il y'aurait il une alternative ou une meilleure façon d'organiser cette gestion de compte utilisateur ? comment le feriez-vous ?