feat: support end to bridge encryption
by implementing appservice logins
This commit is contained in:
parent
815db0d962
commit
4d589d9788
1 changed files with 22 additions and 0 deletions
|
@ -26,6 +26,7 @@ pub async fn get_login_types_route(
|
||||||
) -> Result<get_login_types::v3::Response> {
|
) -> Result<get_login_types::v3::Response> {
|
||||||
Ok(get_login_types::v3::Response::new(vec![
|
Ok(get_login_types::v3::Response::new(vec![
|
||||||
get_login_types::v3::LoginType::Password(Default::default()),
|
get_login_types::v3::LoginType::Password(Default::default()),
|
||||||
|
get_login_types::v3::LoginType::ApplicationService(Default::default()),
|
||||||
]))
|
]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +104,27 @@ pub async fn login_route(body: Ruma<login::v3::Request>) -> Result<login::v3::Re
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
login::v3::LoginInfo::ApplicationService(login::v3::ApplicationService { identifier }) => {
|
||||||
|
info!("hi");
|
||||||
|
if !body.from_appservice {
|
||||||
|
return Err(Error::BadRequest(
|
||||||
|
ErrorKind::Forbidden,
|
||||||
|
// TODO: is this the correct response
|
||||||
|
"Wrong username or password.",
|
||||||
|
));
|
||||||
|
};
|
||||||
|
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(
|
return Err(Error::BadRequest(
|
||||||
ErrorKind::Unknown,
|
ErrorKind::Unknown,
|
||||||
|
|
Loading…
Add table
Reference in a new issue