Rename the guest_invites config section to room_invites

The section only says where to send someone invited to a room, so it is
named after room invites. Nothing is released yet, so no alias for the
old key is kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RkxQWj8RAKd7iZ1JQtXdxm
This commit is contained in:
Devon Hudson
2026-10-13 19:50:33 +00:00
co-authored by Claude Opus 5.5
parent 1c8698dd76
commit a363eddb60
12 changed files with 42 additions and 42 deletions
+1 -1
View File
@@ -156,7 +156,7 @@ impl Options {
&config.account,
&config.captcha,
&config.oauth,
&config.guest_invites,
&config.room_invites,
)?;
// Load and compile the templates
+3 -3
View File
@@ -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,
+1 -1
View File
@@ -51,7 +51,7 @@ impl Options {
&config.account,
&config.captcha,
&config.oauth,
&config.guest_invites,
&config.room_invites,
)?;
// Load and compile the templates
+4 -4
View File
@@ -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<SiteConfig, anyhow::Error> {
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(),
})
}
+10 -10
View File
@@ -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(())
@@ -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<String>,
}
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<GuestInvitesConfig, String> {
fn load(jail: &mut Jail, yaml: &str) -> Result<RoomInvitesConfig, String> {
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!(
+1 -1
View File
@@ -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<String>,
pub room_invites_client_room_url: Option<String>,
}
+1 -1
View File
@@ -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()),
}
}
+2 -2
View File
@@ -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()
},
)
+1 -1
View File
@@ -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 _;
+5 -5
View File
@@ -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": {
+3 -3
View File
@@ -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.
#