From a8b6bda920ac17e7e3367a68669cf0010fb0d989 Mon Sep 17 00:00:00 2001 From: awenes <1121353141@qq.com> Date: Sat, 6 Apr 2024 18:52:16 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9E=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E8=A7=A3=E9=94=81=E7=94=A8=E6=88=B7=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../audit/event/type/AccountEventType.java | 5 + .../employee/audit/event/type/EventType.java | 5 +- .../account/UserList/components/User/User.tsx | 144 +++++++++--------- .../pages/account/UserList/locales/zh-CN.ts | 3 + .../controller/account/UserController.java | 34 ++--- 5 files changed, 104 insertions(+), 87 deletions(-) diff --git a/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/AccountEventType.java b/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/AccountEventType.java index 9af32029..3cde1693 100644 --- a/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/AccountEventType.java +++ b/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/AccountEventType.java @@ -107,6 +107,11 @@ public class AccountEventType { public static Type MODIFY_USER_PASSWORD = new Type( "eiam:event:account:update_password", "修改密码", ORG_ACCOUNT_RESOURCE, List.of(ADMIN)); + /** + * 解锁用户 + */ + public static Type UNLOCK_USER = new Type( + "eiam:event:account:unlock_user", "解锁用户", ORG_ACCOUNT_RESOURCE, List.of(ADMIN)); /** * 创建用户组 */ diff --git a/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/EventType.java b/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/EventType.java index af74548c..1e599f74 100644 --- a/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/EventType.java +++ b/eiam-audit/src/main/java/cn/topiam/employee/audit/event/type/EventType.java @@ -114,7 +114,10 @@ public enum EventType { * 修改密码 */ MODIFY_USER_PASSWORD(AccountEventType.MODIFY_USER_PASSWORD), - + /** + * 解锁用户 + */ + UNLOCK_USER(AccountEventType.UNLOCK_USER), /** * 修改账户信息 */ diff --git a/eiam-console/src/main/console-fe/src/pages/account/UserList/components/User/User.tsx b/eiam-console/src/main/console-fe/src/pages/account/UserList/components/User/User.tsx index 9daf6bbe..8508c5b0 100644 --- a/eiam-console/src/main/console-fe/src/pages/account/UserList/components/User/User.tsx +++ b/eiam-console/src/main/console-fe/src/pages/account/UserList/components/User/User.tsx @@ -247,13 +247,14 @@ export default (props: UserListProps) => { { title: intl.formatMessage({ id: 'pages.account.user_list.user.columns.option' }), valueType: 'option', - width: 110, + width: 120, align: 'center', fixed: 'right', render: (_text: any, row: AccountAPI.ListUser) => { - return [ - ...[ - (row.status === 'locked' || + return ( + + {/*锁定*/} + {(row.status === 'locked' || row.status === 'expired_locked' || row.status === 'password_expired_locked') && ( { > {intl.formatMessage({ id: 'pages.account.user_list.user.columns.option.unlock' })} - ), - row.status === 'enabled' ? ( + )} + {/*启用*/} + {row.status === 'enabled' && ( { {intl.formatMessage({ id: 'app.disable' })} - ) : ( + )} + {/*禁用*/} + {row.status === 'disabled' && ( { > {intl.formatMessage({ id: 'app.enable' })} - ), - ], - { - setId(row.id); - setUpdateUserVisible(true); - }} - > - {intl.formatMessage({ id: 'app.update' })} - , - { - if (key === 'reset-password') { + )} + {/*更新*/} + { setId(row.id); - setResetPasswordVisible(true); - } - }} - menus={[ - { - key: 'delete', - name: ( - - } - onConfirm={async () => { - const { success } = await removeUser(row.id); - if (success) { - message.success(intl.formatMessage({ id: 'app.operation_success' })); - actionRef.current?.reload(); - return; - } - }} - okText={intl.formatMessage({ id: 'app.yes' })} - cancelText={intl.formatMessage({ id: 'app.no' })} - key="delete" - > - - {intl.formatMessage({ - id: 'pages.account.user_list.user.columns.option.delete', + setUpdateUserVisible(true); + }} + > + {intl.formatMessage({ id: 'app.update' })} + + {/*更多*/} + { + if (key === 'reset-password') { + setId(row.id); + setResetPasswordVisible(true); + } + }} + menus={[ + { + key: 'delete', + name: ( + - - ), - }, - { - key: 'reset-password', - name: intl.formatMessage({ - id: 'pages.account.user_list.user.columns.option.reset_password', - }), - }, - ]} - />, - ]; + placement="bottomRight" + icon={ + + } + onConfirm={async () => { + const { success } = await removeUser(row.id); + if (success) { + message.success(intl.formatMessage({ id: 'app.operation_success' })); + actionRef.current?.reload(); + return; + } + }} + okText={intl.formatMessage({ id: 'app.yes' })} + cancelText={intl.formatMessage({ id: 'app.no' })} + key="delete" + > + + {intl.formatMessage({ + id: 'pages.account.user_list.user.columns.option.delete', + })} + + + ), + }, + { + key: 'reset-password', + name: intl.formatMessage({ + id: 'pages.account.user_list.user.columns.option.reset_password', + }), + }, + ]} + /> + + ); }, }, ]; diff --git a/eiam-console/src/main/console-fe/src/pages/account/UserList/locales/zh-CN.ts b/eiam-console/src/main/console-fe/src/pages/account/UserList/locales/zh-CN.ts index 50956f00..3a8171a4 100644 --- a/eiam-console/src/main/console-fe/src/pages/account/UserList/locales/zh-CN.ts +++ b/eiam-console/src/main/console-fe/src/pages/account/UserList/locales/zh-CN.ts @@ -47,6 +47,9 @@ export default { '删除后该用户无法使用,确定删除此用户?', 'pages.account.user_list.user.columns.option.reset_password': '重置密码', 'pages.account.user_list.user.table_alert_option_render': '您确定要批量删除选中用户吗?', + 'pages.account.user_list.user.columns.option.unlock': '解锁', + 'pages.account.user_list.user.columns.option.unlock_title': '确定解锁该用户吗?', + 'pages.account.user_list.user.columns.option.unlock_content': '解锁后用户将恢复正常使用', 'pages.account.user_list.user.toolbar.tooltip.title': '若不勾选,则只会搜索当前直属节点的账户,不包含下级节点账户。', 'pages.account.user_list.user.toolbar.tooltip.text': '包含节点下全部账户', diff --git a/eiam-console/src/main/java/cn/topiam/employee/console/controller/account/UserController.java b/eiam-console/src/main/java/cn/topiam/employee/console/controller/account/UserController.java index 1149ac33..66729525 100644 --- a/eiam-console/src/main/java/cn/topiam/employee/console/controller/account/UserController.java +++ b/eiam-console/src/main/java/cn/topiam/employee/console/controller/account/UserController.java @@ -226,23 +226,6 @@ public class UserController { return ApiRestResult. builder().result(result).build(); } - /** - * 用户离职 - * - * @param id {@link String} - * @return {@link Boolean} - */ - @Lock - @Preview - @Operation(summary = "用户离职") - @Audit(type = EventType.USER_RESIGN) - @DeleteMapping(value = "/resign/{id}") - @PreAuthorize(value = "authenticated and @sae.hasAuthority(T(cn.topiam.employee.support.security.userdetails.UserType).ADMIN)") - public ApiRestResult userResign(@PathVariable(value = "id") String id) { - return ApiRestResult. builder() - .result(userService.changeUserStatus(Long.valueOf(id), UserStatus.LOCKED)).build(); - } - /** * 重置用户密码 * @@ -260,6 +243,23 @@ public class UserController { .build(); } + /** + * 解锁用户 + * + * @param id {@link String} + * @return {@link Boolean} + */ + @Lock + @Preview + @Operation(summary = "解锁用户") + @Audit(type = EventType.UNLOCK_USER) + @PutMapping(value = "/unlock/{id}") + @PreAuthorize(value = "authenticated and @sae.hasAuthority(T(cn.topiam.employee.support.security.userdetails.UserType).ADMIN)") + public ApiRestResult unlockUser(@PathVariable(value = "id") String id) { + Boolean result = userService.changeUserStatus(Long.valueOf(id), UserStatus.ENABLE); + return ApiRestResult. builder().result(result).build(); + } + /** * 参数有效性验证 *