-
Validation d'un code
Bonjour,
pour mon premier message ici j'ai une question à propos de formulaires.
J'utilise le plugin sfDoctrineGuardPlugin pour mon application et je souhaiterai qu'un utilisateur ne puisse s'inscrire que s'il rentre un code particulier lors de son inscription (un accès privé en somme).
J'ai ajouté un champ 'validation_code' à ma table sf_guard_user et j'arrive bien à avoir un formulaire qui propose de rentrer ce code.
Le problème c'est que je ne sais pas comment et où écrire un sfValidator pour valider ce code. J'ai essayé en vain avec un validator du type sfValidatorSchemaCompare utilisé pour vérifier qu'un mot de passe est bien écrit deux fois de façon identique dans le formulaire.
Je débute encore sur symfony, la solution est peut-être évidente... :?
Merci
-
Je vois à peu près ce que tu essayes de faire, même si j'ai du mal à comprendre d'où vient le code et s'il est unique pour tous les utilisateurs ou spécifique pour chaque future utilisateur, et dans ce cas, où et comment est-il généré et stocké ?
sfGuard (le nom générique) n'est pas prévu pour qu'un utilisateur puisse créer son compte, il est conçu pour qu'un ou plusieurs administrateur gèrent les comptes et les droits d'accès (directement ou par groupe).
Tu as donc deux possibilités, soit créé de toutes pièces un module dédié à la création de tes utilisateurs avec un form adapté. Ou utiliser le plugin sfForkedDoctrineApplyPlugin qui complète sfGuard et gère notamment la création de compte utilisateur dans sfGuard par l'utilisateur directement, avec vérification par email. Bien sur ce système n'inclus pas ton système de code initial, et il faudra le "torturer" (réécrire la partie création d'utilisateur) pour le contraindre à l'utlilser.
Idéalement, la vérification du module se fera dans un post validator de ton formulaire (un validateur qui est exécuté après les validateurs de chaque champ). Soit on va pouvoir utiliser un validateur existant, soit on devra en créé un spécifique, tout va dépendre de ce qui doit servir de code.
Personnellement, je trouve la méthode difficilement exploitable. Soit le code est unique, et il risque d'être diffusé au-delà de tes volontés, soit il est spécifique à l'utilisateur, et, dans ce cas, autant créer directement le compte utilisateur.
-
Bonjour,
merci pour ta réponse.
Pour mon "code", je compte le donner à certains utilisateurs en leur disant "tiens, va t'inscrire sur mon site, rentre le code trucbidule". Mais en même temps j'aimerai donner un code différent à d'autres types de personnes, histoire de suivre d'où viennent mes utilisateurs.
J'ai déjà essayé d'utiliser le plugin DoctrineApply mais je me retrouve confronter au même problème.
En fait, comme tu le dis par la suite, mon problème devrait pouvoir se résoudre en créant un post validator, mais je n'arrive pas à en créer un convenablement. J'en voudrais un qui vérifie que le code entré fait bien parti des codes que j'ai prédéfini (soit dans ma BD, soit directement en dur dans le code php).
-
C'est un truc à y laisser plusieurs soirées...
Essaye du côté du validateur qui permet de vérifier si un nom est unique dans une table, soit en le détournant, soit en t'inspirant du code.