2016-07-25 10 views
0

私のアプリケーション用のユーザープロファイルを作成しました。このユーザープロファイルでは、ユーザーは電子メールアドレス、パスワード、位置、会社名などの情報を更新できます。ユーザーが情報を変更したい場合は、現在のパスワードを入力する必要があります。私は現在のパスワードが正しいかどうかを確認します。エラーは、ユーザーが提供している現在のパスワードを確認できません。以下は私のユーザーコントローラコードの一部です。dbに保存されたパスワードを取得する

if($request['current_pwd']) 
     { 
      if($request['new_pwd']) 
      { 
       if($user->password == bcrypt($request['current_pwd'])) 
       { 
        $user->password = bcrypt($request['new_pwd']); 
       }else{ 
        return redirect()->back()->with(['message' => 'Wrong current password !']); 
       } 
      }elseif($user->password == bcrypt($request['current_pwd'])) 
      { 
       $user->save(); 
      }else{ 
       return redirect()->back()->with(['message' => 'Wrong Current Password ! Check Again!']); 
      } 
     }else{ 
      return redirect()->back()->with(['message' => 'Please enter your current password !']); 
     } 

ユーザーが現在のパスワードを変更したい場合、ユーザーは現在のパスワード、新しいパスワードを入力する必要があります。現在のパスワードがdbに保存されているパスワードと等しい場合、新しいパスワードが更新されます。そうでない場合は、メッセージを返します。

答えて

3

この が最初のハッシュナムが含まれてみてくださいお使いのコントローラでエスパス、

use Illuminate\Support\Facades\Hash; 

と必ず現在のパスワードを入力するようにするには、次の条件を使用するには、を塩漬けによりへの有効な

if($request->has('current_password')){ 
     $current_password = $request->input('current_password'); 
     if(!Hash::check($current_password,Auth::user()->password)){ 
      return redirect()->back()->withInput()->withErrors([ 
       'current_password' => 'You current password doesnot match with the logined user\'s !' 
      ]); 
     } 
    } 
+0

うわー,,,仕事です –

1

暗号化された「現在のパスワード」エントリと、ユーザーが既に所有しているパスワードを一致させる必要があります。あなたは関数を使用して、ユーザーのパスワードを取得することができますAuth::user()

は、だからあなたの条件は次のようになります。

:あなたがそうのように、ユーザーIDを指定することで使用することができます getAuthPassword():別の関数は

if(bcrypt($request['current_pwd']) == Auth::user()) { 
    // Do password change 
} else { 
    // Invalid password error 
} 

あり

$user = User::find('1'); 
$user->getAuthPassword(); 

これは、ユーザーIDのパスワードを取得する1

+0

に、このようにチェックしてください!私はgetAuthPassword()を使用しました。 –

+0

'getAuthPassword()'を使うと、それをユーザーIDとともに使用する必要があります。あなたは 'Auth :: user()'を試しましたか? – AliIshaq

+0

はい、ofcoz、ここに私のコードの一部です。 '{$ user = User :: where(' id '、$ id)}'そして、$ user-> getAuthPassword()。しかしそれはOKではありません –

0

です!この種の$user->password == bcrypt($request['current_pwd']チェックは機能しません!

同じパスワードのハッシュを作成しようとすると、別のハッシュになります!

だから、それは動作しませんでしたlaravel 5.2

$crypt = new Hashing\BcryptHasher(); 
$match = $crypt->check($user->password, $request['current_pwd']); 
関連する問題