2016-05-31 8 views
0

Kann mir jemand sagen, warum ich eine Fehlermeldung bekomme, wenn ich versuche, das Benutzerpasswort zu aktualisieren? Hier ist die Form:Benutzerkennwort aktualisieren Laravel

 {!! Form::model($user, ['method' => 'PATCH', 'class' => 'bootstrap-wrapper', 'action' => ['[email protected]', $user->id]]) !!} 
     <div class="form-group col-md-4"> 
      {!! Form::label('passwordOld', 'Įrašykite dabartinį slaptažodį') !!} 
      {!! Form::password('passwordOld', ['class' => 'form-control']) !!} 
     </div> 
     <div class="form-group col-md-4"> 
      {!! Form::label('password', 'Įrašykite naują slaptažodį') !!} 
      {!! Form::password('password', ['class' => 'form-control']) !!} 
     </div> 
     <div class="form-group col-md-4"> 
      <br>{!! Form::submit('Išsaugoti', ['class' => 'form-control btn btn-success', 
      'style' => 'height: 45px']) !!} 
     </div> 
     {!! Form::close() !!} 

Und hier ist die Funktion:

public function passwordUpdate(Request $request, $id) 
{ 
    $user = User::where('id', $id)->first(); 

    $passwordOld = Hash::make($request->passwordOld); 

    if(Auth::user()->id == $user->id && $passwordOld == $user->password){ 
     $user->password = Hash::make($request->password); 
     $user->save(); 
     flash()->success('Slaptažodis sėkmingai pakeistas.'); 
     return redirect()->back(); 
    } 
    else { 
     flash()->error('Jūs neturite teisių.'); 
     return redirect()->back(); 
    } 
} 

Was führt dazu, dass ich erhalte else Anweisung ausgeführt?

Antwort

1

Das alte Passwort zu hacken und die Zeichenfolgenwerte zu vergleichen wird nicht wie erwartet funktionieren, da Sie jedes Mal einen anderen Hashwert erhalten.

so statt:

Hash::make($request->passwordOld); 

tun:

Hash::check($request->passwordOld, Auth::user()->password); 
+0

Dank! Es funktioniert! –

Verwandte Themen