mirror of
https://github.com/element-hq/matrix-authentication-service.git
synced 2026-10-15 09:01:45 +00:00
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:
co-authored by
Claude Opus 5.5
parent
1c8698dd76
commit
a363eddb60
@@ -156,7 +156,7 @@ impl Options {
|
||||
&config.account,
|
||||
&config.captcha,
|
||||
&config.oauth,
|
||||
&config.guest_invites,
|
||||
&config.room_invites,
|
||||
)?;
|
||||
|
||||
// Load and compile the templates
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -51,7 +51,7 @@ impl Options {
|
||||
&config.account,
|
||||
&config.captcha,
|
||||
&config.oauth,
|
||||
&config.guest_invites,
|
||||
&config.room_invites,
|
||||
)?;
|
||||
|
||||
// Load and compile the templates
|
||||
|
||||
@@ -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(),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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(())
|
||||
|
||||
+10
-10
@@ -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!(
|
||||
@@ -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>,
|
||||
}
|
||||
|
||||
@@ -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()),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
},
|
||||
)
|
||||
|
||||
@@ -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 _;
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user