2016-11-04 3 views
2

私はLaravel 5.3でAPIを構築していますが、パスワードをリセットするときにデフォルトの応答を変更する必要があります。Laravel change password reset response

フレームワークを変更せずにこれを行うにはどうすればよいでしょうか。デフォルトの応答はここにある私のResetPasswordsトレイトで

\Illuminate\Foundation\Auth\ResetPasswords

/** 
    * Get the response for a successful password reset. 
    * 
    * @param string $response 
    * @return \Illuminate\Http\Response 
    */ 
    protected function sendResetResponse($response) 
    { 
     return redirect($this->redirectPath()) 
          ->with('status', trans($response)); 
    } 

    /** 
    * Get the response for a failed password reset. 
    * 
    * @param \Illuminate\Http\Request 
    * @param string $response 
    * @return \Illuminate\Http\Response 
    */ 
    protected function sendResetFailedResponse(Request $request, $response) 
    { 
     return redirect()->back() 
        ->withInput($request->only('email')) 
        ->withErrors(['email' => trans($response)]); 
    } 

私がしたいことはこれです:

/** 
    * Get the response for a successful password reset. 
    * 
    * @param string $response 
    * @return \Illuminate\Http\Response 
    */ 
    protected function sendResetResponse($response) 
    { 
     return response()->json(['success' => trans($response)]); 
    } 

    /** 
    * Get the response for a failed password reset. 
    * 
    * @param \Illuminate\Http\Request 
    * @param string $response 
    * @return \Illuminate\Http\Response 
    */ 
    protected function sendResetFailedResponse(Request $request, $response) 
    { 
     return response()->json(['error' => trans($response)], 401); 
    } 

それでは、どのように私ができるか私が欲しいのはこれですフレームワークに変更を加えることなくこれを達成できますか?

答えて

1

2番目のコードブロックのメソッドをResetPasswordControllerにコピーします。これは、それを使用するコントローラーのTraitのメソッドをオーバーライドします。

Laravelフレームワークを変更していないので、次回のコンポーザインストール時に変更内容が失われることはありません。