diff --git a/crates/cli/src/commands/server.rs b/crates/cli/src/commands/server.rs index 294e11096..99adc11b7 100644 --- a/crates/cli/src/commands/server.rs +++ b/crates/cli/src/commands/server.rs @@ -156,7 +156,7 @@ impl Options { &config.account, &config.captcha, &config.oauth, - &config.guest_invites, + &config.room_invites, )?; // Load and compile the templates diff --git a/crates/cli/src/commands/templates.rs b/crates/cli/src/commands/templates.rs index 5115ad45d..8d2a2e367 100644 --- a/crates/cli/src/commands/templates.rs +++ b/crates/cli/src/commands/templates.rs @@ -14,7 +14,7 @@ use clap::Parser; use figment::Figment; use mas_config::{ AccountConfig, BrandingConfig, CaptchaConfig, ConfigurationSection, ConfigurationSectionExt, - ExperimentalConfig, GuestInvitesConfig, MatrixConfig, OAuthConfig, PasswordsConfig, + ExperimentalConfig, MatrixConfig, OAuthConfig, PasswordsConfig, RoomInvitesConfig, TemplatesConfig, }; use mas_data_model::{Clock, SystemClock}; @@ -69,7 +69,7 @@ impl Options { .map_err(anyhow::Error::from_boxed)?; let oauth_config = OAuthConfig::extract_or_default(figment).map_err(anyhow::Error::from_boxed)?; - let guest_invites_config = GuestInvitesConfig::extract_or_default(figment) + let room_invites_config = RoomInvitesConfig::extract_or_default(figment) .map_err(anyhow::Error::from_boxed)?; let now = if stabilise { @@ -95,7 +95,7 @@ impl Options { &account_config, &captcha_config, &oauth_config, - &guest_invites_config, + &room_invites_config, )?; let templates = templates_from_config( &template_config, diff --git a/crates/cli/src/commands/worker.rs b/crates/cli/src/commands/worker.rs index 2c3a45b4c..100e8b767 100644 --- a/crates/cli/src/commands/worker.rs +++ b/crates/cli/src/commands/worker.rs @@ -51,7 +51,7 @@ impl Options { &config.account, &config.captcha, &config.oauth, - &config.guest_invites, + &config.room_invites, )?; // Load and compile the templates diff --git a/crates/cli/src/util.rs b/crates/cli/src/util.rs index 63c92e28c..4807693e6 100644 --- a/crates/cli/src/util.rs +++ b/crates/cli/src/util.rs @@ -10,8 +10,8 @@ use std::{sync::Arc, time::Duration}; use anyhow::Context; use mas_config::{ AccountConfig, BrandingConfig, CaptchaConfig, DatabaseConfig, EmailConfig, EmailSmtpMode, - EmailTransportKind, ExperimentalConfig, GuestInvitesConfig, HomeserverKind, MatrixConfig, - OAuthConfig, PasswordsConfig, PolicyConfig, TemplatesConfig, + EmailTransportKind, ExperimentalConfig, HomeserverKind, MatrixConfig, OAuthConfig, + PasswordsConfig, PolicyConfig, RoomInvitesConfig, TemplatesConfig, }; use mas_context::LogContext; use mas_data_model::{SessionExpirationConfig, SessionLimitConfig, SiteConfig}; @@ -214,7 +214,7 @@ pub fn site_config_from_config( account_config: &AccountConfig, captcha_config: &CaptchaConfig, oauth_config: &OAuthConfig, - guest_invites_config: &GuestInvitesConfig, + room_invites_config: &RoomInvitesConfig, ) -> Result { let captcha = captcha_config_from_config(captcha_config)?; let session_expiration = experimental_config @@ -271,7 +271,7 @@ pub fn site_config_from_config( device_code_grant_enabled: oauth_config.device_code_grant_enabled, device_code_user_code_auto_fill_enabled: oauth_config .device_code_user_code_auto_fill_enabled, - guest_invites_client_room_url: guest_invites_config.client_room_url.clone(), + room_invites_client_room_url: room_invites_config.client_room_url.clone(), }) } diff --git a/crates/config/src/sections/mod.rs b/crates/config/src/sections/mod.rs index 0a66b41ce..a01b8aaa3 100644 --- a/crates/config/src/sections/mod.rs +++ b/crates/config/src/sections/mod.rs @@ -18,13 +18,13 @@ mod clients; mod database; mod email; mod experimental; -mod guest_invites; mod http; mod matrix; mod oauth; mod passwords; mod policy; mod rate_limiting; +mod room_invites; mod secrets; mod telemetry; mod templates; @@ -38,7 +38,6 @@ pub use self::{ database::{DatabaseConfig, PgSslMode}, email::{EmailConfig, EmailSmtpMode, EmailTransportKind}, experimental::{ExperimentalConfig, SessionLimitConfig as ExperimentalSessionLimitConfig}, - guest_invites::GuestInvitesConfig, http::{ BindConfig as HttpBindConfig, HttpConfig, ListenerConfig as HttpListenerConfig, Resource as HttpResource, TlsConfig as HttpTlsConfig, UnixOrTcp, @@ -50,6 +49,7 @@ pub use self::{ }, policy::PolicyConfig, rate_limiting::RateLimitingConfig, + room_invites::RoomInvitesConfig, secrets::SecretsConfig, telemetry::{ MetricsConfig, MetricsExporterKind, Propagator, TelemetryConfig, TracingConfig, @@ -135,9 +135,9 @@ pub struct RootConfig { #[serde(default, skip_serializing_if = "OAuthConfig::is_default")] pub oauth: OAuthConfig, - /// Configuration section for inviting guests to rooms by email - #[serde(default, skip_serializing_if = "GuestInvitesConfig::is_default")] - pub guest_invites: GuestInvitesConfig, + /// Configuration section for inviting email addresses to rooms + #[serde(default, skip_serializing_if = "RoomInvitesConfig::is_default")] + pub room_invites: RoomInvitesConfig, /// Experimental configuration options #[serde(default, skip_serializing_if = "ExperimentalConfig::is_default")] @@ -165,7 +165,7 @@ impl ConfigurationSection for RootConfig { self.captcha.validate(figment)?; self.account.validate(figment)?; self.oauth.validate(figment)?; - self.guest_invites.validate(figment)?; + self.room_invites.validate(figment)?; self.experimental.validate(figment)?; Ok(()) @@ -199,7 +199,7 @@ impl RootConfig { captcha: CaptchaConfig::default(), account: AccountConfig::default(), oauth: OAuthConfig::default(), - guest_invites: GuestInvitesConfig::default(), + room_invites: RoomInvitesConfig::default(), experimental: ExperimentalConfig::default(), }) } @@ -224,7 +224,7 @@ impl RootConfig { captcha: CaptchaConfig::default(), account: AccountConfig::default(), oauth: OAuthConfig::default(), - guest_invites: GuestInvitesConfig::default(), + room_invites: RoomInvitesConfig::default(), experimental: ExperimentalConfig::default(), } } @@ -272,7 +272,7 @@ pub struct AppConfig { pub oauth: OAuthConfig, #[serde(default)] - pub guest_invites: GuestInvitesConfig, + pub room_invites: RoomInvitesConfig, #[serde(default)] pub experimental: ExperimentalConfig, @@ -296,7 +296,7 @@ impl ConfigurationSection for AppConfig { self.captcha.validate(figment)?; self.account.validate(figment)?; self.oauth.validate(figment)?; - self.guest_invites.validate(figment)?; + self.room_invites.validate(figment)?; self.experimental.validate(figment)?; Ok(()) diff --git a/crates/config/src/sections/guest_invites.rs b/crates/config/src/sections/room_invites.rs similarity index 85% rename from crates/config/src/sections/guest_invites.rs rename to crates/config/src/sections/room_invites.rs index b47e21fb5..bea6d2156 100644 --- a/crates/config/src/sections/guest_invites.rs +++ b/crates/config/src/sections/room_invites.rs @@ -9,9 +9,9 @@ use url::Url; use crate::ConfigurationSection; -/// Configuration section for inviting guests to rooms by email +/// Configuration section for inviting email addresses to rooms #[derive(Clone, Debug, Default, Deserialize, JsonSchema, Serialize)] -pub struct GuestInvitesConfig { +pub struct RoomInvitesConfig { /// The client URL to send invitees to once they are signed in, with /// `{room_id}` standing for the room ID, e.g. /// `https://app.element.io/#/room/{room_id}`. @@ -19,15 +19,15 @@ pub struct GuestInvitesConfig { pub client_room_url: Option, } -impl GuestInvitesConfig { +impl RoomInvitesConfig { /// Returns true if the configuration is the default one pub(crate) fn is_default(&self) -> bool { self.client_room_url.is_none() } } -impl ConfigurationSection for GuestInvitesConfig { - const PATH: Option<&'static str> = Some("guest_invites"); +impl ConfigurationSection for RoomInvitesConfig { + const PATH: Option<&'static str> = Some("room_invites"); fn validate( &self, @@ -74,17 +74,17 @@ mod tests { use super::*; - fn load(jail: &mut Jail, yaml: &str) -> Result { + fn load(jail: &mut Jail, yaml: &str) -> Result { jail.create_file("config.yaml", yaml) .map_err(|e| e.to_string())?; let figment = Figment::new().merge(Yaml::file("config.yaml")); - GuestInvitesConfig::extract(&figment).map_err(|e| e.to_string()) + RoomInvitesConfig::extract(&figment).map_err(|e| e.to_string()) } #[test] fn defaults() { Jail::expect_with(|jail| { - let config = load(jail, "guest_invites: {}").unwrap(); + let config = load(jail, "room_invites: {}").unwrap(); assert_eq!(config.client_room_url, None); assert!(config.is_default()); Ok(()) @@ -96,7 +96,7 @@ mod tests { Jail::expect_with(|jail| { let error = load( jail, - "guest_invites: { client_room_url: 'https://app.example.com/' }", + "room_invites: { client_room_url: 'https://app.example.com/' }", ) .unwrap_err(); assert!(error.contains("{room_id}"), "{error}"); @@ -115,7 +115,7 @@ mod tests { ] { let error = load( jail, - &format!("guest_invites: {{ client_room_url: '{url}' }}"), + &format!("room_invites: {{ client_room_url: '{url}' }}"), ) .unwrap_err(); assert!( diff --git a/crates/data-model/src/site_config.rs b/crates/data-model/src/site_config.rs index 5e43b2599..06fff5c67 100644 --- a/crates/data-model/src/site_config.rs +++ b/crates/data-model/src/site_config.rs @@ -131,5 +131,5 @@ pub struct SiteConfig { /// The client URL to send invitees to, with `{room_id}` standing for the /// room ID. - pub guest_invites_client_room_url: Option, + pub room_invites_client_room_url: Option, } diff --git a/crates/handlers/src/test_utils.rs b/crates/handlers/src/test_utils.rs index 8bd95401e..83a0d3174 100644 --- a/crates/handlers/src/test_utils.rs +++ b/crates/handlers/src/test_utils.rs @@ -157,7 +157,7 @@ pub fn test_site_config() -> SiteConfig { session_limit: None, device_code_grant_enabled: true, device_code_user_code_auto_fill_enabled: true, - guest_invites_client_room_url: Some("https://app.example.com/#/room/{room_id}".to_owned()), + room_invites_client_room_url: Some("https://app.example.com/#/room/{room_id}".to_owned()), } } diff --git a/crates/handlers/src/views/open_room.rs b/crates/handlers/src/views/open_room.rs index 293899fe5..a23d71475 100644 --- a/crates/handlers/src/views/open_room.rs +++ b/crates/handlers/src/views/open_room.rs @@ -28,7 +28,7 @@ pub(crate) async fn get( .map(|Query(query)| query.room_id) .filter(|room_id| is_valid_room_id(room_id)); - match (site_config.guest_invites_client_room_url, room_id) { + match (site_config.room_invites_client_room_url, room_id) { (Some(client_room_url), Some(room_id)) => { tracing::Span::current().record("room.id", room_id.as_str()); Redirect::to(&client_room_url.replace("{room_id}", &urlencoding::encode(&room_id))) @@ -111,7 +111,7 @@ mod tests { let state = TestState::from_pool_with_site_config( pool, SiteConfig { - guest_invites_client_room_url: None, + room_invites_client_room_url: None, ..test_site_config() }, ) diff --git a/crates/handlers/src/views/register/mod.rs b/crates/handlers/src/views/register/mod.rs index 4295e382f..e2eb35e07 100644 --- a/crates/handlers/src/views/register/mod.rs +++ b/crates/handlers/src/views/register/mod.rs @@ -1313,7 +1313,7 @@ mod tests { assert!(upstream_sessions(&state, &response).is_none()); } - /// A signed-in browser opening a guest invite link goes straight to the room + /// A signed-in browser opening a room invite link goes straight to the room #[sqlx::test(migrator = "mas_storage_pg::MIGRATOR")] async fn test_get_with_open_room(pool: PgPool) { use mas_axum_utils::SessionInfoExt as _; diff --git a/docs/config.schema.json b/docs/config.schema.json index a1ebd3b22..878c01c15 100644 --- a/docs/config.schema.json +++ b/docs/config.schema.json @@ -213,11 +213,11 @@ } ] }, - "guest_invites": { - "description": "Configuration section for inviting guests to rooms by email", + "room_invites": { + "description": "Configuration section for inviting email addresses to rooms", "allOf": [ { - "$ref": "#/definitions/GuestInvitesConfig" + "$ref": "#/definitions/RoomInvitesConfig" } ] }, @@ -2904,8 +2904,8 @@ } } }, - "GuestInvitesConfig": { - "description": "Configuration section for inviting guests to rooms by email", + "RoomInvitesConfig": { + "description": "Configuration section for inviting email addresses to rooms", "type": "object", "properties": { "client_room_url": { diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index b5b158166..e10251ef5 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -1040,12 +1040,12 @@ oauth: device_code_user_code_auto_fill_enabled: false ``` -## `guest_invites` +## `room_invites` -Configuration section for inviting guests to rooms by email. +Configuration section for inviting email addresses to rooms. ```yaml -guest_invites: +room_invites: # The client URL to send invitees to once they are signed in, with # `{room_id}` standing for the percent-encoded room ID. #