diff --git a/front/src/utils/i18n/languages/en-us.js b/front/src/utils/i18n/languages/en-us.js index 7fd29e5bbdfc5e867e12305c8a879aae37c1561f..8e019fb6101de1ece43a999a74d920f702d9a9e9 100644 --- a/front/src/utils/i18n/languages/en-us.js +++ b/front/src/utils/i18n/languages/en-us.js @@ -480,6 +480,8 @@ export default { 'randomPassword': ' Random Password', 'passwordNotEmpty': 'Password not empty', 'shareName': 'Share Name', + "emailFormatError": 'Email format error', + "suggestPassword": 'Empty generate a default password', // ---- common end ---- // ---- 组件特有的,key表示组件名称(文件夹名称) ---- RichTextEditor: { diff --git a/front/src/utils/i18n/languages/zh-cn.js b/front/src/utils/i18n/languages/zh-cn.js index 95fdd39ee4f56545654384757a7ca90564690454..122bd70c0fd5c4a747ec933dddf33616805a0131 100644 --- a/front/src/utils/i18n/languages/zh-cn.js +++ b/front/src/utils/i18n/languages/zh-cn.js @@ -481,6 +481,8 @@ export default { 'randomPassword': ' 随机密码', 'passwordNotEmpty': '密码不能为空', 'shareName': '分享名称', + "emailFormatError": '邮箱校验失败', + "suggestPassword": '不填会生成默认密码', // ---- common end ---- // ---- 组件特有的,key表示组件名称(文件夹名称) ---- RichTextEditor: { diff --git a/front/src/views/admin/user/index.vue b/front/src/views/admin/user/index.vue index fe4b9eb04aa5dca17903bdd63347ba3204b89902..b38c3777c6d2f9f087d66c0f94c3095d77417b8b 100644 --- a/front/src/views/admin/user/index.vue +++ b/front/src/views/admin/user/index.vue @@ -152,6 +152,12 @@ label-width="120px" size="mini" > + + + - + + + + { this.tipSuccess($t('operateSuccess')) this.dialogVisible = false + this.isUpdate = false this.loadTable() }) } else { @@ -326,6 +348,7 @@ export default { const data = resp.data this.alert($t('addUserSuccess', data.username, data.password), $t('createSuccess')) this.dialogVisible = false + this.isUpdate = false this.loadTable() }) } @@ -345,6 +368,7 @@ export default { nickname: '', isSuperAdmin: 0 } + this.isUpdate = false }, onPageIndexChange(pageIndex) { this.searchFormData.pageIndex = pageIndex @@ -375,6 +399,17 @@ export default { this.tipSuccess($t('operateSuccess')) this.chooseProjectShow = false }) + }, + validateEmail(rule, value, callback) { + if (!value) { + return callback(); + } + const emailPattern = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/; + if (!emailPattern.test(value)) { + callback(new Error($t('emailFormatError'))); + } else { + callback(); + } } } } diff --git a/server/server-service/src/main/java/cn/torna/service/dto/UserAddDTO.java b/server/server-service/src/main/java/cn/torna/service/dto/UserAddDTO.java index f8836f26ecae3d4f9cdf06168d1fadf6143b4046..853f0bd19f578f228ac5349cd9a480b95a963d63 100644 --- a/server/server-service/src/main/java/cn/torna/service/dto/UserAddDTO.java +++ b/server/server-service/src/main/java/cn/torna/service/dto/UserAddDTO.java @@ -24,4 +24,7 @@ public class UserAddDTO { private Byte status; + /** 邮箱, 数据库字段:email */ + private String email; + } diff --git a/server/server-web/src/main/java/cn/torna/web/controller/admin/UserController.java b/server/server-web/src/main/java/cn/torna/web/controller/admin/UserController.java index 44cbb20bf857de60d44ff732afb0b6fbec939cd5..cb3ee8984d796c957cfdcc78934131254177cf71 100644 --- a/server/server-web/src/main/java/cn/torna/web/controller/admin/UserController.java +++ b/server/server-web/src/main/java/cn/torna/web/controller/admin/UserController.java @@ -79,13 +79,18 @@ public class UserController { @PostMapping("create") public Result create(@RequestBody UserCreateParam param) { UserAddDTO userAddDTO = CopyUtil.copyBean(param, UserAddDTO::new); - userAddDTO.setPassword(DigestUtils.md5DigestAsHex(initPassword.getBytes(StandardCharsets.UTF_8))); + String password = param.getPassword(); + if (org.apache.commons.lang3.StringUtils.isEmpty(password)) { + password = initPassword; + } + userAddDTO.setPassword(DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8))); userAddDTO.setStatus(UserStatusEnum.SET_PASSWORD.getStatus()); userAddDTO.setSourceEnum(UserInfoSourceEnum.BACKEND); + userAddDTO.setEmail(param.getEmail()); userInfoService.addUser(userAddDTO); UserCreateVO userCreateVO = new UserCreateVO(); userCreateVO.setUsername(param.getUsername()); - userCreateVO.setPassword(initPassword); + userCreateVO.setPassword(password); return Result.ok(userCreateVO); } diff --git a/server/server-web/src/main/java/cn/torna/web/controller/admin/param/UserCreateParam.java b/server/server-web/src/main/java/cn/torna/web/controller/admin/param/UserCreateParam.java index 064b86e035a2fd3cadb2dcad6628e5c7bd1905f8..90b1b2ae8d1e0592c6e3648eb7b3daf3dc0d834c 100644 --- a/server/server-web/src/main/java/cn/torna/web/controller/admin/param/UserCreateParam.java +++ b/server/server-web/src/main/java/cn/torna/web/controller/admin/param/UserCreateParam.java @@ -16,6 +16,13 @@ public class UserCreateParam { @NotBlank private String nickname; + /** 密码, 数据库字段:password */ + @NotBlank + private String password; + + /** 邮箱, 数据库字段: email */ + private String email; + @NotNull private Byte isSuperAdmin;