Skip to main content

cloudillo_core/
core_settings.rs

1// SPDX-FileCopyrightText: Szilárd Hajba
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4//! Core server settings registration
5//!
6//! Registers global server-level settings for logging, features, etc.
7
8use crate::prelude::*;
9use crate::settings::{
10	PermissionLevel, SettingDefinition, SettingScope, SettingValue, SettingsRegistry,
11};
12
13/// Register all core settings
14pub fn register_settings(registry: &mut SettingsRegistry) -> ClResult<()> {
15	// Server registration enabled
16	registry.register(
17		SettingDefinition::builder("server.registration_enabled")
18			.description("Allow new user registrations")
19			.default(SettingValue::Bool(true))
20			.scope(SettingScope::Global)
21			.permission(PermissionLevel::Admin)
22			.build()?,
23	)?;
24
25	// Wildcard pattern for UI settings - allows storing arbitrary UI preferences
26	registry.register(
27		SettingDefinition::builder("ui.*")
28			.description("User interface settings and preferences")
29			.scope(SettingScope::Tenant)
30			.permission(PermissionLevel::User)
31			.optional(true)
32			.build()?,
33	)?;
34
35	// Wildcard pattern for application settings - allows storing arbitrary app state
36	registry.register(
37		SettingDefinition::builder("app.*")
38			.description("Application-specific settings and state")
39			.scope(SettingScope::Tenant)
40			.permission(PermissionLevel::User)
41			.optional(true)
42			.build()?,
43	)?;
44
45	Ok(())
46}
47
48// vim: ts=4