diff options
author | Timo Kösters <timo@koesters.xyz> | 2023-05-26 12:48:23 +0000 |
---|---|---|
committer | Timo Kösters <timo@koesters.xyz> | 2023-05-26 12:48:23 +0000 |
commit | 422ee40107894758ec923d502bebd8843505a7d5 (patch) | |
tree | a7235e1f96485d0867533763f5774fe90254f9fb /src | |
parent | 0280fa5793aa8f0e096837b485a5ca903cf920b0 (diff) | |
parent | 664d6baace232e929dd248636625f9ae835938c5 (diff) | |
download | conduit-422ee40107894758ec923d502bebd8843505a7d5.zip |
Merge branch 'mr-conduit-appservice-login' into 'next'
feat: support end to bridge encryption
See merge request famedly/conduit!454
Diffstat (limited to 'src')
-rw-r--r-- | src/api/client_server/session.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/api/client_server/session.rs b/src/api/client_server/session.rs index 64c0072..b3328e4 100644 --- a/src/api/client_server/session.rs +++ b/src/api/client_server/session.rs @@ -26,6 +26,7 @@ pub async fn get_login_types_route( ) -> Result<get_login_types::v3::Response> { Ok(get_login_types::v3::Response::new(vec![ get_login_types::v3::LoginType::Password(Default::default()), + get_login_types::v3::LoginType::ApplicationService(Default::default()), ])) } @@ -103,6 +104,25 @@ pub async fn login_route(body: Ruma<login::v3::Request>) -> Result<login::v3::Re )); } } + login::v3::LoginInfo::ApplicationService(login::v3::ApplicationService { identifier }) => { + if !body.from_appservice { + return Err(Error::BadRequest( + ErrorKind::Forbidden, + "Forbidden login type." + )); + }; + let username = if let UserIdentifier::UserIdOrLocalpart(user_id) = identifier { + user_id.to_lowercase() + } else { + return Err(Error::BadRequest(ErrorKind::Forbidden, "Bad login type.")); + }; + let user_id = + UserId::parse_with_server_name(username, services().globals.server_name()) + .map_err(|_| { + Error::BadRequest(ErrorKind::InvalidUsername, "Username is invalid.") + })?; + user_id + } _ => { return Err(Error::BadRequest( ErrorKind::Unknown, |