mirror of
				https://github.com/BookStackApp/BookStack.git
				synced 2025-10-31 03:50:27 +03:00 
			
		
		
		
	Brings app auth controller handling aligned within the app, rather than having many overrides of the framwork packages causing confusion and messiness over time.
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace BookStack\Http\Controllers\Auth;
 | |
| 
 | |
| use BookStack\Actions\ActivityType;
 | |
| use BookStack\Http\Controllers\Controller;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Facades\Password;
 | |
| 
 | |
| class ForgotPasswordController extends Controller
 | |
| {
 | |
|     /**
 | |
|      * Create a new controller instance.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct()
 | |
|     {
 | |
|         $this->middleware('guest');
 | |
|         $this->middleware('guard:standard');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Display the form to request a password reset link.
 | |
|      */
 | |
|     public function showLinkRequestForm()
 | |
|     {
 | |
|         return view('auth.passwords.email');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Send a reset link to the given user.
 | |
|      *
 | |
|      * @param \Illuminate\Http\Request $request
 | |
|      *
 | |
|      * @return \Illuminate\Http\RedirectResponse
 | |
|      */
 | |
|     public function sendResetLinkEmail(Request $request)
 | |
|     {
 | |
|         $this->validate($request, [
 | |
|             'email' => ['required', 'email'],
 | |
|         ]);
 | |
| 
 | |
|         // We will send the password reset link to this user. Once we have attempted
 | |
|         // to send the link, we will examine the response then see the message we
 | |
|         // need to show to the user. Finally, we'll send out a proper response.
 | |
|         $response = Password::broker()->sendResetLink(
 | |
|             $request->only('email')
 | |
|         );
 | |
| 
 | |
|         if ($response === Password::RESET_LINK_SENT) {
 | |
|             $this->logActivity(ActivityType::AUTH_PASSWORD_RESET, $request->get('email'));
 | |
|         }
 | |
| 
 | |
|         if (in_array($response, [Password::RESET_LINK_SENT, Password::INVALID_USER, Password::RESET_THROTTLED])) {
 | |
|             $message = trans('auth.reset_password_sent', ['email' => $request->get('email')]);
 | |
|             $this->showSuccessNotification($message);
 | |
| 
 | |
|             return back()->with('status', trans($response));
 | |
|         }
 | |
| 
 | |
|         // If an error was returned by the password broker, we will get this message
 | |
|         // translated so we can notify a user of the problem. We'll redirect back
 | |
|         // to where the users came from so they can attempt this process again.
 | |
|         return back()->withErrors(
 | |
|             ['email' => trans($response)]
 | |
|         );
 | |
|     }
 | |
| }
 |