app->instance(RegisterResponse::class, new class implements RegisterResponse { public function toResponse($request) { // First user (root) will be redirected to /settings instead of / on registration. if ($request->user()->currentTeam->id === 0) { return redirect('/settings'); } return redirect('/'); } }); } /** * Bootstrap any application services. */ public function boot(): void { Fortify::createUsersUsing(CreateNewUser::class); Fortify::registerView(function () { $settings = InstanceSettings::get(); if (!$settings->is_registration_enabled) { return redirect()->route('login'); } if (config('coolify.waitlist')) { return redirect()->route('waitlist.index'); } else { return view('auth.register'); } }); Fortify::loginView(function () { $settings = InstanceSettings::get(); $users = User::count(); if ($users == 0) { // If there are no users, redirect to registration return redirect()->route('register'); } return view('auth.login', [ 'is_registration_enabled' => $settings->is_registration_enabled ]); }); Fortify::authenticateUsing(function (Request $request) { $user = User::where('email', $request->email)->with('teams')->first(); if ( $user && Hash::check($request->password, $user->password) ) { $user->updated_at = now(); $user->save(); session(['currentTeam' => $user->currentTeam = $user->teams->firstWhere('personal_team', true)]); return $user; } }); Fortify::requestPasswordResetLinkView(function () { return view('auth.forgot-password'); }); Fortify::resetPasswordView(function ($request) { return view('auth.reset-password', ['request' => $request]); }); Fortify::resetUserPasswordsUsing(ResetUserPassword::class); Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class); Fortify::updateUserPasswordsUsing(UpdateUserPassword::class); Fortify::confirmPasswordView(function () { return view('auth.confirm-password'); }); Fortify::twoFactorChallengeView(function () { return view('auth.two-factor-challenge'); }); RateLimiter::for('force-password-reset', function (Request $request) { return Limit::perMinute(15)->by($request->user()->id); }); RateLimiter::for('forgot-password', function (Request $request) { return Limit::perMinute(5)->by($request->ip()); }); RateLimiter::for('login', function (Request $request) { $email = (string)$request->email; return Limit::perMinute(5)->by($email . $request->ip()); }); RateLimiter::for('two-factor', function (Request $request) { return Limit::perMinute(5)->by($request->session()->get('login.id')); }); } }