Bonjour à vous,

Tout d'abord je tiens à vous féliciter pour ce site super et bien expliquer.
Je découvre cakePHP et ce site m'aide beaucoup dans mon apprentissage.

Actuellement, je bute sur un problème lors de l'identification en utilisant le composant Auth.

Je n'utilise pas de UserController mais un InstructorController (tout comme un model Instructor), j'aimerai effectuer identification sur l'adresse mail de l'instructeur. Où puis-je renseigner dans cakePHP, le faites de ne pas vérifier sur le champs "username" mais "Mail" ?

Les autres parties du site n'ont pas besoin d'être protégée, ce n'est qu'un site d'information, seule la partie d'administration doit être refusée à l'utilisateur anonyme.

Voici mon AdministrationController

<?php
class AdministrationController extends AppController {
    public $uses = array('Members', 'Instructors', 'Addresses', 'Lessons', 'Schedules');
    public $components = array(
        'Session',
        'Auth' => array(
            'loginAction' => array('controller' => 'Administration', 'action' => 'login',),
            'loginRedirect' => array('controller' => 'Administration', 'action' => 'login'),
            'logoutRedirect' => array('controller' => 'Administration', 'action' => 'login'),
            'authError' => "Vous n'avez pas accès à cette page",
            'authorize' => array('Controller'),
            'authenticate' => array(
                'Form' => array('userModel' => 'Instructors', 'username' => 'Mail')
            )
        )
    );
    public function isAuthorized($instructor) {
        return true;
    }
    public function beforeFilter() {
        $this->Auth->allow('login');
        parent::beforeFilter();
    }

    function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash('Votre e-mail ou mot de passe est incorrecte.');
            }
        }
    }
    function logout() {
        $this->redirect($this->Auth->logout());
    }
    function index() {

    }
}

2 réponses


Gregory
Réponse acceptée

Salut,

Je ne suis pas expert cake mais je crois qu'il faut rajouter ça dans ton array form

authenticate' => array(
                'Form' => array('userModel' => 'Instructors', 
                        'fields' => array('username' => 'mail','password' => 'tonpass'),
                        )

Ensuite je mettrai tout le component dans le AppController

Noodlex
Auteur

Effectivement, il y avait un soucis dans la structure de mon "authenticate", j'ai remis cela dans mon AppController et c'est vraiment mieux comme cela, merci.

J'tournais en rond autour de la bonne solution ^^