Se logguer avec un autre champ que le champ username en cakephp
Aujourd’hui, pas de gros code ou de bonus. Juste une info (ça change).
Vous avez suivi le tutoriel pour apprendre à créer un espace membre en cakephp. Tout marche mais un jour, vous avez besoin de vous logguer avec un autre champ que le champ « username ». Par exemple, avec votre email.
Cakephp permet 3 méthodes pour l’authentification:
- FormAuthenticate (l’authentification avec formulaire en POST, celle que vous avez du comprendre)
- BasicAuthenticate (l’authentification Basic HTTP)
- DigestAuthenticate (authentification Digest HTTP)
On ne traitera pas des 2 derniers cas ici. Nous utiliserons l’authentification de « base » (pas la « basic » :D) en POST.
En effet, par défaut, l’AuthComponent utilise FormAuthenticate.
Comment se logguer avec un champ?
Si vous avez suivi l’exemple de la doc, sur votre AppController, vous devez avoir ce code :
public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home') ) );
Pour changer le champ avec lequel se logguer c’est tout simple :
public $components = array( 'Session','Cookie','Auth' => array( 'loginRedirect' => array('controller' => 'users', 'action' => 'index'), 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'), 'authenticate' => array( 'Form' => array( 'fields' => array('username' => 'email') ) ) ) );
Qu’est ce qu’on a fait?
Dans le composant Auth, on rajoute une clé authenticate qui contient un array et à l’intérieur une clé Form qui prend aussi un array comme valeur.
La partie « marrante » est que vous devez associer « username » à l’autre champ donc on se retrouve avec un array(‘username’ => ’email’)
Personnellement, ça me fait marrer 😀
Vous pouvez aussi rajouter les clés « Basic » et « Digest » si vous souhaitez utiliser ces méthodes. Il faudra les mettre au même niveau que « Form ».
Comme annoncé, cet article est court et vous permet de modifier la façon de se logguer sur cakephp.
Si vous avez apprécié cet article, n’hésitez pas à le partager sur les réseaux sociaux et/ou de laisser un commentaire ci dessous.
Bon dev à vous 😉