diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php new file mode 100644 index 00000000..7bf18d0a --- /dev/null +++ b/app/Actions/Fortify/CreateNewUser.php @@ -0,0 +1,40 @@ + $input + */ + public function create(array $input): User + { + Validator::make($input, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => [ + 'required', + 'string', + 'email', + 'max:255', + Rule::unique(User::class), + ], + 'password' => $this->passwordRules(), + ])->validate(); + + return User::create([ + 'name' => $input['name'], + 'email' => $input['email'], + 'password' => Hash::make($input['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php deleted file mode 100644 index 84361384..00000000 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ /dev/null @@ -1,53 +0,0 @@ -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, - 'password' => Hash::make($request->password), - ]); - - event(new Registered($user)); - - Auth::login($user); - - $request->session()->regenerate(); - - return to_route('dashboard'); - } -} diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index 0474582d..2caea888 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use App\Actions\Fortify\CreateNewUser; use App\Actions\Fortify\ResetUserPassword; use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Http\Request; @@ -38,6 +39,7 @@ public function boot(): void private function configureActions(): void { Fortify::resetUserPasswordsUsing(ResetUserPassword::class); + Fortify::createUsersUsing(CreateNewUser::class); } /** @@ -45,26 +47,27 @@ private function configureActions(): void */ private function configureViews(): void { - Fortify::resetUserPasswordsUsing(ResetUserPassword::class); - Fortify::loginView(fn (Request $request) => Inertia::render('auth/Login', [ 'canResetPassword' => Features::enabled(Features::resetPasswords()), + 'canRegister' => Features::enabled(Features::registration()), 'status' => $request->session()->get('status'), ])); - Fortify::verifyEmailView(fn (Request $request) => Inertia::render('auth/VerifyEmail', [ - 'status' => $request->session()->get('status'), + Fortify::resetPasswordView(fn (Request $request) => Inertia::render('auth/ResetPassword', [ + 'email' => $request->email, + 'token' => $request->route('token'), ])); Fortify::requestPasswordResetLinkView(fn (Request $request) => Inertia::render('auth/ForgotPassword', [ 'status' => $request->session()->get('status'), ])); - Fortify::resetPasswordView(fn (Request $request) => Inertia::render('auth/ResetPassword', [ - 'email' => $request->email, - 'token' => $request->route('token'), + Fortify::verifyEmailView(fn (Request $request) => Inertia::render('auth/VerifyEmail', [ + 'status' => $request->session()->get('status'), ])); + Fortify::registerView(fn () => Inertia::render('auth/Register')); + Fortify::twoFactorChallengeView(fn () => Inertia::render('auth/TwoFactorChallenge')); Fortify::confirmPasswordView(fn () => Inertia::render('auth/ConfirmPassword')); diff --git a/config/fortify.php b/config/fortify.php index 9dd5999b..ce67e2c3 100644 --- a/config/fortify.php +++ b/config/fortify.php @@ -144,7 +144,7 @@ */ 'features' => [ - // Features::registration(), + Features::registration(), Features::resetPasswords(), Features::emailVerification(), Features::twoFactorAuthentication([ diff --git a/resources/js/pages/Welcome.vue b/resources/js/pages/Welcome.vue index 1024304b..405e00c1 100644 --- a/resources/js/pages/Welcome.vue +++ b/resources/js/pages/Welcome.vue @@ -1,6 +1,15 @@