Bonjour à tous.
Je suis en train de développer une application, et quand je veux modifier un utilisateur, je souhaiterais rentrer le mot de passe de cet utilisateur en haut de la page, de sorte que l'utilisateur ne soit pas modifié par n'importe qui.
Une image sera plus pratique pour comprendre :
http://hpics.li/023086b

Sauf que quand je rentre le "mot de passe actuel", le mot de passe crypté est différent de celui dans la base de données.
Pour l'exemple : Mon utilisateur à un mot de passe "abcdef" crypté lors de la création d'utilisateur avec la fonction bcrypt. Et lorsque je rentre le "mot de passe actuel" avec le mdp "abcdef", ça ne correspond pas (voir vardump) :
http://hpics.li/26bd119

J'ai ce code là pour l'instant :

public function update($id, Request $request){

        $user = User::whereId($id)->first();

        $mdpuser = bcrypt($request->input('passwordactu'));

        var_dump($user->name);
        var_dump($user->password);
        var_dump($mdpuser); die;

Je sais pas vraiment si ma solution est bonne, dans ce cas pourquoi les mots de passes ne sont pas identiques ? Ou si je devrais décrypter le mot de passe pour la vérification, je suis un peu à l'aveugle ^^ Si quelqu'un peut m'éclairer, d'avance je vous remercie ! :)

4 réponses


Alexandre #lbac
Réponse acceptée

Tout simplement ;)

password_verify($request->input('old_password'), Auth::user()->password)

Salut,

Tu as la fonction Hash::check('plain-text', $hashedPassword) qui fait ce que tu as besoin (https://laravel.com/docs/5.3/hashing#basic-usage)

iGenezys
Auteur

Bonjour, merci pour vos réponses. Je me suis trop attaché au fait que je voulais que les deux mots de passes soient cryptés, alors qu'il n'y avait pas besoin, du coup j'ai compris la doc laravel que j'avais fouillé (mais merci quand même AlexJM :) ) et merci Squall pour le bout de code qui m'a fait comprendre ^^