Bonjour amis Grafikartiens !
Je me tourne aujourd'hui vers votre savoir-faire et votre sympathie pour la question suivante.
Pour le tutoriel sur la gestion des membres sur cakePHP, au moment de créer le formulaire pour éditer le profil d'un membre, on lui propose la possibilité de changer son mot de passe.
Mon formulaire fonctionne, tout va bien à ce niveau là mais avec la ligne suivante :
[code]$d['User']['password'] = Security::hash($d['User']['pass1'],'sha256',true);[/code]
L'encryptage n'est pas bon. Dans le tuto il y a null à la place de sha256, mais le résultat est le même dans les deux cas. J'avais le même problème lors de l'inscription, le mot de passe crypté n'allait pas et j'ai donc trouver qu'il fallait mettre la ligne ci-dessus dans l'AppController.
AppController :
[code]function beforeFilter(){
$this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>false);
$this->Auth->authorize = array('Controller');
if(!empty($d['User']['password'])){
$d['User']['password'] = Security::hash($d['User']['password'],'sha256',true);
}
...[/code]
UsersController
[code] function edit(){
$user_id = $this->Auth->user('id');
if(!$user_id){
$this->redirect('/');
die();
}
$this->User->id = $user_id;
$passError = false;
if($this->request->is('put') || $this->request->is('post')){
$d = $this->request->data;
$d['User']['id'] = $user_id;
if(!empty($d['User']['pass1'])){
if($d['User']['pass1'] == $d['User']['pass2']){
$d['User']['password'] = Security::hash($d['User']['pass1'],'sha256',true);
}else{
$passError = true;
}
}...[/code]
Si j'effectue un changement de mot de passe sur l'édition du profil et que je me déconnecte ensuite. Lors de la connexion, il cherche dans ma table un mot de passe différent que celui envoyé après la modification.
Par exemple :
le debug affiche que dans la base de donnée est envoyé 'untrucbiencompliquédelamortquituetout'
et quand je me connecte il cherche 'untrucbiencompliquédelamortquituetoutmaisquinestpaslememe'
Avez vous une idée de où se situe le problème ?
merci