IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[FOSUserBundle] Gestion des utilisateurs "type logiciel" ? [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de Soobook
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 149
    Points
    149
    Par défaut [FOSUserBundle] Gestion des utilisateurs "type logiciel" ?
    Bonjour à tous.

    Je développe une application avec une gestion des utilisateurs "type logiciel" (si quelqu'un connaît un terme pour désigner cela ça m'aiderait également) :
    - email non obligatoire.
    - création et administration des utilisateurs uniquement par l'admin (pas d’inscription, d'envoi d'emails, de confirmation, etc...)
    - types (classes) d'utilisateurs multiples.

    J'ai commencé à mettre en place cela avec FOSUserBundle et PUGXMultiUserBundle, mais je me rend compte qu'au final :
    - je suis obligé de modifier des comportements "de base" de FOSUserBundle (comme l'email non obligatoire, par exemple).
    - j'en désactive la plupart des fonctionnalités.

    De plus je rencontre des erreurs difficiles à maîtriser.
    Par exemple, j'ai rendu l'email non obligatoire en utilisant @ORM\AttributeOverrides. Ça marchait très bien mais suite à une maj de Symfony et sans rien modifier dans mon code, cela provoque un plantage que je n'ai jamais réussi à corriger.

    J'ai donc l'impression de dépenser beaucoup d'efforts pour personnaliser un outils qui n'est pas conçu pour mes besoins, tout ça pour un résultat instable et compliqué à maintenir.

    J'ai un peu cherché mais je n'ai pas trouvé de bundle offrant ce que souhaite. J'ai également creusé un peu pour faire ma propre implémentation de la sécurité, c'est faisable mais c'est du boulot.

    Du coup je ne sais pas trop dans quelle direction partir. Qu'en pensez-vous?

    Merci d'avance,

    Soobook.
    Javascript est la pornstar des langages de programmation : souple, puissant, tu lui fais faire ce que tu veux, et ça peut finir bien crade.
    ---
    https://www.bgaze.fr

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Salut,

    Je te donnes mon avis, je suis sur un développement ou j'ai besoin d'un UserProvider spécifique que je mappe depuis mon LDAP.

    Je m'inspire de FOSUserBundle, mais je ne peux pas l'utiliser tel quel.

    Donc oui, quand un bundle ne réponds pas à tes besoins ou voir que tu override quasi tout le bundle, soit tu le forke, soit tu t'en inspires.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut Ecrire son propre bundle
    Tout à fait d'accord, si t'as un peu de temps essaye de faire ton propre Bundle User. Perso j'ai forké fosUser, et utilise l'héritage dans mes bundles tiers (Couplés avec le bundle Fr3dLdap)

  4. #4
    Membre habitué Avatar de Soobook
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 149
    Points
    149
    Par défaut
    Merci pour vos retours.

    Ceux-ci comme mes recherches me laissent penser qu'au vu de mes besoins le plus sain serait de faire ma propre implémentation de la sécurité.

    Mais vu que mon problème concerne justement la sécurité, je suis très hésitant : n'étant pas encore très calé, j'ai peur de laisser traîner des failles...

    Pour l'instant, j'étend FOSUserBundle mais c'est galère (par rapport à mes besoins). Je crois que je vais quand même sauter le pas...

    Je continue de creuser tout ça et je reviendrai "faire mon rapport" quand j'aurais plus avancé.
    Javascript est la pornstar des langages de programmation : souple, puissant, tu lui fais faire ce que tu veux, et ça peut finir bien crade.
    ---
    https://www.bgaze.fr

  5. #5
    Membre habitué Avatar de Soobook
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 149
    Points
    149
    Par défaut
    Bonjour à tous,

    J'ai finalement mis en place ma propre intégration de la sécurité et le résultat est très satisfaisant.

    Si vous vous trouvez dans le même cas que moi, je vous invite à envisager cette solution.

    C'est assez accessible, et la doc est complète. Voici les liens, pour partir du bon pied :

    Book
    Cookbook

    Je ne poste pas de code, mais si quelqu'un souhaite plus d'infos qu'il n'hésite pas à poster ici.
    Javascript est la pornstar des langages de programmation : souple, puissant, tu lui fais faire ce que tu veux, et ça peut finir bien crade.
    ---
    https://www.bgaze.fr

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut
    Salut !
    Comment as tu géré les différents "types" d'utilisateurs, via les roles, l'héritage ?
    As-tu pu créer ton propre bundle en créant des services spécifiques (controller comme service, manager spécifique aux users ) ?

    a+

  7. #7
    Membre habitué Avatar de Soobook
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Réunion

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 149
    Points
    149
    Par défaut
    Salut,

    Pour les types d'utilisateurs, j'ai fait machine arrière car je n'ai pas trouvé de solution satisfaisante. N'ayant en pratique que deux types d'utilisateurs dans cette appli, je n'ai fait qu'une seule classe et je gère via les rôles.
    Au niveau des formulaires, j'utilise un Subscriber sur l'event PRE_SET_DATA de mon utilisateur pour construire le formulaire en fonction de son type (stocké en base).

    Ça convient à mon cas, mais si quelqu’un trouve un moyen efficace ET stable de gérer des profils très différents d'utilisateurs, ce serait mieux.

    Concernant la mise en oeuvre, en gros voici les étapes :

    - création d'un bundle User.

    - création une classe User implémentant les interfaces Serializable et AdvancedUserInterface.

    - création d'une classe UserRepository implémentant UserProviderInterface (offre des fonctions telles que refreshUser ou loadUserByUsername)...

    - création d'une classe Group étendant Symfony\Component\Security\Core\Role\Role (relation ManyToMany avec User).

    - création des CRUD pour User et Group. La seule modification importante est est la mise en place de l'encodage du mot de passe dans UserController grâce à au service security.encoder_factory.

    - création de SecurityController pour gérer le login, et du template associé.

    - paramétrage du firewall (rien de particulier ici).

    Il suffit de suivre la doc, c'est du copier-collé presque tout le long, et au final il n'y a pas vraiment de services ou autres à créer. Il suffit d'utiliser les fonctions fournies en standard par le framework.

    Note :
    J'ai perdu beaucoup de temps sur cette question de gestion d'utilisateurs, du coup j'ai juste implémenté les fonctions dont j'ai besoin et je suis passé à la suite.
    Il est cependant clair qu'une fois ce travail effectué, il serait assez aisé de créer quelque chose de réutilisable via quelques services...
    Javascript est la pornstar des langages de programmation : souple, puissant, tu lui fais faire ce que tu veux, et ça peut finir bien crade.
    ---
    https://www.bgaze.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] [FosUserBundle] Gestion des utilisateurs
    Par kustomkadiak dans le forum Symfony
    Réponses: 6
    Dernier message: 09/03/2013, 20h58
  2. Administration MySQL gestion des utilisateurs
    Par MaxiMax dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2004, 13h56
  3. gestion des domaines et types
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 10/03/2004, 10h19
  4. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo