Explorar el Código

支持用户邮箱配置

AE86 hace 2 años
padre
commit
a7c3777148

+ 8 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/UserService.java

@@ -1,6 +1,7 @@
 package org.dbsyncer.biz;
 
 import org.dbsyncer.biz.vo.UserInfoVo;
+import org.dbsyncer.parser.model.UserConfig;
 import org.dbsyncer.parser.model.UserInfo;
 
 import java.util.List;
@@ -64,4 +65,11 @@ public interface UserService {
      */
     List<UserInfoVo> getUserInfoAll(String currentUserName);
 
+    /**
+     * 获取用户配置
+     *
+     * @return
+     */
+    UserConfig getUserConfig();
+
 }

+ 0 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/config/ConfigChecker.java

@@ -62,10 +62,6 @@ public class ConfigChecker extends AbstractChecker {
             int time = NumberUtil.toInt(refreshInterval, 10);
             config.setRefreshInterval(time);
         }
-
-        // 刷新邮箱配置(有配置则发邮件)
-        String email = params.get("email");
-        config.setEmail(email);
         logService.log(LogType.SystemLog.INFO, "修改系统配置");
 
         // 修改基本配置

+ 5 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConfigServiceImpl.java

@@ -2,6 +2,7 @@ package org.dbsyncer.biz.impl;
 
 import org.apache.commons.io.FileUtils;
 import org.dbsyncer.biz.ConfigService;
+import org.dbsyncer.biz.UserService;
 import org.dbsyncer.biz.checker.Checker;
 import org.dbsyncer.biz.vo.ConfigVo;
 import org.dbsyncer.common.util.CollectionUtils;
@@ -45,6 +46,9 @@ public class ConfigServiceImpl implements ConfigService {
     @Autowired
     private LogService logService;
 
+    @Autowired
+    private UserService userService;
+
     @Override
     public String edit(Map<String, String> params) {
         ConfigModel model = configChecker.checkEditConfigModel(params);
@@ -61,6 +65,7 @@ public class ConfigServiceImpl implements ConfigService {
     public List<ConfigModel> getConfigModelAll() {
         List<ConfigModel> list = new ArrayList<>();
         list.add(getConfigModel());
+        list.add(userService.getUserConfig());
         manager.getConnectorAll().forEach(config -> list.add(config));
         manager.getMappingAll().forEach(config -> list.add(config));
         manager.getMetaAll().forEach(config -> list.add(config));

+ 10 - 9
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/UserServiceImpl.java

@@ -15,7 +15,6 @@ import org.dbsyncer.parser.model.UserConfig;
 import org.dbsyncer.parser.model.UserInfo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
@@ -33,11 +32,9 @@ import java.util.stream.Collectors;
 @Service
 public class UserServiceImpl implements UserService {
 
-    @Value(value = "${dbsyncer.web.login.username}")
-    private String username;
+    private static final String DEFAULT_USERNAME = "admin";
 
-    @Value(value = "${dbsyncer.web.login.password}")
-    private String password;
+    private static final String DEFAULT_PASSWORD = "0DPiKuNIrrVmD8IUCuw1hQxNqZc=";
 
     @Autowired
     private Manager manager;
@@ -56,6 +53,7 @@ public class UserServiceImpl implements UserService {
         Assert.hasText(nickname, "The nickname is null.");
         String password = params.get("password");
         Assert.hasText(password, "The password is null.");
+        String mail = params.get("mail");
 
         // 验证当前登录用户合法身份(必须是管理员操作)
         UserConfig userConfig = getUserConfig();
@@ -64,7 +62,7 @@ public class UserServiceImpl implements UserService {
         // 新用户合法性(用户不能重复)
         Assert.isNull(userConfig.getUserInfo(username), "用户已存在,请换个账号");
         // 注册新用户
-        userConfig.getUserInfoList().add(new UserInfo(username, nickname, SHA1Util.b64_sha1(password), UserRoleEnum.USER.getCode()));
+        userConfig.getUserInfoList().add(new UserInfo(username, nickname, SHA1Util.b64_sha1(password), UserRoleEnum.USER.getCode(), mail));
 
         return manager.editUserConfig(userConfig);
     }
@@ -76,6 +74,7 @@ public class UserServiceImpl implements UserService {
         String nickname = params.get("nickname");
         Assert.hasText(nickname, "The nickname is null.");
         String newPwd = params.get("newPwd");
+        String mail = params.get("mail");
 
         // 验证当前登录用户合法身份(管理员或本人操作)
         UserConfig userConfig = getUserConfig();
@@ -90,6 +89,7 @@ public class UserServiceImpl implements UserService {
 
         // 用户昵称
         updateUser.setNickname(nickname);
+        updateUser.setMail(mail);
         // 修改密码
         if (StringUtil.isNotBlank(newPwd)) {
             // 修改自己的密码需要验证
@@ -155,7 +155,7 @@ public class UserServiceImpl implements UserService {
         UserConfig userConfig = getUserConfig();
         UserInfo currentUser = userConfig.getUserInfo(currentUserName);
         boolean admin = null != currentUser && UserRoleEnum.isAdmin(currentUser.getRoleCode());
-        if(admin){
+        if (admin) {
             return getUserConfig().getUserInfoList().stream().map(user -> convertUserInfo2Vo(user)).collect(Collectors.toList());
         }
 
@@ -165,7 +165,8 @@ public class UserServiceImpl implements UserService {
         return list;
     }
 
-    private UserConfig getUserConfig() {
+    @Override
+    public UserConfig getUserConfig() {
         List<UserConfig> all = manager.getUserConfigAll();
         if (!CollectionUtils.isEmpty(all)) {
             return all.get(0);
@@ -179,7 +180,7 @@ public class UserServiceImpl implements UserService {
 
             UserConfig userConfig = (UserConfig) userConfigChecker.checkAddConfigModel(new HashMap<>());
             UserRoleEnum admin = UserRoleEnum.ADMIN;
-            userConfig.getUserInfoList().add(new UserInfo(username, username, password, admin.getCode()));
+            userConfig.getUserInfoList().add(new UserInfo(DEFAULT_USERNAME, DEFAULT_USERNAME, DEFAULT_PASSWORD, admin.getCode(), ""));
             manager.addUserConfig(userConfig);
             return userConfig;
         }

+ 0 - 10
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Config.java

@@ -9,9 +9,6 @@ public class Config extends ConfigModel {
 
     private int refreshInterval = 5;
 
-    // 同步失败发送邮箱,多个以分号分割
-    private String email;
-
     public int getRefreshInterval() {
         return refreshInterval;
     }
@@ -20,11 +17,4 @@ public class Config extends ConfigModel {
         this.refreshInterval = refreshInterval;
     }
 
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
 }

+ 15 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/UserInfo.java

@@ -27,14 +27,20 @@ public class UserInfo {
      */
     private String roleCode;
 
+    /**
+     * 邮箱(多个邮箱使用分号拼接)
+     */
+    private String mail;
+
     public UserInfo() {
     }
 
-    public UserInfo(String username, String nickname, String password, String roleCode) {
+    public UserInfo(String username, String nickname, String password, String roleCode, String mail) {
         this.username = username;
         this.nickname = nickname;
         this.password = password;
         this.roleCode = roleCode;
+        this.mail = mail;
     }
 
     public String getUsername() {
@@ -69,6 +75,14 @@ public class UserInfo {
         this.roleCode = roleCode;
     }
 
+    public String getMail() {
+        return mail;
+    }
+
+    public void setMail(String mail) {
+        this.mail = mail;
+    }
+
     @Override
     public boolean equals(Object obj) {
         if(obj instanceof UserInfo){

+ 0 - 2
dbsyncer-web/src/main/resources/application.properties

@@ -2,8 +2,6 @@ server.ip=127.0.0.1
 server.port=18686
 #web
 dbsyncer.web.worker.id=1
-dbsyncer.web.login.username=admin
-dbsyncer.web.login.password=0DPiKuNIrrVmD8IUCuw1hQxNqZc=
 dbsyncer.web.task.scheduler.pool-size=8
 dbsyncer.web.task.executor.core-size=10
 dbsyncer.web.task.executor.queue-capacity=1000

+ 0 - 1
dbsyncer-web/src/main/resources/public/index.html

@@ -18,7 +18,6 @@
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/bootstrap-dialog/bootstrap-dialog.min.css}"/>
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/bootstrap-select/bootstrap-select.min.css}"/>
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/bootstrap-switch/bootstrap-switch.min.css}"/>
-    <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/bootstrap-table/bootstrap-table-reorder-rows.css}"/>
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/bootstrap-fileinput/fileinput.min.css}"/>
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/icheck/all.css}"/>
     <link type="text/css" rel="stylesheet" th:href="@{/plugins/css/loading-plus/loading-plus.css}"/>

+ 1 - 0
dbsyncer-web/src/main/resources/public/nav.html

@@ -27,6 +27,7 @@
                 <li class="dropdown">
                     <a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown"><span id="currentUser"></span></a>
                     <ul class="dropdown-menu">
+                        <li><a href="javascript:void(0);" id="edit_personal"> <i class ="fa fa-pencil"></i>修改</a></li>
                         <li><a href="javascript:void(0);" id="nav_logout"> <i class ="fa fa-power-off"></i>注销</a></li>
                     </ul>
                 </li>

+ 0 - 6
dbsyncer-web/src/main/resources/public/system/system.html

@@ -26,12 +26,6 @@
                         <input type="number" class="form-control" max="100" min="1" dbsyncer-valid="require" name="refreshInterval" th:value="${config?.refreshInterval}"/>
                     </div>
                 </div>
-                <div class="form-group">
-                    <label class="col-sm-4 control-label">邮箱配置(多个邮箱分号分割)</label>
-                    <div class="col-sm-8">
-                        <input type="string" class="form-control" max="100" min="1" dbsyncer-valid="false" name="email" th:value="${config?.email}"/>
-                    </div>
-                </div>
                 <div class="form-group">
                     <div class="text-right col-sm-4"></div>
                     <div class="text-right col-sm-8">

+ 8 - 0
dbsyncer-web/src/main/resources/public/user/add.html

@@ -58,6 +58,14 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
                 </div>
               </div>
 
+              <!-- 邮箱 -->
+              <div class="form-group">
+                <label class="col-sm-2 control-label">邮箱配置 <i class="fa fa-question-circle fa_gray" aria-hidden="true" title="多个邮箱使用分号拼接,例子:abc@qq.com;xxx@qq.com"></i></label>
+                <div class="col-sm-10">
+                  <input type="string" class="form-control" max="100" min="1" dbsyncer-valid="false" name="mail"/>
+                </div>
+              </div>
+
             </div>
           </div>
         </div>

+ 28 - 5
dbsyncer-web/src/main/resources/public/user/edit.html

@@ -36,9 +36,16 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
             <div class="panel-body">
               <!-- 账号 -->
               <div class="form-group">
-                <label class="col-sm-2 control-label">账号 <strong class="driverVerifcateRequired">*</strong></label>
+                <label class="col-sm-2 control-label">角色</label>
                 <div class="col-sm-10">
-                  <input class="form-control" name="username" type="text" maxlength="50" dbsyncer-valid="require" placeholder="账号" readonly="true" th:value="${currentUser?.username}"/>
+                  <input class="form-control" name="roleName" type="text" readonly="true" th:value="${currentUser?.roleName}"/>
+                </div>
+              </div>
+              <!-- 账号 -->
+              <div class="form-group">
+                <label class="col-sm-2 control-label">账号</label>
+                <div class="col-sm-10">
+                  <input class="form-control" name="username" type="text" maxlength="50" placeholder="账号" readonly="true" th:value="${currentUser?.username}"/>
                 </div>
               </div>
 
@@ -50,6 +57,14 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
                 </div>
               </div>
 
+              <!-- 旧密码 -->
+              <div class="form-group">
+                <label class="col-sm-2 control-label">旧密码</label>
+                <div class="col-sm-10">
+                  <input class="form-control" name="oldPwd" type="password" maxlength="50" placeholder="密码"/>
+                </div>
+              </div>
+
               <!-- 新密码 -->
               <div class="form-group">
                 <label class="col-sm-2 control-label">新密码</label>
@@ -58,11 +73,11 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
                 </div>
               </div>
 
-              <!-- 旧密码 -->
+              <!-- 邮箱 -->
               <div class="form-group">
-                <label class="col-sm-2 control-label">旧密码</label>
+                <label class="col-sm-2 control-label">邮箱 <i class="fa fa-question-circle fa_gray" aria-hidden="true" title="多个邮箱使用分号拼接,例子:abc@qq.com;xxx@qq.com"></i></label>
                 <div class="col-sm-10">
-                  <input class="form-control" name="oldPwd" type="password" maxlength="50" placeholder="密码"/>
+                  <input type="string" class="form-control" max="100" min="1" name="mail" th:value="${currentUser?.mail}"/>
                 </div>
               </div>
 
@@ -89,12 +104,20 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
     if ($form.formValidate() == true) {
       const data = $form.serializeJson();
       const username = data.username;
+      const newPwd = data.newPwd;
       doPoster("/user/edit", data, function (data) {
         if (data.success == true) {
           bootGrowl("修改用户成功!", "success");
           backUserIndexPage();
           // 刷新个人信息
           if (currentUserName == username) {
+            // 修改个人密码后需要重新登录
+            if (!isBlank(newPwd)) {
+              doPoster("/logout", null, function (data) {
+                location.href = $basePath;
+              });
+              return;
+            }
             refreshLoginUser();
           }
         } else {

+ 2 - 0
dbsyncer-web/src/main/resources/public/user/user.html

@@ -30,6 +30,7 @@
                     <tr>
                         <th>用户</th>
                         <th>角色</th>
+                        <th>邮箱</th>
                         <th>操作</th>
                     </tr>
                     </thead>
@@ -37,6 +38,7 @@
                     <tr th:each="u,state : ${users}">
                         <td th:text="${u?.username + '(' + u?.nickname + ')'}"/>
                         <td th:text="${u?.roleName}"/>
+                        <td th:text="${u?.mail}"/>
                         <td>
                             <!-- 管理员或本人权限 -->
                             <button th:if="${currentUser?.roleCode eq 'admin' or currentUser?.username eq u?.username}" type="button" th:id="${u?.username}" class="btn btn-primary editUserBtn">

+ 1 - 0
dbsyncer-web/src/main/resources/static/js/common.js

@@ -24,6 +24,7 @@ function refreshLoginUser() {
     doGetter("/user/getUserInfo.json", {}, function (data) {
         if (data.success == true) {
             $("#currentUser").html(data.resultValue.nickname + " (" + data.resultValue.roleName + ")");
+            $("#edit_personal").attr("username", data.resultValue.username);
         }
     });
 }

+ 5 - 0
dbsyncer-web/src/main/resources/static/js/index.js

@@ -12,6 +12,11 @@ $(function () {
         }
     });
 
+    // 修改登录用户
+    $("#edit_personal").click(function () {
+        doLoader("/user/page/edit?username=" + $(this).attr("username"));
+    });
+
     // 注销
     $("#nav_logout").click(function () {
         // 确认框确认是否注销