From 6db95bbf2a6e0c4fbd6c66e4130af55065a25c38 Mon Sep 17 00:00:00 2001 From: David Dorenbos Date: Fri, 13 Jun 2025 09:05:21 +0200 Subject: [PATCH 1/2] Move validation to form requests --- .../Auth/ConfirmablePasswordController.php | 3 +- .../Auth/NewPasswordController.php | 10 ++---- .../Auth/RegisteredUserController.php | 11 ++----- .../Requests/Auth/ConfirmPasswordRequest.php | 28 ++++++++++++++++ .../Requests/Auth/ForgotPasswordRequest.php | 28 ++++++++++++++++ app/Http/Requests/Auth/RegisterRequest.php | 32 +++++++++++++++++++ .../Requests/Auth/ResetPasswordRequest.php | 31 ++++++++++++++++++ 7 files changed, 125 insertions(+), 18 deletions(-) create mode 100644 app/Http/Requests/Auth/ConfirmPasswordRequest.php create mode 100644 app/Http/Requests/Auth/ForgotPasswordRequest.php create mode 100644 app/Http/Requests/Auth/RegisterRequest.php create mode 100644 app/Http/Requests/Auth/ResetPasswordRequest.php diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php index c729706d..da2defbd 100644 --- a/app/Http/Controllers/Auth/ConfirmablePasswordController.php +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\ConfirmPasswordRequest; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -23,7 +24,7 @@ public function show(): Response /** * Confirm the user's password. */ - public function store(Request $request): RedirectResponse + public function store(ConfirmPasswordRequest $request): RedirectResponse { if (! Auth::guard('web')->validate([ 'email' => $request->user()->email, diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php index 0b4c6cbd..6cbb84ef 100644 --- a/app/Http/Controllers/Auth/NewPasswordController.php +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -3,13 +3,13 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\ResetPasswordRequest; 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; @@ -32,14 +32,8 @@ public function create(Request $request): Response * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(ResetPasswordRequest $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. diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 08caeef1..47822c3a 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -3,13 +3,12 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\RegisterRequest; use App\Models\User; use Illuminate\Auth\Events\Registered; use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules; use Inertia\Inertia; use Inertia\Response; @@ -28,14 +27,8 @@ public function create(): Response * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(RegisterRequest $request): RedirectResponse { - $request->validate([ - 'name' => 'required|string|max:255', - 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class, - 'password' => ['required', 'confirmed', Rules\Password::defaults()], - ]); - $user = User::create([ 'name' => $request->name, 'email' => $request->email, diff --git a/app/Http/Requests/Auth/ConfirmPasswordRequest.php b/app/Http/Requests/Auth/ConfirmPasswordRequest.php new file mode 100644 index 00000000..80b38cf1 --- /dev/null +++ b/app/Http/Requests/Auth/ConfirmPasswordRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + 'password' => ['required', 'string'], + ]; + } +} diff --git a/app/Http/Requests/Auth/ForgotPasswordRequest.php b/app/Http/Requests/Auth/ForgotPasswordRequest.php new file mode 100644 index 00000000..60fbed90 --- /dev/null +++ b/app/Http/Requests/Auth/ForgotPasswordRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + 'email' => ['required', 'email'], + ]; + } +} diff --git a/app/Http/Requests/Auth/RegisterRequest.php b/app/Http/Requests/Auth/RegisterRequest.php new file mode 100644 index 00000000..40ed4727 --- /dev/null +++ b/app/Http/Requests/Auth/RegisterRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class, + 'password' => ['required', 'confirmed', Password::defaults()], + ]; + } +} diff --git a/app/Http/Requests/Auth/ResetPasswordRequest.php b/app/Http/Requests/Auth/ResetPasswordRequest.php new file mode 100644 index 00000000..c75e6c5b --- /dev/null +++ b/app/Http/Requests/Auth/ResetPasswordRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + 'token' => 'required', + 'email' => 'required|email', + 'password' => ['required', 'confirmed', Password::defaults()], + ]; + } +} From 5dd801931ef0c942375022bc33001cd44f7b4466 Mon Sep 17 00:00:00 2001 From: David Dorenbos Date: Fri, 13 Jun 2025 09:06:49 +0200 Subject: [PATCH 2/2] Delete unused import --- .../Controllers/Auth/ConfirmablePasswordController.php | 1 - app/Http/Controllers/Auth/PasswordResetLinkController.php | 7 ++----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php index da2defbd..dcbe4be4 100644 --- a/app/Http/Controllers/Auth/ConfirmablePasswordController.php +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -5,7 +5,6 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Auth\ConfirmPasswordRequest; use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\ValidationException; use Inertia\Inertia; diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php index 9fcfe49d..930b40bb 100644 --- a/app/Http/Controllers/Auth/PasswordResetLinkController.php +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Auth\ForgotPasswordRequest; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; @@ -26,12 +27,8 @@ public function create(Request $request): Response * * @throws \Illuminate\Validation\ValidationException */ - public function store(Request $request): RedirectResponse + public function store(ForgotPasswordRequest $request): RedirectResponse { - $request->validate([ - 'email' => 'required|email', - ]); - Password::sendResetLink( $request->only('email') );