diff --git a/ui/console-src/modules/system/users/UserList.vue b/ui/console-src/modules/system/users/UserList.vue
index 631493dba..511197561 100644
--- a/ui/console-src/modules/system/users/UserList.vue
+++ b/ui/console-src/modules/system/users/UserList.vue
@@ -138,70 +138,56 @@ const handleDeleteInBatch = async () => {
});
};
-const handleUserBatchOperation = async ({
- filterCondition,
- apiMethod,
- successMessageKey,
- emptyMessageKey,
-}) => {
- const filteredUserNames = selectedUserNames.value.filter((name) => {
- if (name === userStore.currentUser?.metadata.name) return false;
- const user = users.value?.find((u) => u.user.metadata.name === name);
- return user && filterCondition(user.user);
- });
-
- if (!filteredUserNames.length) {
- Toast.info(t(emptyMessageKey));
- return;
- }
-
- const chunks = chunk(filteredUserNames, 5);
- for (const chunk of chunks) {
- await Promise.all(chunk.map((name) => apiMethod(name)));
- }
-
- await refetch();
- selectedUserNames.value.length = 0;
- Toast.success(t(successMessageKey));
-};
-
-const handleEnableInBatch = async () => {
- Dialog.warning({
- title: t("core.user.operations.enable_in_batch.title"),
- description: t("core.user.operations.enable_in_batch.description"),
- confirmType: "primary",
- confirmText: t("core.common.buttons.confirm"),
- cancelText: t("core.common.buttons.cancel"),
- onConfirm: async () => {
- await handleUserBatchOperation({
- filterCondition: (user) => !!user.spec.disabled,
- apiMethod: (name) =>
- consoleApiClient.user.enableUser({ username: name }),
- successMessageKey: "core.common.toast.enable_success",
- emptyMessageKey: "core.common.toast.no_users_to_enable",
- });
+function handleEnableOrDisableInBatch(operation: "enable" | "disable") {
+ const operations = {
+ enable: {
+ title: t("core.user.operations.enable_in_batch.title"),
+ description: t("core.user.operations.enable_in_batch.description"),
+ request: (name: string) =>
+ consoleApiClient.user.enableUser({ username: name }),
+ condition: (user: User) => user.spec.disabled,
+ message: t("core.common.toast.enable_success"),
},
- });
-};
+ disable: {
+ title: t("core.user.operations.disable_in_batch.title"),
+ description: t("core.user.operations.disable_in_batch.description"),
+ request: (name: string) =>
+ consoleApiClient.user.disableUser({ username: name }),
+ condition: (user: User) => !user.spec.disabled,
+ message: t("core.common.toast.disable_success"),
+ },
+ };
+
+ const operationConfig = operations[operation];
-const handleDisableInBatch = async () => {
Dialog.warning({
- title: t("core.user.operations.disable_in_batch.title"),
- description: t("core.user.operations.disable_in_batch.description"),
+ title: operationConfig.title,
+ description: operationConfig.description,
confirmType: "danger",
confirmText: t("core.common.buttons.confirm"),
cancelText: t("core.common.buttons.cancel"),
onConfirm: async () => {
- await handleUserBatchOperation({
- filterCondition: (user) => !user.spec.disabled,
- apiMethod: (name) =>
- consoleApiClient.user.disableUser({ username: name }),
- successMessageKey: "core.common.toast.disable_success",
- emptyMessageKey: "core.common.toast.no_users_to_disable",
+ const filteredUserNames = selectedUserNames.value.filter((name) => {
+ if (name === userStore.currentUser?.metadata.name) return false;
+ const user = users.value?.find((u) => u.user.metadata.name === name);
+ return user && operationConfig.condition(user.user);
});
+
+ const chunks = chunk(filteredUserNames, 5);
+
+ for (const chunk of chunks) {
+ await Promise.all(chunk.map((name) => operationConfig.request(name)));
+ }
+
+ await refetch();
+
+ selectedUserNames.value.length = 0;
+ checkedAll.value = false;
+
+ Toast.success(operationConfig.message);
},
});
-};
+}
watch(selectedUserNames, (newValue) => {
checkedAll.value =
@@ -308,10 +294,10 @@ function onCreationModalClose() {
-
+
{{ $t("core.common.buttons.disable") }}
-
+
{{ $t("core.common.buttons.enable") }}
diff --git a/ui/console-src/modules/system/users/composables/use-user.ts b/ui/console-src/modules/system/users/composables/use-user.ts
index c977548fd..9c7c13198 100644
--- a/ui/console-src/modules/system/users/composables/use-user.ts
+++ b/ui/console-src/modules/system/users/composables/use-user.ts
@@ -64,12 +64,16 @@ export function useUserEnableDisable() {
enable: {
title: t("core.user.operations.enable.title"),
description: t("core.user.operations.enable.description"),
- value: false,
+ request: (name: string) =>
+ consoleApiClient.user.enableUser({ username: name }),
+ message: t("core.common.toast.enable_success"),
},
disable: {
title: t("core.user.operations.disable.title"),
description: t("core.user.operations.disable.description"),
- value: true,
+ request: (name: string) =>
+ consoleApiClient.user.disableUser({ username: name }),
+ message: t("core.common.toast.disable_success"),
},
};
@@ -83,17 +87,9 @@ export function useUserEnableDisable() {
cancelText: t("core.common.buttons.cancel"),
onConfirm: async () => {
try {
- if (operation == "enable") {
- await consoleApiClient.user.enableUser({
- username: name,
- });
- } else {
- await consoleApiClient.user.disableUser({
- username: name,
- });
- }
+ await operationConfig.request(name);
- Toast.success(t("core.common.toast.operation_success"));
+ Toast.success(operationConfig.message);
onSuccess?.();
} catch (e) {
console.error("Failed to enable or disable user", e);
diff --git a/ui/src/locales/en.yaml b/ui/src/locales/en.yaml
index 96f9d389e..e653fbd70 100644
--- a/ui/src/locales/en.yaml
+++ b/ui/src/locales/en.yaml
@@ -1142,22 +1142,20 @@ core:
title: Grant permission
enable:
title: Enable
- description: Are you sure you want to enable this user?
+ description: >-
+ Are you sure you want to enable this user? Once enabled, the user will be able to log back into the system.
enable_in_batch:
title: Enable
description: >-
- Are you sure you want to enable the selected users? They will be able
- to log in again after being enabled.
+ Are you sure you want to enable the selected users? Once enabled, these users will be able to log back into the system.
disable:
title: Disable
description: >-
- Are you sure you want to disable this user? This user will not be able
- to log in after being disabled
+ Are you sure you want to disable this user? Once disabled, the user will no longer be able to log in.
disable_in_batch:
title: Disable
description: >-
- Are you sure you want to disable the selected users? They will no longer
- be able to log in after being disabled.
+ Are you sure you want to disable the selected users? Once disabled, these users will no longer be able to log in.
filters:
role:
label: Role
@@ -1981,8 +1979,6 @@ core:
unknown_error: Unknown error
disable_success: Disabled successfully
enable_success: Enabled successfully
- no_users_to_enable: All selected users are already enabled
- no_users_to_disable: All selected users are already disabled
dialog:
titles:
tip: Tip
diff --git a/ui/src/locales/zh-CN.yaml b/ui/src/locales/zh-CN.yaml
index 9a6ce6e00..f56e6a903 100644
--- a/ui/src/locales/zh-CN.yaml
+++ b/ui/src/locales/zh-CN.yaml
@@ -1070,14 +1070,14 @@ core:
grant_permission:
title: 分配角色
enable:
- title: 取消禁用
- description: 确定取消禁用该用户吗?
+ title: 启用
+ description: 确定要启用该用户吗?启用之后该用户将可以重新登录系统
enable_in_batch:
title: 启用
- description: 确定要启用所选用户吗?启用后该用户将可以重新登录系统
+ description: 确定要启用所选用户吗?启用后这些用户将可以重新登录系统
disable:
title: 禁用
- description: 确定禁用该用户吗?禁用后该用户将无法登录系统
+ description: 确定要禁用该用户吗?禁用后该用户将无法登录系统
disable_in_batch:
title: 禁用
description: 确定要禁用所选用户吗?禁用后这些用户将无法登录系统
@@ -1840,8 +1840,6 @@ core:
unknown_error: 未知错误
disable_success: 禁用成功
enable_success: 启用成功
- no_users_to_enable: 所有选中的用户已启用
- no_users_to_disable: 所有选中的用户已停用
dialog:
titles:
tip: 提示
diff --git a/ui/src/locales/zh-TW.yaml b/ui/src/locales/zh-TW.yaml
index fbd96f95d..01061d3f3 100644
--- a/ui/src/locales/zh-TW.yaml
+++ b/ui/src/locales/zh-TW.yaml
@@ -1055,11 +1055,11 @@ core:
grant_permission:
title: 分配角色
enable:
- title: 取消停用
- description: 確定要取消停用該用戶嗎?
+ title: 啟用
+ description: 確定要啟用該用戶嗎?啟用後該用戶將可以重新登入系統
enable_in_batch:
title: 启用
- description: 確定要启用所選用戶嗎?啟用後該用戶將可以重新登入系統
+ description: 確定要啟用所選用戶嗎?啟用後這些用戶將可以重新登入系統
disable:
title: 停用
description: 確定要停用該用戶嗎?停用後該用戶將無法登入系統
@@ -1825,8 +1825,6 @@ core:
unknown_error: 未知錯誤
disable_success: 禁用成功
enable_success: 啟用成功
- no_users_to_enable: 所有選中的用戶都已啟用
- no_users_to_disable: 所有選中的用戶都已停用
dialog:
titles:
tip: 提示