Bonjour,
Je viens de remarquer que lorsque je veux modifié les mots de passe à partir de l'admin, le nouveau mdp n'est pas sécurisé.
voici mon code de ma fonction du UsersController.php

function admin_edit($id = null){
        if($this->request->is('put')){
            $d = $this->request->data'User'];
            if($d'password'] != $d'passwordconfirm']){
                $this->Session->setFlash("Les mots de passe ne correspondent pas", "notif", array('type'=>'error'));
            }else{
                if(empty($d'password']))
                    unset($d'password']);
                if($this->User->save($d)){
                    ($this->request->is('put')) ? $this->Session->setFlash("Les informations de l'utilisateur ont bien été modifiées", 'notif'):$this->Session->setFlash("Un nouvel utilisateur a bien été ajouté", 'notif');
                    $this->redirect(array('action'=>'index'));
                    }
                }   
        }elseif($this->request->is('post')){
            $d = $this->request->data'User']; 
            if($d'password'] != $d'passwordconfirm']){
                $this->Session->setFlash("Les mots de passe ne correspondent pas", "notif", array('type'=>'error'));
            }else{
                if($this->User->save($d)){
                    ($this->request->is('put')) ? $this->Session->setFlash("Les informations de l'utilisateur ont bien été modifiées", 'notif'):$this->Session->setFlash("Un nouvel utilisateur a bien été ajouté", 'notif');
                    $this->redirect(array('action'=>'index'));
                }  
            }        
        }elseif($id){
            $this->User->id = $id; 
            $this->request->data = $this->User->read('username,mail,role,active,id'); 
        }
        $d = array(); 
        $d'roles'] = array(
            'admin' => 'admin',
        );
        $this->set($d);
    }

Comment sécuriser la modification du mot de passe comme dans ma fonction profil ?
C'est à dire ainsi

if(!empty($d'User']'pass1'])){
                if($d'User']'pass1']==$d'User']'pass2']){
                    $d'User']'password'] = Security::hash($d'User']'pass1'],null,true); 
                }else{
                    $passError = true;  
                }
            }

Merci de vos réponses.

2 réponses


elscorto
Réponse acceptée

Salut graf en parle dans son tu sont tuto, voilà ce que j'ai mis dans mon beforeSave de mon model User
$this->data'User']'password'] = AuthComponent::password($this->data'User']'password']);

zenkiai
Auteur

Merci elscorto,
c'est tellement logique, que je me sens bête de ne pas y avoir penser à mettre cela dans mon beforeSave.
j'ai mis ceci dans mon cas

$this->data'User']'password'] = Security::hash($this->data'User']'password'],null,true);

Merci de m'avoir aiguiller