diff --git a/src/api/client/device.rs b/src/api/client/device.rs index e210da7f4..86472a91f 100644 --- a/src/api/client/device.rs +++ b/src/api/client/device.rs @@ -121,7 +121,9 @@ pub(crate) async fn delete_device_route( let sender_user = body.identity.expect_sender_user()?; // Appservices get to skip UIAA for this endpoint - if let Some(sender_device) = body.identity.sender_device() { + if !body.identity.is_appservice() { + let sender_device = body.identity.expect_sender_device()?; + // Prompt the user to confirm with their password using UIAA let _ = services .uiaa diff --git a/src/api/client/keys.rs b/src/api/client/keys.rs index b7a78f097..dee3f36e2 100644 --- a/src/api/client/keys.rs +++ b/src/api/client/keys.rs @@ -197,6 +197,7 @@ pub(crate) async fn upload_signing_keys_route( if uiaa_needed_to_upload_keys( services, sender_user, + body.identity.is_appservice(), body.self_signing_key.as_ref(), body.user_signing_key.as_ref(), body.master_key.as_ref(), @@ -231,10 +232,16 @@ pub(crate) async fn upload_signing_keys_route( async fn uiaa_needed_to_upload_keys( services: crate::State, user_id: &UserId, + is_appservice: bool, self_signing_key: Option<&Raw>, user_signing_key: Option<&Raw>, master_signing_key: Option<&Raw>, ) -> bool { + if is_appservice { + // Appservices can skip UIAA for this endpoint + return false; + } + let (self_signing_key, user_signing_key, master_signing_key) = ( self_signing_key.map(Raw::deserialize).flat_ok(), user_signing_key.map(Raw::deserialize).flat_ok(),