Bonjour,
Je recherche une solution pour pouvoir utiliser la fonction login sur deux tables différentes :

if($this->request->is('post')) {
    if($this->Auth->login()) {
    $this->Session->setFlash("Vous êtes maintenant connecté", "notif");
    $this->redirect('/users/');
    }
    else {
        if( LA ON VERIFIE QUE LES INFOS NE SONT PAS DANS LA DEUXIEME TABLE) {
            LA ON LOGUE L'UTILISATEUR
        }
        else {
            // pas de couple login/pass dans aucune des tables
        $this->Session->setFlash("Idenfiants incorrects", "notif", array("type"=>"error"));
    }
}

Si quelqu'un a une idée, elle sera la bienvenue :-)

Merci d'avance,

3 réponses


mespeche
Réponse acceptée

Salut à toi,

Très facile à mettre en place, comme ceci :

$this->loadModel('Table2');
$user = $this->Table2->find('first', array(
    'conditions' => array('Table2.username' => $username, 'Table2.password' => $password)
));
if (!empty($user)) {
    $this->User->id = $user'Table2']'id'];
    $this->Auth->login($user'Table2']);
}
site&see
Auteur

Pour aider d'autres, si besoin, voilà le code mis en place (grâce à mespeche) :

function login() {

        if($this->request->is('post')) {
            if($this->Auth->login()) {
                $this->Session->setFlash("Vous êtes maintenant connecté", "notif");
                $this->redirect('/users/');
            }
            else {
                    $username=$this->request->data'User']'username'];
                    $password=(Security::hash($this->request->data'User']'password'], null, true));
                    $this->loadModel('AUTRE_TABLE');
                    $user = $this->AUTRE_TABLE->find('first', array(
                        'conditions' => array('AUTRE_TABLE.login' => $username, 'AUTRE_TABLE.password' => $password)
                    ));
                    if (!empty($user)) {
                        $this->User->id = $user'AUTRE_TABLE']'id'];
                        $this->Auth->login($user'AUTRE_TABLE']);
                    } 
                    $this->Session->setFlash("Idenfiants incorrects", "notif", array("type"=>"error"));
                    //debug(Security::hash($this->request->data'User']'password']), null, true);
            }
        }
    }
site&see
Auteur

Ok, avec les modifs pour adapter à mon code, ça marche niquel,
Ta solution est top, merci beaucoup !