2016-11-12 16 views
2

私はLaravel 5.3アプリケーションを構築していて、laravel(artisan make:auth)のbasic authを使用しています。今、 "パスワードを忘れた"機能は正常に動作するので、パスワードを知らないためにログインできない場合は、メールを受け取ってリセットすることができます。しかし今、私はログインしたユーザーもパスワードを変更できるようにしたい。私はthatを見つけましたが、これは本当に私を助けません。私はまた、ResetsPasswords形質があることを知っていますが、どうすれば使用できますか?そして、すでに使えるビューもありますか?Laravel 5.3パスワード変更

誰かが私を助けることができますか?

答えて

3

あなたが実際にあなたが例えば、同じ結果を得るために、独自の関数を書くことができ、これを達成するために、デフォルトのパスワードのコントローラを使用する必要はありません。

public function postUpdatePassword() { 

     $user = Auth::user(); 

     $password = $this->request->only([ 
      'current_password', 'new_password', 'new_password_confirmation' 
     ]); 

     $validator = Validator::make($password, [ 
      'current_password' => 'required|current_password_match', 
      'new_password'  => 'required|min:6|confirmed', 
     ]); 

     if ($validator->fails()) 
      return back() 
       ->withErrors($validator) 
       ->withInput(); 


     $updated = $user->update([ 'password' => bcrypt($password['new_password']) ]); 

     if($updated) 
      return back()->with('success', 1); 

     return back()->with('success', 0); 
    } 

あなたは、私は新しい登録見ることができるようにカスタム検証ルール新しいpassowrdは古いものと一致した場合にだけ、「アプリ/プロバイダ/ AppServiceProvider.php」に移動し、ブート機能に次の行を追加し、ルールを登録するには、チェックする:

Validator::extend('current_password_match', function($attribute, $value, $parameters, $validator) { 
      return Hash::check($value, Auth::user()->password); 
     }); 

検証ルールは機能しますが、エラーメッセージが表示されず、エラーメッセージが追加されます作成したばかりの新しいルールにあなたは「リソース/ LANG/EN/validation.php」に次の行を変更する必要があります。それだけです

'custom' => [ 
     'current_password' => [ 
      'current_password_match' => 'Current password is incorrect.', 
     ], 
    ], 

を、今、あなたはあなたの現在のユーザーのパスワードを変更するには、この機能を使用することができます:)

+0

今私はちょうどフィールドを持つフォームとビューを必要とするので、よさそうですcurrent_passoword、new_password、new_password_confirmを入力して、その関数に送信してください。 – nameless

+0

まさにそれが今あなたがしなければならない唯一のものです。 –

+0

は働いてくれました、ありがとうございます:) – nameless

0

AppServiceProvider.phpファイルをクロージャできれいにしたい場合は(何らかの理由で;個人的に私はあなたが以下の二つのことを実行追加することができます)きちんと整頓これらの小さなファイルを好む:AppServiceProvider.php

Validator::extend('current_password_match', 'App\Validators\[email protected]'); 

2のブート()メソッドに以下を追加します)

1)を追加します。新しいファイル 'app/Validators/PasswordMatch.php'を上記のクロージャに合わせてください。

<?php 

namespace App\Validators; 
use Hash; 
use Auth; 

class PasswordMatch 
{ 
    public function check($attribute, $value, $parameters, $validator){ 

     return Hash::check($value, Auth::user()->password); 

    } 

} 

それからまた、のようなあなたの拡張FormRequestクラスのメッセージ()メソッドに検証ルールのメッセージを追加することができます。

'current_password_match' => 'Current password is incorrect',