修改登录
authorqiaowei <jov123@163.com>
Wed, 8 May 2019 07:55:30 +0000 (15:55 +0800)
committerqiaowei <jov123@163.com>
Wed, 8 May 2019 07:55:30 +0000 (15:55 +0800)
12 files changed:
src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
src/main/java/com/supwisdom/dlpay/system/service/OperatorService.java
src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
src/main/resources/static/custom/module/index.js
src/main/resources/templates/index.html
src/main/resources/templates/login.html
src/main/resources/templates/system/function/index.html
src/main/resources/templates/system/operator/logs.html
src/main/resources/templates/system/operator/setpwd.html [new file with mode: 0644]
src/main/resources/templates/system/operator/userinfor.html [new file with mode: 0644]
src/main/resources/templates/system/role/index.html

index bd8e660..77242b9 100755 (executable)
@@ -1,11 +1,14 @@
 package com.supwisdom.dlpay.framework.filter;\r
 \r
 \r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.supwisdom.dlpay.api.bean.JsonResult;\r
 import com.supwisdom.dlpay.exception.ValidateCodeException;\r
 import com.supwisdom.dlpay.framework.security.validate.ImageCodeUtil;\r
 import com.supwisdom.dlpay.framework.security.validate.VerifyCode;\r
 import com.supwisdom.dlpay.framework.util.StringUtil;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.http.HttpStatus;\r
 import org.springframework.security.web.authentication.AuthenticationFailureHandler;\r
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;\r
 import org.springframework.stereotype.Component;\r
@@ -32,6 +35,8 @@ public class ValidateCodeFilter extends OncePerRequestFilter{
         */\r
        @Autowired\r
        private AuthenticationSuccessHandler myAuthenticationSuccessHandler;\r
+       @Autowired\r
+       private ObjectMapper objectMapper;\r
 \r
 \r
        @Override\r
@@ -43,7 +48,12 @@ public class ValidateCodeFilter extends OncePerRequestFilter{
                        try {\r
                                validate(request);\r
                        } catch (ValidateCodeException e) {\r
-                               myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);\r
+                               response.setStatus(HttpStatus.OK.value());\r
+                               response.setContentType("application/json;charset=UTF-8");\r
+                               response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, e.getMessage())));\r
+                               //response.sendError(HttpStatus.UNAUTHORIZED.value(),e.getMessage());\r
+                               //myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);\r
+                               return;\r
                        }\r
                }\r
                filterChain.doFilter(request, response);\r
@@ -58,7 +68,7 @@ public class ValidateCodeFilter extends OncePerRequestFilter{
                        throw new ValidateCodeException("获取验证码的值失败");\r
                }\r
                if (StringUtil.isEmpty(inputCode)) {\r
-                       throw new ValidateCodeException("验证码的值不能为空");\r
+                       throw new ValidateCodeException("验证码不能为空");\r
                }\r
                if (null == imageCode) {\r
                        throw new ValidateCodeException("验证码不存在");\r
index 173cc64..dc0ef57 100644 (file)
@@ -1,10 +1,8 @@
 package com.supwisdom.dlpay.system.controller;
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
-import com.supwisdom.dlpay.framework.domain.TFunction;
-import com.supwisdom.dlpay.framework.domain.TOperLog;
-import com.supwisdom.dlpay.framework.domain.TOperRole;
-import com.supwisdom.dlpay.framework.domain.TOperator;
+import com.supwisdom.dlpay.framework.domain.*;
+import com.supwisdom.dlpay.framework.security.OperUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import com.supwisdom.dlpay.framework.util.WebConstant;
@@ -18,6 +16,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -42,8 +41,7 @@ public class OperatorController {
     public PageResult<TOperator> getDataList(@RequestParam("page") Integer pageNo,
                                              @RequestParam("limit") Integer pageSize,
                                              @RequestParam(value = "searchkey", required = false) String searchKey,
-                                             @RequestParam(value = "searchvalue", required = false) String searchValue,
-                                             Model model) {
+                                             @RequestParam(value = "searchvalue", required = false) String searchValue) {
         try {
 
             if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
@@ -81,12 +79,13 @@ public class OperatorController {
         }
         return JsonResult.ok("success");
     }
+
     @PostMapping("/getoperatorrole")
     @ResponseBody
-    public JsonResult getoperatorrole(  @RequestParam(value = "operid") String operid) {
+    public JsonResult getoperatorrole(@RequestParam(value = "operid") String operid) {
         List<TOperRole> roles = operatorService.getOperRoleByOperId(operid);
         JsonResult ret = JsonResult.ok("success");
-        ret.put("roles",roles);
+        ret.put("roles", roles);
         return ret;
     }
 
@@ -125,16 +124,18 @@ public class OperatorController {
             return JsonResult.error("操作失败");
         }
     }
+
     @PostMapping("/updatestate")
     @PreAuthorize("hasPermission('/operator/updatestate','')")
     @ResponseBody
-    public JsonResult updatestate(@RequestParam("operid") String operid,@RequestParam("state") String state) {
-        if (operatorService.updateState(operid,state)) {
+    public JsonResult updatestate(@RequestParam("operid") String operid, @RequestParam("state") String state) {
+        if (operatorService.updateState(operid, state)) {
             return JsonResult.ok("操作成功");
         } else {
             return JsonResult.error("操作失败");
         }
     }
+
     @GetMapping("/logs")
     public String logs() {
         return "system/operator/logs";
@@ -159,4 +160,62 @@ public class OperatorController {
             return new PageResult<>(99, "系统查询错误");
         }
     }
+
+    @GetMapping("/userinfor")
+    public String userinfor(ModelMap map) {
+        TOperator operator = OperUtil.getCurrentOper();
+        if(operator!=null){
+            operator = operatorService.getOperatorByCode(operator.getOpercode());
+        }
+        map.put("user", operator);
+        return "system/operator/userinfor";
+    }
+
+    @PostMapping("/updateinfor")
+    @ResponseBody
+    public JsonResult updateinfor(@RequestBody TOperator oper) {
+        TOperator operator = OperUtil.getCurrentOper();
+        if (oper != null) {
+            operator.setSex(oper.getSex());
+            operator.setOpername(oper.getOpername());
+            operator.setEmail(oper.getEmail());
+            operator.setMobile(oper.getMobile());
+            operatorService.saveOperator(operator);
+        }
+        return JsonResult.ok("操作成功");
+    }
+
+    @GetMapping("/setpwd")
+    public String setpwd(ModelMap map) {
+        return "system/operator/setpwd";
+    }
+
+    @PostMapping("/dosetpwd")
+    @ResponseBody
+    public JsonResult dosetpwd(@RequestParam String curpwd,
+                               @RequestParam String newpwd, @RequestParam String renewpwd) {
+        if (StringUtil.isEmpty(curpwd)
+                || StringUtil.isEmpty(newpwd)
+                || StringUtil.isEmpty(renewpwd)) {
+            return JsonResult.error("参数粗错误");
+        }
+        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+        String encpwd = encoder.encode(curpwd);
+        TOperator operator = OperUtil.getCurrentOper();
+        if (operator == null) {
+            return JsonResult.error(401, "登录已过期,请重新登录");
+        }
+        if (!encoder.matches(curpwd,operator.getPassword())) {
+            return JsonResult.error("当前密码错误");
+        }
+        if (!newpwd.equals(renewpwd)) {
+            return JsonResult.error("两次密码不一致");
+        }
+        if(newpwd.length()<6||newpwd.length()>20){
+            return JsonResult.error("密码6~20个字符");
+        }
+        operator.setOperpwd(encoder.encode(newpwd));
+        operatorService.saveOperator(operator);
+        return JsonResult.ok("密码修改成功,请重新登录");
+    }
 }
index a975eb2..3954045 100644 (file)
@@ -38,4 +38,7 @@ public interface OperatorService {
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
     PageResult<TOperLog> getOperLogs(LogBean param);
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    boolean saveOperator(TOperator operator);
 }
index 5990930..e58032e 100644 (file)
@@ -160,4 +160,14 @@ public class OperatorServiceImpl implements OperatorService {
         }
         return new PageResult<>(operLogDao.findAll(pageable));
     }
+
+    @Override
+    public boolean saveOperator(TOperator operator) {
+        Optional<TOperator> temp = operatorDao.findById(operator.getOperid());
+        if (!temp.isPresent()) {
+            return false;
+        }
+        operatorDao.save(operator);
+        return true;
+    }
 }
index 1217d02..6b49296 100755 (executable)
@@ -8,9 +8,10 @@ layui.define(['admin', 'layer', 'element'], function (exports) {
         // 路由注册
         initRouter: function () {
             // 自动扫描side菜单注册
-            $('.layui-layout-admin .layui-side .layui-nav a[lay-href]').each(function () {
+            $('.layui-layout-admin  .layui-nav a[lay-href]').each(function () {
                 var menuName = $(this).text();
                 var menuPath = $(this).attr('lay-href');
+                console.log(menuPath,menuName);
                 if ('javascript:;' != menuPath && '' != menuPath) {
                     var key = menuPath.replace(/[?:=&/]/g, '_');
                     $(this).attr('href', '#!' + key);
@@ -25,6 +26,7 @@ layui.define(['admin', 'layer', 'element'], function (exports) {
                     $(this).attr('href', 'javascript:;');
                 }
             });
+
             // 主页
             Q.init({
                 index: 'home_console'
@@ -136,21 +138,6 @@ layui.define(['admin', 'layer', 'element'], function (exports) {
                     location.replace('logout');
                 });
             });
-
-            // 修改密码点击事件
-            $('#setPsw').click(function () {
-                admin.popupRight('home/password');
-            });
-
-            // 个人信息点击事件
-            $('#setInfo').click(function () {
-
-            });
-
-            // 消息点击事件
-            $('#btnMessage').click(function () {
-                admin.popupRight('home/message');
-            });
         }
     };
 
index 7dec8c5..a959451 100755 (executable)
                 <a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>\r
             </li>\r
             <li class="layui-nav-item" lay-unselect>\r
-                <a>\r
+                <a href="javascript:;">\r
                     <img th:src="@{/static/custom/images/head.png}" class="layui-nav-img">\r
                     <cite>[[${loginOper.opername}]]</cite>\r
                 </a>\r
                 <dl class="layui-nav-child">\r
-                    <dd lay-unselect>\r
-                        <a id="setInfo">个人信息</a>\r
-                    </dd>\r
-                    <dd lay-unselect>\r
-                        <a id="setPsw">修改密码</a>\r
-                    </dd>\r
+                    <dd ay-unselect><a lay-href="/operator/userinfor">基本资料</a></dd>\r
+                    <dd ay-unselect><a lay-href="/operator/setpwd">修改密码</a></dd>\r
                     <hr>\r
-                    <dd lay-unselect>\r
-                        <a id="btnLogout">退出</a>\r
-                    </dd>\r
+                    <dd layadmin-event="logout" style="text-align: center;" ><a href="/logout">退出</a></dd>\r
                 </dl>\r
             </li>\r
             <li class="layui-nav-item" lay-unselect>\r
         index.checkPageTabs(true);  // 检查多标签是否开启\r
         index.initRouter();  // 导航栏和tab联动\r
         index.bindEvent();  // 绑定事件\r
+\r
     });\r
 </script>\r
 </body>\r
index 81e8471..0cef69e 100644 (file)
@@ -97,6 +97,7 @@
                 data: field,
                 type: 'POST',
                 success: function (data) {
+                    console.log(data);
                     if (200 == data.code) {
                         layer.msg('登录成功', {icon: 1, time: 1500}, function () {
                             location.replace('./');
                     }
                 },
                 error: function (xhr) {
-                    console.log('error');
                     console.log(xhr);
                     layer.closeAll('loading');
-                    layer.msg('登录失败,请按f12查看console错误信息', {icon: 5});
+                    layer.msg('登录失败', {icon: 5});
                 }
             });
         });
index 245090c..3696dc7 100755 (executable)
@@ -2,7 +2,7 @@
     <div class="layui-card-header">\r
         <h2 class="header-title">功能维护</h2>\r
         <span class="layui-breadcrumb pull-right">\r
-          <a href="#!_operator_index">系统中心</a>\r
+          <a href="#">系统中心</a>\r
           <a><cite>功能维护</cite></a>\r
         </span>\r
     </div>\r
index 4213ac0..125ce8d 100644 (file)
@@ -2,7 +2,7 @@
     <div class="layui-card-header">
         <h2 class="header-title">操作日志</h2>
         <span class="layui-breadcrumb pull-right">
-          <a href="#!_operator_index">系统中心</a>
+          <a href="#">系统中心</a>
           <a><cite>操作日志</cite></a>
         </span>
     </div>
diff --git a/src/main/resources/templates/system/operator/setpwd.html b/src/main/resources/templates/system/operator/setpwd.html
new file mode 100644 (file)
index 0000000..d549946
--- /dev/null
@@ -0,0 +1,81 @@
+<div class="layui-card">
+    <div class="layui-card-header">修改密码</div>
+    <div class="layui-card-body" pad15>
+        <form lay-filter="setpwd-form" class="layui-form model-form">
+            <div class="layui-form" lay-filter="">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">当前密码</label>
+                    <div class="layui-input-inline">
+                        <input type="password" name="curpwd" lay-verify="required" lay-verType="tips" required
+                               class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">新密码</label>
+                    <div class="layui-input-inline">
+                        <input type="password" name="newpwd" lay-verify="pass" lay-verType="tips" autocomplete="off" required
+                               id="LAY_password" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">确认新密码</label>
+                    <div class="layui-input-inline">
+                        <input type="password" name="renewpwd" lay-verify="repass" lay-verType="tips" required
+                               autocomplete="off" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <div class="layui-input-block">
+                        <button class="layui-btn" lay-submit lay-filter="setmypass">确认修改</button>
+                        <button  class="layui-btn layui-btn-primary" type="button" ew-event="closeThisTabs">取消</button>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        let form = layui.form;
+        let admin = layui.admin;
+        $('#cancelBtn').click(function () {
+            admin.closeThisTabs()
+        });
+        form.render('select');
+        let url = '/operator/dosetpwd';
+        // 表单提交事件
+        form.on('submit(setmypass)', function (data) {
+            layer.load(2);
+            var token_name = $("meta[name='_csrf_token']").attr("content");
+            var token = $("meta[name='_csrf_token']").attr("value");
+            data.field[token_name] = token;
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: url,
+                data: data.field,
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1, time: 1500}, function () {
+                            location.replace('/login');
+                        }, 1000);
+                    } else if (data.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('/login');
+                        }, 1000);
+                        return;
+                    } else {
+                        console.log('err:' + result.code);
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function (data) {
+                    layer.closeAll('loading');
+                    layer.msg("请求服务器失败!", {icon: 2});
+                }
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/operator/userinfor.html b/src/main/resources/templates/system/operator/userinfor.html
new file mode 100644 (file)
index 0000000..8ca3c10
--- /dev/null
@@ -0,0 +1,97 @@
+<div class="layui-card">
+    <div class="layui-card-header">设置我的资料</div>
+    <div class="layui-card-body" pad15>
+        <form lay-filter="userinfor-form" class="layui-form model-form">
+            <div class="layui-form">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">登录名</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="opercode" th:value="${user.opercode}" readonly class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">名称</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="opername" th:value="${user.opername}" lay-verify="nickname"
+                               autocomplete="off"
+                               placeholder="请输入名称" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">性别</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="sex" value="male" title="男" th:checked="${user.sex}=='male'">
+                        <input type="radio" name="sex" value="female" title="女" th:checked="${user.sex}=='female'">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">手机</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="mobile" th:value="${user.mobile}" autocomplete="off"
+                               class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">邮箱</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="email" th:value="${user.mobile}" autocomplete="off"
+                               class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <div class="layui-input-block">
+                        <button class="layui-btn" lay-filter="infor-form-submit" lay-submit>确认修改</button>
+                        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeThisTabs">取消</button>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        let form = layui.form;
+        let admin = layui.admin;
+        $('#cancelBtn').click(function () {
+            admin.closeThisTabs()
+        });
+        form.render('select');
+        let url = '/operator/updateinfor';
+        // 表单提交事件
+        form.on('submit(infor-form-submit)', function (data) {
+            layer.load(2);
+            var token_name = $("meta[name='_csrf_token']").attr("content");
+            var token = $("meta[name='_csrf_token']").attr("value");
+            data.field[token_name] = token;
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: url,
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'X-CSRF-TOKEN': token,
+                },
+                data: JSON.stringify(data.field),
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1});
+                    } else if (data.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('/login');
+                        }, 1000);
+                        return;
+                    } else {
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function (data) {
+                    layer.closeAll('loading');
+                    layer.msg("请求服务器失败!", {icon: 2});
+                }
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
index 2d3f167..93c755d 100644 (file)
@@ -2,7 +2,7 @@
     <div class="layui-card-header">
         <h2 class="header-title">角色管理</h2>
         <span class="layui-breadcrumb pull-right">
-          <a href="#!_operator_index">系统中心</a>
+          <a href="#">系统中心</a>
           <a><cite>角色管理</cite></a>
         </span>
     </div>