middleware('auth'); } /** * Display general settings page. */ public function general(): InertiaResponse { return Inertia::render('settings/General', [ 'values' => ['app_name' => setting('app_name')], ]); } /** * Display Authentication & Registration settings page. */ public function auth(): InertiaResponse { return Inertia::render('settings/Auth', [ 'values' => $this->settingValues([ 'remember_me', 'forgot_password', 'login_reset_token_lifetime', 'max_active_sessions', 'throttle_enabled', 'throttle_attempts', 'throttle_lockout_time', 'reg_enabled', 'tos', 'reg_email_confirmation', '2fa.enabled', 'approval.enabled', 'password-change.enabled', 'registration.captcha.enabled', ]), 'captchaConfigured' => (bool) (config('captcha.secret') && config('captcha.sitekey')), ]); } /** * @param array $keys * @return array */ private function settingValues(array $keys): array { $defaults = [ 'login_reset_token_lifetime' => 30, 'max_active_sessions' => 0, 'throttle_attempts' => 10, 'throttle_lockout_time' => 1, ]; $values = []; foreach ($keys as $key) { $values[$key] = setting($key, $defaults[$key] ?? null); } return $values; } public function update(Request $request): RedirectResponse { $this->updateSetting($request->except('_token')); return back()->withSuccess(__('Settings updated successfully.')); } private function updateSetting(array $input): void { foreach ($input as $key => $value) { Setting::set($key, $value); } Setting::save(); event(new SettingsUpdated); } public function enableTwoFactor(): RedirectResponse { $this->updateSetting(['2fa.enabled' => true]); return back()->withSuccess(__('Two-Factor Authentication enabled successfully.')); } public function disableTwoFactor(): RedirectResponse { $this->updateSetting(['2fa.enabled' => false]); return back()->withSuccess(__('Two-Factor Authentication disabled successfully.')); } public function enableApproval(): RedirectResponse { $this->updateSetting(['approval.enabled' => true]); return back()->withSuccess(__('User Confirmation Flow enabled successfully.')); } public function disableApproval(): RedirectResponse { $this->updateSetting(['approval.enabled' => false]); return back()->withSuccess(__('User Confirmation Flow disabled successfully.')); } public function enablePasswordChange(): RedirectResponse { $this->updateSetting(['password-change.enabled' => true]); return back()->withSuccess(__('Force Password Change for users enabled successfully.')); } public function disablePasswordChange(): RedirectResponse { $this->updateSetting(['password-change.enabled' => false]); return back()->withSuccess(__('Force Password Change for users disabled successfully.')); } public function enableCaptcha(): RedirectResponse { $this->updateSetting(['registration.captcha.enabled' => true]); return back()->withSuccess(__('reCAPTCHA enabled successfully.')); } public function disableCaptcha(): RedirectResponse { $this->updateSetting(['registration.captcha.enabled' => false]); return back()->withSuccess(__('reCAPTCHA disabled successfully.')); } public function notifications(): InertiaResponse { return Inertia::render('settings/Notifications', [ 'values' => [ 'notifications_signup_email' => setting('notifications_signup_email'), ], ]); } }