Bonjour ,

je rencontre un petit souci avec CakePHP et le composant Auth
j'ai suivi le tuto sur l'espace membre -> tout fonctionne

mais je souhaite me loguer avec le champs mail et non username
j'ai procèdé au modification suivante :

mon formulaire
<?= $this->Form->create('User'); ?>
<?= $this->Form->input('mail', array('label' => 'Adresse mail','class' => 'form-control')); ?>
<?= $this->Form->input('password', array('label' => "Mot de passe",'class' => 'form-control')); ?>
<?= $this->Form->input('password2', array('type' => 'password', 'label' => "Confirmer Mot de passe",'class' => 'form-control')); ?>
<?= $this->Form->end(array('label' => "Créer mon compte",'class' => 'btn_l btn-success pull_right') ); ?>

mon appcontroller
public $components = array(
'Session',
'Cookie',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'mail')
)
)
)
);

et j'ai bien un champs mail dans ma BDD

mais quand je soumets le formulaire , rien ne se passe je n'ai plus la requete sql de debug -> j'ai l'impression qu'il fait meme plus de requete
curieusement je mets 'fields' => array('username' => 'password') et la bingo j'ai une requete

SELECT User.id, User.mail, User.phone, User.password, User.firstname, User.lastname, User.society, User.siret, User.street, User.street2, User.cp, User.city, User.country, User.avatar, User.com, User.active, User.token, User.created, User.role FROM podoservice\_account.users AS User WHERE User.password = 'test' LIMIT 1

j'ai l'impression qu'il aime pas mon champs mail ...

6 réponses


Heu est-ce qu'on peut voir aussi le controller User ? Et est-ce que tu peux utiliser les options code, parce que là sérieusement c'est un chouia illisible.

<?= $this->Form->input('username', array('label' => 'Adresse mail','class' => 'form-control')); ?>

Et comme çà ?

Lol -_- Tu utilise le champ Username en changeant le label ? Hum, ok.
C'est pas ce qu'il demande je pense, mais bon...

Bonjour books.

Il faut que tu l'indiques dans ton composant Auth de ton AppController , que tu utilises le champ mail et non le champ username pour l'identification, comme ceci :

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'mail')
            )
        )
    )
);

Si je n'ai pas fait d'erreur (je ne pense pas en tout cas), tout devrait fonctionner :)

bouks
Auteur

Bonjour

Carpetos -> Merci pour la bidouille mais je veux faire quelque chose de propre et faire les bons liens avec ma BDD

Lartak11 -> J'avais déja fait la manip et cela ne fonctionné pas , je vais re-essayer et revenir vers vous

en tous cas merci

Je pense qu'à partir du moment où tu spécifies le champ username, il faut aussi préciser le champ password

public $components = array(
        'Auth' => array(
            'authenticate' => array(
                'Form' => array(
                    'fields' => array('username' => 'mail','password'=>'password')
                    )
                )
            )
        );