From dc711f8ecb5e9da31afbd1f6b0a79ef1d32cacb2 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 8 Aug 2023 18:53:14 +0200 Subject: [PATCH] Allow a trailing slash on the compat SSO route --- crates/handlers/src/lib.rs | 4 ++++ crates/router/src/endpoints.rs | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/handlers/src/lib.rs b/crates/handlers/src/lib.rs index b8f5f542..6db76112 100644 --- a/crates/handlers/src/lib.rs +++ b/crates/handlers/src/lib.rs @@ -329,6 +329,10 @@ where mas_router::CompatLoginSsoRedirectIdp::route(), get(self::compat::login_sso_redirect::get), ) + .route( + mas_router::CompatLoginSsoRedirectSlash::route(), + get(self::compat::login_sso_redirect::get), + ) .route( mas_router::CompatLoginSsoComplete::route(), get(self::compat::login_sso_complete::get).post(self::compat::login_sso_complete::post), diff --git a/crates/router/src/endpoints.rs b/crates/router/src/endpoints.rs index 8b71da3e..5cd13010 100644 --- a/crates/router/src/endpoints.rs +++ b/crates/router/src/endpoints.rs @@ -481,14 +481,24 @@ impl SimpleRoute for CompatRefresh { const PATH: &'static str = "/_matrix/client/:version/refresh"; } -/// `POST /_matrix/client/v3/login/sso/redirect` +/// `GET /_matrix/client/v3/login/sso/redirect` pub struct CompatLoginSsoRedirect; impl SimpleRoute for CompatLoginSsoRedirect { const PATH: &'static str = "/_matrix/client/:version/login/sso/redirect"; } -/// `POST /_matrix/client/v3/login/sso/redirect/:idp` +/// `GET /_matrix/client/v3/login/sso/redirect/` +/// +/// This is a workaround for the fact some clients (Element iOS) sends a +/// trailing slash, even though it's not in the spec. +pub struct CompatLoginSsoRedirectSlash; + +impl SimpleRoute for CompatLoginSsoRedirectSlash { + const PATH: &'static str = "/_matrix/client/:version/login/sso/redirect/"; +} + +/// `GET /_matrix/client/v3/login/sso/redirect/:idp` pub struct CompatLoginSsoRedirectIdp; impl SimpleRoute for CompatLoginSsoRedirectIdp {