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 :

Compte Utilisateur : champs spécifiques à mon application [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut Compte Utilisateur : champs spécifiques à mon application
    Bonjour à tous,

    Je commence à peine symfony, j'ai fait le tutorial, et maintenant je me pose une question concrète concernant ma future application, question qui je le pense concerne à peu près tout le monde qui utilise symfony. Mais je n'ai vu personne qui posait clairement la question et personne qui n'y répondait clairement ^^

    J'ai vu que la gestion des utilisateurs et de l'authentification était possible via les plugins sfDoctrineGuardPlugin par exemple.

    Le problème c'est que j'ai besoin qu'un "user" ai des champs spécifiques du style : age, date de naissance, ville etc. et pas seulement son login, mot de passe !

    Comment faire cela en se basant sur un plugin Symfony qui existe deja et qui nous permet de faciliter les choses tout de même ??

    En vous remerciant d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Hello,

    (grande première, c'est la première fois que j'arrive à aider quelqu'un)

    C'est extrêmement simple en fait. Il suffi de créer un modèle pour ton "Profil", que tu lies à ton modèle sfGuardUser par une relation 1-1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Configuration:
      actAs: { Timestampable: ~ }
      columns:
        lignetitre:         { type: integer, notnull: true }
        utilisateur_id:     { type: integer, notnull: false }
        signeastro :     { type: string, notnull: false }
      relations:
        Utilisateur:
          class: sfGuardUser
          local: utilisateur_id
          foreign: id
          type: one
          foreignType: one
          foreignAlias: Config
    Et c'est tout!

    Quand l'utilisateur se connecte, tu peux lui donner un lien vers son profil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url_for('configuration/edit?id='.$sf_user->getGuardUser()->getConfig()->getId())
    Côté administrateur, je te revoie à ce lien pour intégrer le profil à l'utilisateur.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Merci Vince pour ces explications claires !!

    Maintenant, si je veux lier mon user à d'autres tables (par exemple, une recette de cuisine), il faut que je fasse dans mon modèle recette vers l'utilisateur de type sfGuardUser comme tu as fait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    relations:
        Utilisateur:
          class: sfGuardUser
          local: utilisateur_id
          foreign: id
          type: many
          foreignType: one
          foreignAlias: Recette

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Il y a plusieurs solutions:
    1. celle de Vince
    2. redéfinir la table sfGuardUser dans le shema.yml de ton application en y rajoutant les champs
    3. passer par le plugin sfForkedDoctrineApplyPlugin

    La quel prendre ? C'est fonction des besoins.

    Si tu dois permettre aux utilisateurs de gérer leurs comptes (cration, modification des mots de passes, de email, avec vérification) seul, la solution 3 est la tienne.

    Si l'administrateur fait tous ce qui est configuration, la 1 est plus propre côté plugin (pas de modification du plugin, donc pas de problème en cas d'évolution de celui-ci), la 2 est la plus simple à mettre en oeuvre, mais, si le plugin évolue beaucoup (peut probable pour celui-là), il faudra, peut-être, modifier le shema et le prendre en compte.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Une alternative à ta solution 2. serait de partir sur le code de Vince et d'ajouter une notion d'héritage par aggrégation.

    Vu que Doctrine gère (en partie correctement) l'héritage, autant s'en servir !!

    http://www.doctrine-project.org/docu...en/inheritance

  6. #6
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    J'ai opté pour la solution de mimi68 car j'ai besoin de gérer l'inscription de l'utilisateur, la vérif par email etc.

    Par contre petit bémol sur le plugin sfForkedDoctrineApplyPlugin ; il ne marche pas avec la version 5.0.0 de sfDoctrineGuard ...
    j'ai du installé une version plus ancienne de sfDoctrineGuard pour le faire marcher, en attendant la version compatible !.

  7. #7
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Ca viendra (j'espère !).

    @Bilbonex:
    Tu as raison, il est aussi possible de passer par un héritage par agrégation de colonne. Seul inconvénient, la table finale change de nom et il est alors nécessaire de redéfinir un formulaire pour la gestion des utilisateur, celui de sfGuard ne marchera pas.

    Ce qui, suivant les cas, sera un avantage ou un inconvénient.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    @mimi68 : je ne comprends pas. Faire de l'héritage par aggrégation ajoute un champ "type" à ta table qui permet à l'ORM de reconnaître quel type d'objet est enregistré.

    Et tu auras aussi deux objets : sfGuardUserForm et configurationForm qui seront générés et qui te distingueront les deux types de formulaire.

    A moins que je n'ai pas compris quelque chose dans ta remarque ?

  9. #9
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    En fait tu auras effectivement deux objets, sfGuarUser et configurationForm.

    La différence c'est que le sfGuarUser vas "voir" tous les user créé par configurationForm, mais que pour les champs définit dans sfGuardUser...

    Donc dans le sfDoctrineGuardPlugin, le module de gestion des users ne prend pas en compte les nouveaux champs et tu es obligé de redéfinir un deuxième formulaire d'administration, basé sur configurationForm, pour gérer soit le reste des champs, soit la totalité... Donc plus de travail.

    Et je suis particulièrement paresseux !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Ok, je vois ce que tu veux dire.

    Je n'ai à ce jour utilisé que :
    - soit des profils (en considérant en quelques sortes sfGuardUser comme une classe abstraite) ;
    - soit des objets sfGuardUser.

    Du coup, je n'ai pas eu l'occasion de vérifier ce point.
    Il faudra que je le garde en tête pour le jour où je mixerai des profils et des sfGuardUsers

  11. #11
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    La version 5 de sfGuard a enrichie, légèrement, les profils de base, peut-être un début ?

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

Discussions similaires

  1. Restrictions utilisateurs sur mon application
    Par pierrotparma dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/09/2010, 13h03
  2. Réponses: 1
    Dernier message: 05/11/2009, 09h08
  3. Réponses: 2
    Dernier message: 11/08/2009, 15h15
  4. Réponses: 3
    Dernier message: 24/06/2009, 10h39
  5. Réponses: 1
    Dernier message: 21/12/2008, 00h08

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