From 35fe521cbe173574488c6ee67458b603b5026e57 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 29 Oct 2024 15:26:06 +0100 Subject: [PATCH] server: Correctly handle removal of the display_name attribute --- server/src/infra/graphql/mutation.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/server/src/infra/graphql/mutation.rs b/server/src/infra/graphql/mutation.rs index 2c2312d..e492585 100644 --- a/server/src/infra/graphql/mutation.rs +++ b/server/src/infra/graphql/mutation.rs @@ -265,6 +265,14 @@ impl Mutation { display_name, attributes: insert_attributes, } = unpack_attributes(user_insert_attributes, &schema, is_admin)?; + let display_name = display_name.or_else(|| { + // If the display name is not inserted, but removed, reset it. + user.remove_attributes + .iter() + .flatten() + .find(|attr| *attr == "display_name") + .map(|_| String::new()) + }); handler .update_user(UpdateUserRequest { user_id, @@ -277,7 +285,7 @@ impl Mutation { .remove_attributes .unwrap_or_default() .into_iter() - .filter(|attr| attr != "mail") // mail can be sent when editing an admin user + .filter(|attr| attr != "mail" && attr != "display_name") .map(Into::into) .collect(), insert_attributes,