From 2eff4547874b6b027328bd181011db5ad4eb0a55 Mon Sep 17 00:00:00 2001 From: Ginger Date: Mon, 29 Jun 2026 10:08:08 -0400 Subject: [PATCH] feat: Finish implementing MSC4190 --- src/api/client/device.rs | 4 +++- src/api/client/keys.rs | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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(),