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;