$this->settings->get(Setting::ClientsCanRegister), 'clients_auto_approve' => $this->settings->get(Setting::ClientsAutoApprove), 'clients_auto_group' => $this->settings->get(Setting::ClientsAutoGroup), 'clients_can_select_group' => $this->settings->get(Setting::ClientsCanSelectGroup), 'clients_membership_deny_cooldown_days' => $this->settings->get(Setting::ClientsMembershipDenyCooldownDays), 'client_invitation_expiry_hours' => $this->settings->get(Setting::ClientInvitationExpiryHours), 'default_client_storage_quota_mb' => (int) $this->settings->get(Setting::DefaultClientStorageQuotaMb), 'clients_can_preview_files' => $this->settings->get(Setting::ClientsCanPreviewFiles), 'groups' => Group::query()->orderBy('name')->get() ->map(fn (Group $group): array => ['id' => $group->id, 'name' => $group->name]) ->all(), ]); } public function update(Request $request): RedirectResponse { $validated = $request->validate([ 'clients_can_register' => ['required', 'boolean'], 'clients_auto_approve' => ['required', 'boolean'], 'clients_auto_group' => ['required', 'integer', Rule::in([0, ...Group::query()->pluck('id')->all()])], 'clients_can_select_group' => ['required', Rule::in(['none', 'public'])], 'clients_membership_deny_cooldown_days' => ['required', 'integer', 'min:0', 'max:365'], 'client_invitation_expiry_hours' => ['required', 'integer', 'min:1', 'max:720'], 'default_client_storage_quota_mb' => ['required', 'integer', 'min:0'], 'clients_can_preview_files' => ['required', 'boolean'], ]); $this->settings->set(Setting::ClientsCanRegister, $validated['clients_can_register']); $this->settings->set(Setting::ClientsAutoApprove, $validated['clients_auto_approve']); $this->settings->set(Setting::ClientsAutoGroup, (int) $validated['clients_auto_group']); $this->settings->set(Setting::ClientsCanSelectGroup, $validated['clients_can_select_group']); $this->settings->set(Setting::ClientsMembershipDenyCooldownDays, (int) $validated['clients_membership_deny_cooldown_days']); $this->settings->set(Setting::ClientInvitationExpiryHours, (int) $validated['client_invitation_expiry_hours']); $this->settings->set(Setting::DefaultClientStorageQuotaMb, (int) $validated['default_client_storage_quota_mb']); $this->settings->set(Setting::ClientsCanPreviewFiles, $validated['clients_can_preview_files']); $this->activity->log(Action::SettingsUpdated, context: ['section' => 'clients']); return back(); } }