Bonjour,

Tout d'abord un grand merci pour tous ces tutos ^^ c'est vraiment bien plus pratique que des pages et des pages de textes !

Pour ma part, je n'aurai qu'une question toute simple : comment faire pour s'authentifier avec un autre champ que "Username" ? J'ai cherché partout sur le net et toutes les méthodes décrites n'ont pas fonctionné. J'ai l'impression que Cakephp ne peut utiliser la fonction auth->login uniquement sur UsersController que je n'ai pas (j'ai opté pour un autre nom). Pour info, j'ai un controller nommé "EntreprisesController" et j'ai suivi le tuto des systèmes de membres.

Si quelqu'un a rencontré ce problème qu'il partage son expérience ça serait sympa ^^

Merci encore pour toute âme charitable qui souhaite m'aider :)

3 réponses


Wa3aR
Auteur
Réponse acceptée

Bon ben j'ai résolu le problème après des heures de recherches.

Il faut changer non seulement les attributs de connexion (donc le username) mais aussi, le userModel.

Pour ma part, j'ai ajouté le code suivant au début de mon controller avec une fonction beforeFilter :

$this->Auth->authenticate = array(
            'Form' => array(
                'fields' => array('username' => 'email_admin', 'password' => 'password'),
                'userModel' => 'Entreprise',
                ));

Sachant que ma table s'appelle Entreprises, que mon controller s'appelle EntreprisesControllers et que mon champ pour la connexion est email_admin :) en espérant que ça aidera d'autres !

Tu peux loguer manuellement un utilisateur en envoyant ses information dans $this->Auth->login(ICI LE TABLEAU USER)

Wa3aR
Auteur

J'ai bien essayé ça au début mais ça me logué quelques soient les identifiants que je rentrais. Et j'ai lu sur la documentation ça :

"In 2.0 $this->Auth->login($this->request->data) will log the user in with whatever data is posted, whereas in 1.3 $this->Auth->login($this->data) would try to identify the user first and only log in when successful."

Donc je me suis dit que ce n'était pas possible !