From 60ec0e0964016eae21986593271ddbdb31df1f02 Mon Sep 17 00:00:00 2001 From: Subhra264 Date: Wed, 3 Jun 2026 17:03:11 +0530 Subject: [PATCH] fix: show edit button for users in cloud version (#12432) --- src/service/users.rs | 7 ++++++- web/src/components/iam/users/AddUser.vue | 24 +++++++++++++++--------- web/src/components/iam/users/User.vue | 10 ++++++++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/service/users.rs b/src/service/users.rs index 4feb06ccba..b90d887622 100644 --- a/src/service/users.rs +++ b/src/service/users.rs @@ -263,6 +263,10 @@ pub async fn update_user( mut user: UpdateUser, ) -> Result { let mut allow_password_update = false; + #[cfg(feature = "cloud")] + let is_cloud = true; + #[cfg(not(feature = "cloud"))] + let is_cloud = false; if !is_valid_email(email) { return Ok(MetaHttpResponse::bad_request("Invalid email")); } @@ -315,6 +319,7 @@ pub async fn update_user( let mut custom_roles_need_change = false; match existing_user { Some(local_user) => { + #[cfg(not(feature = "cloud"))] if local_user.is_external { return Ok(MetaHttpResponse::bad_request( "Updates not allowed with external users, please update with source system", @@ -401,7 +406,7 @@ pub async fn update_user( is_updated = true; } if let Some(role) = user.role - && !local_user.is_external + && (!local_user.is_external || is_cloud) && (!update_mode.is_self_update() || (local_user.role.eq(&UserRole::Admin) // Editor can update other's roles, but viewer can update only self diff --git a/web/src/components/iam/users/AddUser.vue b/web/src/components/iam/users/AddUser.vue index 1260c82ab4..fbdf9af9c0 100644 --- a/web/src/components/iam/users/AddUser.vue +++ b/web/src/components/iam/users/AddUser.vue @@ -73,7 +73,7 @@ along with this program. If not, see . . /> . class="showLabelOnTop tw:mt-2" multiple data-test="user-custom-role-field" - :disable="filterdOption.length === 0 || !!formData.is_external" + :disable="isCloud ? filterdOption.length === 0 : (filterdOption.length === 0 || !!formData.is_external)" :hint=" - formData.is_external - ? t('user.externalUserCustomRoleHint') - : filterdOption.length === 0 - ? t('user.noCustomRolesHint') - : '' + isCloud + ? (filterdOption.length === 0 ? t('user.noCustomRolesHint') : '') + : formData.is_external + ? t('user.externalUserCustomRoleHint') + : filterdOption.length === 0 + ? t('user.noCustomRolesHint') + : '' " /> -
+
[], }, + isCloud: { + type: Boolean, + default: false, + }, }, emits: ["update:modelValue", "updated", "update:open"], setup(props) { diff --git a/web/src/components/iam/users/User.vue b/web/src/components/iam/users/User.vue index 88db9dcf2e..6ae5418f12 100644 --- a/web/src/components/iam/users/User.vue +++ b/web/src/components/iam/users/User.vue @@ -132,7 +132,7 @@ along with this program. If not, see . . @@ -748,6 +748,12 @@ export default defineComponent({ if (user.role?.toLowerCase() === "root") { return store.state.userInfo.email === user.email; } + // Cloud: cannot edit self (same as delete behavior) + if (config.isCloud == "true") { + return ( + store.state.userInfo.email.toLowerCase() !== user.email.toLowerCase() + ); + } // Allow editing for all other users return true; };