Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-10-2014 14:44:18

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

[Résolu] Formulaire de login ZfcUser et Captcha

Bonjour à tous,

J'utilise ZF2 depuis maintenant quelques mois et j'arrive à m'en sortir grâce à pas mal de petits tutoriaux à chaque coins du web smile

J'ai suivis les installations et configurations de :
- ZfcUser : https://github.com/ZF-Commons/ZfcUser
- BjyAuthorize : https://github.com/bjyoungblood/BjyAuthorize

Ainsi que le tutoriel samminds (entre autres) :
http://samminds.com/2013/03/zfcuser-bjy … -together/
Malgré quelques petites fautes à corriger, le tout fonctionne.

Cependant, il me reste des questions auxquels je ne trouve pas de réponse et qui concernent en général ZfcUser.


ZfcUser et ReCaptcha :
J'ai donc installé ZfcUser et ReCaptcha, cela fonctionne bien mais je vois que le Captcha n'est que sur l'enregistrement.
J'ai essayé de l’intégrer au formulaire de "login" à partir de mon module\AuthUser\Module.php en procédant comme suit :

Code:

[lang=php]Authuser\Module.php
public function onBootstrap(MvcEvent $e) {
  $eventManager        = $e->getApplication()->getEventManager();
  $moduleRouteListener = new ModuleRouteListener();
  $moduleRouteListener->attach($eventManager);

  $em  = $eventManager->getSharedManager();
  $em->attach('ZfcUser\Form\Login', 'init', function($e) { 
      $form = $e->getTarget();
      $form->add(array(
          'name' => 'captcha',
          'label'      => 'Please enter the 5 letters displayed below:',
          'required'   => true,
          'class' => 'Zend\Captcha\ReCaptcha',
          'options' => array(
              'wordLen'    => 6,
              'expiration' => 300,
              'timeout'    => 300,
           ), 
      ));
  });
}

Ce qui ne me retourne qu'un champ texte.
Avez-vous une idée pour afficher le Captcha ?


Questions bonus :
- Les champs "email" et "displayName" de l'entité User ne me sont pas utiles, est-il possible de les supprimer ?
J'ai bien sûr crée ma propre entité User qui implémente UserInterface, mais lorsque que je supprime les champs, le module n'a pas l'air d’apprécier..

- Est-il possible d'assigner un rôle directement dans l'entité User, sans passer par la table user_role_linker ?
Bien que pas grandement dérangeant, je trouve dommage de créer une table simplement pour assigner un rôle à l'utilisateur, donc si vous connaissez une méthode, je suis preneur.

- Mon application va devoir permettre à un utilisateur avec un rôle précis d'enregistrer un nouvel utilisateur, les "guest" ne pourront donc pas s'enregistrer. Dois-je faire un formulaire spécifique et fermer l'enregistrement ('enable_registration' => false) ou pourrait-il utiliser ce "register" avec un accès restreint par BjyAuthorize ?


Merci pour toute lectures et réponses à venir.

Mes configurations

Code:

composer.json
[lang=php]"php": ">=5.3.3",
        "zendframework/zendframework": "2.*",
        "zendframework/zend-developer-tools": "dev-master",
        "zf-commons/zfc-user" : "~1.2",
        "doctrine/doctrine-orm-module": "~0.8",
        "zf-commons/zfc-user-doctrine-orm": "~1.0",
        "bjyoungblood/bjy-authorize": "~1.4",
        "zendframework/zendservice-recaptcha": "2.0.*"
        ...

application.config.php
return array(
    'modules' => array(
        'ZendDeveloperTools',
        'Application',
        'DoctrineModule',
        'DoctrineORMModule',
        'ZfcBase',
        'ZfcUser',
        'ZfcUserDoctrineORM',
        'BjyAuthorize',
        'AuthUser',
        ...
),

AuthUser\config\module.config.php
return array(
    'doctrine' => array(
        'driver' => array(
            // overriding zfc-user-doctrine-orm's config
            'zfcuser_entity' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'paths' => __DIR__ . '/../src/AuthUser/Model',
            ),
            'orm_default' => array(
                'drivers' => array(
                    'AuthUser\Model' => 'zfcuser_entity',
                ),
            ),
        ),
    ),
    'zfcuser' => array(
        // telling ZfcUser to use our own class
        'user_entity_class'       => 'AuthUser\Model\User',
        // telling ZfcUserDoctrineORM to skip the entities it defines
        'enable_default_entities' => false,
        'enable_registration' => true,
        'enable_username' => true,
        'enable_display_name' => false,
        'enable_email' => false,
        'auth_identity_fields' => array('username'),
        'login_form_timeout' => 300,
        'user_form_timeout' => 600,
        'login_after_registration' => false,
        'use_registration_form_captcha' => true,
        //'use_login_form_captcha' => true,
        'user_login_widget_view_template' => 'zfc-user/user/login.phtml',
        'user_register_widget_view_template' => 'zfc-user/user/register.phtml',
        'login_redirect_route' => 'dashboard',
        'logout_redirect_route' => 'home',
        'form_captcha_options' => array(
            'class'   => 'Zend\Captcha\ReCaptcha',
            'options' => array(
                'wordLen'    => 6,
                'expiration' => 300,
                'timeout'    => 300,
             ),
        ),
    ),
    'bjyauthorize' => array(
        // Using the authentication identity provider, which basically reads the roles from the auth service's identity
        'identity_provider' => 'BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider',
        'role_providers'        => array(
            // using an object repository (entity repository) to load all roles into our ACL
            'BjyAuthorize\Provider\Role\ObjectRepositoryProvider' => array(
                'object_manager'    => 'doctrine.entitymanager.orm_default',
                'role_entity_class' => 'AuthUser\Model\Role',
                'table' => 'user_role',
                'role_id_field' => 'role_id',
                'parent_role_field' => 'parent'
            ),
        ),
        ...
    ),
    'router' => array(
        'routes' => array(
            'login' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/user/login',
                ),
            ),
            'register' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/user/register',
                ),
            ),
            'logout' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/user/logout',
                ),
            ),
        ),
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'zfc-user' => __DIR__ . '/../view',
        ),
    ),
);

Solution à ma question principal (ajouter ReCaptcha au formulaire de Login de ZfcUser)

Code:

AuthUser\Module.php

[lang=php]use Zend\Captcha;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Captcha\ReCaptcha;

class Module {

    public function onBootstrap(MvcEvent $e) {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);

        $em  = $eventManager->getSharedManager();
        $userService = $e->getApplication()->getServiceManager()->get('zfcuser_user_service');

        $em->attach('ZfcUser\Form\Login', 'init', function($e) use ($userService) {
            /* @var $form \ZfcUser\Form\Login */
            $form = $e->getTarget();
            $config = $userService->getOptions();
            $formCaptchaOptions = $config->getFormCaptchaOptions();

            $privatekey = $formCaptchaOptions['options']['privkey'];
            $publickey = $formCaptchaOptions['options']['pubkey'];
            $reCaptcha = new Captcha\ReCaptcha();
            $reCaptcha->setPubkey($publickey);
            $reCaptcha->setPrivkey($privatekey);

            $captcha = new Element\Captcha('captcha');
            $captcha
                ->setCaptcha($reCaptcha)
                ->setLabel('Captcha');
            $form->add($captcha);
        });
    }
    ...
}

Dernière modification par Oclock (09-10-2014 16:49:54)

Hors ligne

 

#2 07-10-2014 11:13:09

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Bonjour,
Ne voyant pas de réponse, je me suis dit que j'allais ajouter un peu de configuration à mon premier post, ce qui vous permettra peut-être de m'aider dans un premier temps puis d'aider les personnes voulant ce mettre à ZfcUser.

Bonne journée.

Hors ligne

 

#3 07-10-2014 14:05:31

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Salut, tu n'as pas de réponse parce que c'est un problème lié au module que tu utilises et malheureusement nous ne connaissons pas tous les modules par coeur. Et pour mon cas je n'utilise pas ZfcUser, je me suis fais mon propre module de gestion des utilisateurs et d'authentification du coup je peux pas trop t'aider vu que je ne connais pas non plus ByjAuthorize ... Et pour finir je n'utilise pas de captcha wink. Essaies de poster une issue sur le module directement sur github (en anglais par contre). T'aurais peut être des réponses.

Hors ligne

 

#4 07-10-2014 16:29:31

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

Re: [Résolu] Formulaire de login ZfcUser et Captcha

D'accord Orkin, pas de soucis.
Merci quand même wink

Ps : si il te prend, un jour, l'envie de partager ton module de gestion utilisateurs, fait moi signe big_smile

Hors ligne

 

#5 07-10-2014 16:50:35

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Ahah c'est en projet mais à l'heure actuelle pas le temps de le clean. Et faudrait que j'ajoute plus de configuration là je le modifie à la main en fonction de mes besoins sur le projet donc c'est pas le top smile.

Hors ligne

 

#6 08-10-2014 10:57:34

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Salut !

Désolé de ne pas avoir répondu plus tôt !

Pour le problème de la captcha je crois que ton formulaire est mal créé (clé type et non class):

Code:

[lang=php]
$form->add(array(
     'name' => 'captcha',
     'label'      => 'Please enter the 5 letters displayed below:',
     'required'   => true,
     'type' => 'Zend\Captcha\ReCaptcha',
     'options' => array(
         'wordLen'    => 6,
         'expiration' => 300,
         'timeout'    => 300,
     ), 
));

-----------------------------------------------------------------------------------

Pour les autres questions, je n'ai jamais essayé de supprimer les champs mais comme c'est de la programmation par contrat ça doit être largement possible tant que tu as toujours les méthodes nécessaires (tu dois par exemple implementer getter et setter pour username et email, mais l'implémentation peut être un alias):

Code:

[lang=php]
class User implements UserInterface
{
    public function getUsername()
    {
        return $this->username;
    }

    public function getEmail()
    {
        return "{$this->getUsername()}@valid.com";
    }

    public function getDisplayName()
    {
        return $this->getUsername();
    }

    public function setUsername($name)
    {
        $this->username = $name;
        return $this;
    }

    public function getEmail($email)
    {
        $this->setUsername(str_replace('@valid.com', '', $email));
        return $this;
    }

    public function setDisplayName($name)
    {
        $this->setUsername($name);
    }
    
    …
}

Cependant dans la config tu as le champ suivant :

Code:

[lang=php]'auth_identity_fields' => array( 'email' ),

Tu es donc obligé de garder soit email, soit username, car ce sont les identifiants que tu peux utiliser. Dans ton cas, tu passe la valeur ici à username.

Dans cet exemple je passe un email dans email, et je le ressort aussi au format email, car je n'ai jamais testé mais j'imagine qu'il y a des validateurs... je n'ai pas regardé le détail du code derrière.

-----------------------------------------------------------------------------------

Pour la question suivante, je n'ai pas de réponse précise. C'est très simple d'ajouter un groupe directement sur ton user, par contre je n'ai jamais essayé de le faire.

D'après la config :

Code:

[lang=php]
'bjyauthorize' => array(
        // Using the authentication identity provider, which basically reads the roles from the auth service's identity
        'identity_provider' => 'BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider',

Donc si on se rends dans cette classe :

Code:

[lang=php]
public function getIdentityRoles()
    {
        if (! $identity = $this->authService->getIdentity()) {
            return array($this->defaultRole);
        }

        if ($identity instanceof RoleInterface) {
            return array($identity);
        }

        if ($identity instanceof RoleProviderInterface) {
            return $identity->getRoles();
        }

        return array($this->authenticatedRole);
    }

Imaginons que ta classe user soit la même que la mienne, elle implémente alors BjyAuthorize\Provider\Role\ProviderInterface (RoleProviderInterface dans le code cité ci-dessus donc).

Si tel est le cas, change cette implementation et implémente plutôt Zend\Permissions\Acl\Role\RoleInterface à la place.

Code:

[lang=php]
<?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace Zend\Permissions\Acl\Role;

interface RoleInterface
{
    /**
     * Returns the string identifier of the Role
     *
     * @return string
     */
    public function getRoleId();
}

Donc il suffit alors d'ouvrir ta classe User et d'ajouter cette méthode. En partant du point de vu où tu utilises doctrine et que ton role dans ta classe est private $role; :

Code:

[lang=php]
use Zend\Permissions\Acl\Role\RoleInterface;
use ZfcUser\Entity\UserInterface;

class User implements RoleInterface, UserInterface
{
    /**
     * @var Role
     */
    private $role;

    public function getRoleId()
    {
        return $this->role->id();
    }
    ...
}

Et voilà ça devrait théoriquement le faire.

-----------------------------------------------------------------------------------

Tu peux utiliser le register avec un accès restreint par BjyAuthorize sans problème, fait juste attention à ta configuration :

Code:

[lang=php]
'enable_registration' => true,
'enable_username' => true, // question 2
'enable_display_name' => false,
'auth_identity_fields' => array( 'username' ),
'login_after_registration' => true, // surtout à désactiver !!

Ensuite tu peux mettre un listener dans ton Module.php pour modifier l'objet $user avant enregistrement (par exemple assigner un role par défault) ou comme tu as fait avec le init de l'authentification pour ajouter un champ directement pour séléctionner le role.

Code:

[lang=php]
$userService = $serviceManager->get('zfcuser_user_service');
        $events->attach(
            'ZfcUser\Service\User',
            'register',
            function ($event) use ($serviceManager, $userService) {
                /** @var $userService */
                $form = $event->getParam('form');
                /** @var $form \ZfcUser\Form\Register */
                
                $user = $event->getParam('user');
                /** @var $user \Common\Entity\User */

Voilà normalement j'ai répondu à toutes les questions, des fois de manière théorique (sans tester de mon côté) donc hésite pas à revenir pour le SAV !

Hors ligne

 

#7 08-10-2014 15:32:55

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Bonjour Théocrite, un énorme merci pour toute ces réponses ! wink

Je dois avouer que je viens de finir de les lire, donc il ne me reste plus qu'a tester tous cela.

1ere question :
Tu as eux l’œil, bien joué, un copier-coller qui est passer à travers ma relecture..

Cette modification me retourne maintenant une erreur :
"An exception was raised while creating "zfcuser_login_form"; no instance returned"
"Plugin of type Zend\Captcha\ReCaptcha is invalid; must implement Zend\Form\ElementInterface"

Mais qui, je pense, est plus explicite que la précédente où je n'avais aucun message big_smile

-----------------------------------------------------------------------------------
2e question :
Je devrais donc remplir mes champs quoi qu'il arrive, bien compris.
Mon champ 'auth_identity_fields' vaut bien array('username') actuellement. ('auth_identity_fields' => array('username'),)

-----------------------------------------------------------------------------------
3e question :
Je vais creuser de ce coté là wink

-----------------------------------------------------------------------------------
4e question :
Je vais essayer ça, théoriquement ça m'a l'air viable.
Mon champ 'login_after_registration' vaut bien 'false'. ('login_after_registration' => false,)

-----------------------------------------------------------------------------------

Merci encore une fois, je reviendrais pour un compte-rendu wink

Hors ligne

 

#8 08-10-2014 15:49:41

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Je ne suis pas sur de moi mais je vais quand même te donner une piste...

Il ne faut pas ajouter un Zend\Captcha\ReCaptcha, mais un ZendFormElementCaptcha auquel tu passes la config. La config ressemblera à celle dejà existante dans le service user.

Dans ton Module.php, tu récupères l'évènement init du form. Passes lui ta config.

Code:

[lang=php]
$userService = $e->getApplication()->getServiceManager()->get('zfcuser_user_service');
$events->attach('ZfcUser\Form\Login', 'init', function ($e) use ($userService) {
    $config = $userService->getOptions();

Et ça te permettra de récupérer la config de la captcha (form_captcha_options), que tu peux ensuite injecter dans le factory de ton champ Zend\Form\Element\Captcha.

Pour la question 2, en fait tu ne remplis pas les champs, pas besoin qu'ils existent en DB, tu mappes juste des fonctions pour émuler les champs aux yeux du module. Si tu veux me montrer le code de ton objet User je pourrais surement te détailler plus le fonctionnement dans ton cas précis.

Hors ligne

 

#9 09-10-2014 11:07:29

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Bonjour,

J'ai fais quelques essais concernant la captcha au formulaire de login, je vois donc bien une Zend\Form\Element\Captcha.

http://img4.hostingpics.net/pics/128203login.png

A partir de là, 2 soucis :
- Je ne vois pas comment la configurer pour me retourner une "ReCaptcha".
- Quand j'ajoute la captcha, impossible de me connecter avec un compte créer, il ne doit pas recevoir le code.
Erreur : Authentication failed. Please try again.

J'ai donc repris depuis le début, pour bien comprendre, en ayant ajouter ton code.

AuthUser\Module.php

Code:

[lang=php]public function onBootstrap(MvcEvent $e) {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);

        $app = $e->getParam('application'); 
        $serviceManager = $app->getServiceManager();
        $em  = $eventManager->getSharedManager();

        $userService = $serviceManager->get('zfcuser_user_service');
        //Register a voir plus tard ;)
        $em->attach('ZfcUser\Service\User', 'register', function ($event) use ($serviceManager, $userService) {
            /** @var $userService */
            $form = $event->getParam('form');
            /** @var $form \ZfcUser\Form\Register */
             
            $user = $event->getParam('user');
            /** @var $user \AuthUser\Model\User */
        });
        //Formulaire de login
        $em->attach('ZfcUser\Form\Login', 'init', function ($e) use ($userService) {
            $config = $userService->getOptions();
            $form = $e->getTarget();
            $form->add(array(
                'name' => 'captcha',
                'type' => 'Zend\Form\Element\Captcha',
                'required'   => true,
                'options' => array(
                    'label' => 'Captcha',
                    'captcha' => new Captcha\Dumb(),
                ),
            ));
            print_r($config);
        });
}

print_r($config) me renvois bien ma configuration de zfcuser :

Code:

[lang=php]ZfcUserDoctrineORM\Options\ModuleOptions Object (
    [userEntityClass:protected] => AuthUser\Model\User
    [enableDefaultEntities:protected] =>
        [__strictMode__:protected] =>
            [useRedirectParameterIfPresent:protected] => 1
    [loginRedirectRoute:protected] => privatespace
    [logoutRedirectRoute:protected] => home
    [loginFormTimeout:protected] => 300
    [userFormTimeout:protected] => 600
    [loginAfterRegistration:protected] =>
        [enableUserState:protected] =>
            [defaultUserState:protected] => 1
    [allowedLoginStates:protected] => Array ([0] => [1] => 1 )
    [authAdapters:protected] => Array ([100] => ZfcUser\Authentication\Adapter\Db )
    [authIdentityFields:protected] => Array ( [0] => username )
    [userLoginWidgetViewTemplate:protected] => zfc-user/user/login.phtml
    [enableRegistration:protected] => 1
    [enableUsername:protected] => 1
    [enableDisplayName:protected] =>
        [useRegistrationFormCaptcha:protected] => 1
    [passwordCost:protected] => XX
    [tableName:protected] => user
    [formCaptchaOptions:protected] => Array (
        [class] => Zend\Captcha\ReCaptcha
        [options] => Array (
            [wordLen] => 6
            [expiration] => 300
            [timeout] => 300
            [privkey] => ...ma_privkey...
            [pubkey] => ...ma_pubkey...
        )
    )
)

----- Edit 14h20 -----

Ok, je pense avoir implementé ReCaptacha, il ne me manque plus que de récupérer la configuration.
Erreur actuelle : "Missing public key".

Code:

[lang=php]
use Zend\Captcha;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Captcha\ReCaptcha;

$form->add(array(
    'name' => 'captcha',
    'type' => 'Zend\Form\Element\Captcha',
    'options' => array(
        'label' => 'Captcha',
        'captcha' => new Captcha\ReCaptcha(),
    ),
));

----- Edit 16h -----

Je me rapproche toujours un peu big_smile
J'ai ajouté mes clés public et privé dans le module pour voir le fonctionnement, et cela fonctionne smile
Il me faut donc bien les récupérer de mon $config pour ne pas les avoir en claire dans mon Module.php ...

Code:

[lang=php]public function onBootstrap(MvcEvent $e) {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);

        $em  = $eventManager->getSharedManager();
        $userService = $e->getApplication()->getServiceManager()->get('zfcuser_user_service');
        $zfcServiceEvents = $userService->getEventManager();

        $em->attach('ZfcUser\Form\Login', 'init', function($e) use ($userService) {
            /* @var $form \ZfcUser\Form\Login */
            $form = $e->getTarget();
            $config = $userService->getOptions();
            $formCaptchaOptions = $config->getFormCaptchaOptions();

            $privatekey = 'my_privkey';   
            $publickey = 'my_pubkey';
            $reCaptcha = new Captcha\ReCaptcha();
            $reCaptcha->setPubkey($publickey);
            $reCaptcha->setPrivkey($privatekey);
            print_r($formCaptchaOptions);

            $captcha = new Element\Captcha('captcha');
            $captcha
                ->setCaptcha($reCaptcha)
                ->setLabel('Captcha');
            $form->add($captcha);
        });
    }

Résultat de print_r($formCaptchaOptions) :

Code:

[lang=php]Array (
    [class] => Zend\Captcha\ReCaptcha
    [options] => Array (
        [wordLen] => 6
        [expiration] => 300
        [timeout] => 300
        [privkey] => my_privkey
        [pubkey] => my_pubkey
    )
)

Dernière modification par Oclock (09-10-2014 16:08:21)

Hors ligne

 

#10 09-10-2014 16:43:42

Oclock
Nouveau membre
Date d'inscription: 06-10-2014
Messages: 9

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Et voilà ! big_smile
Bon je ne sais pas si c'est la meilleure méthode, mais ça fonctionne !

Merci pour les pistes, j'ai beaucoup écris dans mon dernier post mais ça m'a permis de réfléchir et de sauvegarder mon code wink

Comme la réponse à ma question principale à été trouvé, je mets "Résolu" en éditant mon 1er post pour partager ma réponse finale, mais je vais continuer à bosser sur mes "questions bonus".

Bonne fin de journée à tous wink

Hors ligne

 

#11 09-10-2014 17:06:49

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu] Formulaire de login ZfcUser et Captcha

Alors, c'est presque une bonne solution smile

Idéalement, il faudrait non pas créer ton objet Form Element Captcha directement mais plutôt via le factory, de sorte à pouvoir changer le comportement de création dynamiquement.

Du coup ce que j'aurais proposé, c'est un add qui comprendrait un

Code:

[lang=php]array_merge(array('type' => 'Element\Captcha'), $config->getFormCaptchaOptions())

En gros un mix de ce que tu avais au début (où il te manquait principalement le type element) et de ton dernier code (injectant la config).

Enfin bon si ta solution marche le reste c'est du bonus !

Hésite pas à poser des questions (voir dans d'autres sujets) pour les autres problèmes !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages