cloudillo_profile/
settings.rs1use crate::prelude::*;
4use cloudillo_core::settings::{
5 PermissionLevel, SettingDefinition, SettingScope, SettingValue, SettingsRegistry,
6};
7
8pub fn register_settings(registry: &mut SettingsRegistry) -> ClResult<()> {
10 registry.register(
12 SettingDefinition::builder("profile.lang")
13 .description("Preferred language for emails and notifications (e.g., 'hu', 'de')")
14 .scope(SettingScope::Tenant)
15 .permission(PermissionLevel::User)
16 .optional(true)
17 .build()?,
18 )?;
19
20 registry.register(
22 SettingDefinition::builder("profile.default_visibility")
23 .description("Default visibility for new posts (P=Public, C=Connected, F=Followers)")
24 .default(SettingValue::String("F".into()))
25 .scope(SettingScope::Tenant)
26 .permission(PermissionLevel::User)
27 .validator(|v| {
28 if let SettingValue::String(s) = v {
29 if ["P", "C", "F"].contains(&s.as_str()) {
30 return Ok(());
31 }
32 }
33 Err(Error::ValidationError("Visibility must be P, C, or F".into()))
34 })
35 .build()?,
36 )?;
37
38 registry.register(
40 SettingDefinition::builder("profile.allow_followers")
41 .description("Allow others to follow you")
42 .default(SettingValue::Bool(true))
43 .scope(SettingScope::Tenant)
44 .permission(PermissionLevel::User)
45 .build()?,
46 )?;
47
48 registry.register(
50 SettingDefinition::builder("profile.connection_mode")
51 .description(
52 "Auto-handling for incoming connection requests: M=manual, A=auto-accept, I=ignore",
53 )
54 .default(SettingValue::String("M".into()))
55 .scope(SettingScope::Tenant)
56 .permission(PermissionLevel::User)
57 .validator(|v| {
58 if let SettingValue::String(s) = v {
59 if ["M", "A", "I"].contains(&s.as_str()) {
60 return Ok(());
61 }
62 }
63 Err(Error::ValidationError(
64 "Connection mode must be 'M' (manual), 'A' (auto-accept) or 'I' (ignore)"
65 .into(),
66 ))
67 })
68 .build()?,
69 )?;
70
71 registry.register(
73 SettingDefinition::builder("profile.auto_approve_actions")
74 .description(
75 "Automatically approve incoming actions (POST, MSG, REPOST) from trusted sources",
76 )
77 .default(SettingValue::Bool(false))
78 .scope(SettingScope::Tenant)
79 .permission(PermissionLevel::User)
80 .build()?,
81 )?;
82
83 Ok(())
84}
85
86