You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							2.3 KiB
						
					
					
				| <?php | |
| 
 | |
| namespace App\Http\Controllers\Auth; | |
| 
 | |
| use App\Http\Controllers\Controller; | |
| use Illuminate\Auth\Events\PasswordReset; | |
| use Illuminate\Http\RedirectResponse; | |
| use Illuminate\Http\Request; | |
| use Illuminate\Support\Facades\Hash; | |
| use Illuminate\Support\Facades\Password; | |
| use Illuminate\Support\Str; | |
| use Illuminate\Validation\Rules; | |
| use Illuminate\Validation\ValidationException; | |
| use Inertia\Inertia; | |
| use Inertia\Response; | |
| 
 | |
| class NewPasswordController extends Controller | |
| { | |
|     /** | |
|      * Display the password reset view. | |
|      */ | |
|     public function create(Request $request): Response | |
|     { | |
|         return Inertia::render('Auth/ResetPassword', [ | |
|             'email' => $request->email, | |
|             'token' => $request->route('token'), | |
|         ]); | |
|     } | |
| 
 | |
|     /** | |
|      * Handle an incoming new password request. | |
|      * | |
|      * @throws \Illuminate\Validation\ValidationException | |
|      */ | |
|     public function store(Request $request): RedirectResponse | |
|     { | |
|         $request->validate([ | |
|             'token' => 'required', | |
|             'email' => 'required|email', | |
|             'password' => ['required', 'confirmed', Rules\Password::defaults()], | |
|         ]); | |
| 
 | |
|         // Here we will attempt to reset the user's password. If it is successful we | |
|         // will update the password on an actual user model and persist it to the | |
|         // database. Otherwise we will parse the error and return the response. | |
|         $status = Password::reset( | |
|             $request->only('email', 'password', 'password_confirmation', 'token'), | |
|             function ($user) use ($request) { | |
|                 $user->forceFill([ | |
|                     'password' => Hash::make($request->password), | |
|                     'remember_token' => Str::random(60), | |
|                 ])->save(); | |
| 
 | |
|                 event(new PasswordReset($user)); | |
|             } | |
|         ); | |
| 
 | |
|         // If the password was successfully reset, we will redirect the user back to | |
|         // the application's home authenticated view. If there is an error we can | |
|         // redirect them back to where they came from with their error message. | |
|         if ($status == Password::PASSWORD_RESET) { | |
|             return redirect()->route('login')->with('status', __($status)); | |
|         } | |
| 
 | |
|         throw ValidationException::withMessages([ | |
|             'email' => [trans($status)], | |
|         ]); | |
|     } | |
| }
 | |
| 
 |