Bonjour à toutes et à tous,

Je met en place un système d'identification et je pars d'une table différente de user. A ce niveau aucun problèmes, j'ai réussi a personnaliser Auth pour qu'il lise cette table plutôt que users par défaut. Mon soucis viens du fait que par défaut, Auth encrypte en md5 le mot de passe. Comment peut on faire pour annuler ce phénomène ou pour reconvertir le mot de passe.

Voici le code de appController, ainsi que du controller qui a ma fonction login et la vue qui va avec.

AppController.php :

public $components = array('Session','RequestHandler',
        'Auth'  => array(
            'loginAction' => array(
                'controller' => 'prospects',
                'action' => 'login',
                'plugin' => 'users'
            ),
            'authError' =>  'Erreur d\'identification',
            'authenticate'  =>  array(
                'Form'  =>  array(
                    'fields'    =>  array('username'=>'lemail','password'=>'lpassword'),
                    'userModel' =>  'Prospect',
                )
            )
        )
    );

ProspectsController.php :

public function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                //return $this->redirect(array('action'=>'propr_index')); 
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }
    }

login.ctp :

<?php echo $this->Form->create('Prospect'); ?>
        <?php echo $this->Form->input('lemail',array('label'=>"Login")); ?>
        <?php echo $this->Form->input('lpassword',array('label'=>"Mot de passe",'type'=>'password')); ?>
    <?php echo $this->Form->end('Se connecter'); ?>

Merci d'avance pour vos réponses.

4 réponses


lepetitnico
Auteur
Réponse acceptée

Pour passer le hashage, il suffit d'effectuer la requête de sélection avant de faire un login et de donner le résultat à la fonction login, il enregistrera directement les données dans la session.

Bonjour,

En effet avec la version 1.3 de Cake le comportement de Auth était de chiffrer le mot de passe en tout état de cause.
Je ne crois pas qu'il y ai (nativement) de manière de le contourner...
En revanche, depuis la version 2.0 ce comportement à été modifié, et par défaut le mot de passe reste en clair si l'on ne l'encrypte pas. Si vous avez possibilité de passer en 2.0, ceci devrait certainement vous faire gagner du temps...

Après, si vous devez rester sur la 1.3, il y a bien la solution de surcharger le comportement Auth afin de le modifier pour annuler ce comportement. Si vous ne vous en sentez pas capable je pourrais éventuellement y jeter un oeil pour vous.

Happy Baking !

Merci xtrembaker, mais je suis en 2.0, et je n'arrive pas à déchiffrer le mot de passe, connais tu la façon de débloquer cela ?

Lepetitnico

Je pense que tu trouvera la réponse dans le tuto concernant la création d'un système de membre...

L'auteur laisse volontairement le problème se présenter pour explique la méthode de chiffrement