summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2023-05-26 12:48:23 +0000
committerTimo Kösters <timo@koesters.xyz>2023-05-26 12:48:23 +0000
commit422ee40107894758ec923d502bebd8843505a7d5 (patch)
treea7235e1f96485d0867533763f5774fe90254f9fb /src
parent0280fa5793aa8f0e096837b485a5ca903cf920b0 (diff)
parent664d6baace232e929dd248636625f9ae835938c5 (diff)
downloadconduit-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.rs20
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,