exists() || Setting::registrationsOpen(); } public function showRegister(): View|RedirectResponse { if (! $this->registrationsAllowed()) { return redirect()->route('login')->with('status', __('app.registrations_closed')); } return view('auth.register'); } public function register(Request $request): RedirectResponse { if (! $this->registrationsAllowed()) { return redirect()->route('login')->with('status', __('app.registrations_closed')); } $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'], 'password' => ['required', 'confirmed', 'min:8'], ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), 'is_owner' => ! User::query()->exists(), 'locale' => session('locale'), ]); Auth::login($user); $request->session()->regenerate(); return redirect()->route('dashboard'); } public function showLogin(): View { return view('auth.login'); } public function login(Request $request): RedirectResponse { $credentials = $request->validate([ 'email' => ['required', 'string', 'email'], 'password' => ['required', 'string'], ]); if (! Auth::attempt($credentials, $request->boolean('remember'))) { return back()->withErrors([ 'email' => __('app.invalid_credentials'), ])->onlyInput('email'); } $request->session()->regenerate(); return redirect()->intended(route('dashboard')); } public function logout(Request $request): RedirectResponse { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('login'); } }