diff --git a/src/main/java/com/cetc32/dh/beans/FormUser.java b/src/main/java/com/cetc32/dh/beans/FormUser.java new file mode 100644 index 0000000000000000000000000000000000000000..4ec8bccd6c3df5a669e630037ceb4c4a5993f062 --- /dev/null +++ b/src/main/java/com/cetc32/dh/beans/FormUser.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright(C) CETC-32 + * @Description: + * @Author :徐文远 + * @version:1.0 + * @date : 2021/7/22 下午3:36 + ******************************************************************************/ +package com.cetc32.dh.beans; + +public class FormUser { + String username; + String password; + String passwordN; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPasswordN() { + return passwordN; + } + + public void setPasswordN(String passwordN) { + this.passwordN = passwordN; + } +} diff --git a/src/main/java/com/cetc32/dh/controller/rest/AuthController.java b/src/main/java/com/cetc32/dh/controller/rest/AuthController.java index 91a1f1fb009e079984f08d09bd1fc317dbf10543..6b4d8fc5450e915d8b93f7c48b745e4559264aa1 100644 --- a/src/main/java/com/cetc32/dh/controller/rest/AuthController.java +++ b/src/main/java/com/cetc32/dh/controller/rest/AuthController.java @@ -149,8 +149,12 @@ public class AuthController { @Nullable private ResponseData verifyUserLoginEnable(String username, String password, BaseAdminUser user) { + if(user == null) + return ResponseData.error("账户信息异常!!"); if(user.getUserStatus() == -1){ return ResponseData.error("未激活用户请先联系管理员审核账号。"); + }else if( user.getUserStatus()<1){ + return ResponseData.error("账号已经注销。"); } int failed=user.getLoginFailed(); if(failed>3){ @@ -175,9 +179,9 @@ public class AuthController { userService.updateLogin(user); return ResponseData.error("账户信息有误或未审核!"); } - if(user.getWebLoginStatus()==1){ - return ResponseData.error("用户网页登录已在线,不能重复登录!"); - } +// if(user.getWebLoginStatus()==1){ +// return ResponseData.error("用户网页登录已在线,不能重复登录!"); +// } return null; } @@ -207,6 +211,19 @@ public class AuthController { public ResponseData apply(@RequestBody UserInfo userInfo){ BaseAdminUser user =new BaseAdminUser(); System.out.println(JSONObject.toJSONString(userInfo).toString()); + + String username =userInfo.getUsername(); + if(StringUtils.isBlank(username)) + { + return ResponseData.error("用户名不能为空!"); + } + if(userService.findByUserNameAll(username)!=null) + { + return ResponseData.error("用户名已存在!"); + } + if(StringUtils.isBlank(userInfo.getPassword())){ + return ResponseData.error("密码不能为空!"); + } user.setSysUserPwd(DigestUtils.Md5(userInfo.getUsername(),userInfo.getPassword())); user.setUserStatus(-1); user.setSysUserName(userInfo.getUsername()); @@ -331,13 +348,13 @@ public class AuthController { @PostMapping(value = "/rejectUser") public ResponseData reject(@RequestBody Map did){ Integer id=did.getOrDefault("id",0); - if(userService.delUser(id,0)>0) + if(userService.deleteInfo(id)>0) { - return ResponseData.success("操作成功!"); + return ResponseData.success("拒绝用户成功!"); } else { - return ResponseData.error("操作失败!"); + return ResponseData.error("拒绝用户失败!"); } } /* @ApiOperation(value = "用户删除(从数据库中删除不可恢复)", notes = "") @@ -372,12 +389,30 @@ public class AuthController { // public PageDataResult getUserList(@RequestBody UserInfo user_info){ public PageDataResult getUserList(@RequestBody Map userInfo){ BaseAdminUser user_info=CreateUser(userInfo); + if(user_info.getSysUserName()!=null&&user_info.getSysUserName().contains("%")){ + return new PageDataResult(0, new ArrayList<>(), user_info.getOffset()); + } // user_info.setUserStatus(1); return new PageDataResult(userService.countUserByCondition(user_info), userService.findUserByCondition(user_info), user_info.getOffset()); } - + /** + * @param formUser 用户表单信息 + * **/ + @LoginSkipped + @PostMapping("/resetpwd") + public ResponseData resetPwd(@RequestBody FormUser formUser){ + BaseAdminUser us = userService.findByUserName(formUser.getUsername()); + if(us !=null){ + if(us.getSysUserPwd().equals(DigestUtils.Md5(formUser.getUsername(),formUser.getPassword()))){ + userService.updatePwd(formUser.getUsername(),formUser.getPasswordN()); + return ResponseData.success(); + } + //return ResponseData.error(); + } + return ResponseData.error("用户账户信息有误。"); + } @ApiOperation(value = "注册用户激活及信息修改", notes = "") @ApiImplicitParams({ diff --git a/src/main/java/com/cetc32/dh/controller/rest/DepartmentController.java b/src/main/java/com/cetc32/dh/controller/rest/DepartmentController.java index fcbcf9dbbe94e8caf8375da526e9243f332e3702..a9def5af7c8011d3a4dacefacc2f6e78e18cae05 100644 --- a/src/main/java/com/cetc32/dh/controller/rest/DepartmentController.java +++ b/src/main/java/com/cetc32/dh/controller/rest/DepartmentController.java @@ -142,7 +142,17 @@ public class DepartmentController{ if(department == null){ return ResponseData.error("传入值不能为空!"); } - departmentService.updateByPrimaryKeySelective(department); + Department department_base= departmentService.findByID(department.getId()); + department_base.setName(department.getName()); + List dp=departmentService.findByParentID( department_base.getOrganizationid()); + List result1 = dp.stream() + .filter(item -> item.getName().equals( department_base.getName())) + .collect(Collectors.toList()); + if(result1.size()>0) + { + return ResponseData.error("同级已存在重复名字!"); + } + departmentService.updateByPrimaryKeySelective( department_base); return new ResponseData("更新成功"); } diff --git a/src/main/java/com/cetc32/dh/controller/views/IndexController.java b/src/main/java/com/cetc32/dh/controller/views/IndexController.java index acf8df8fd6435b982cc2e571c6bd2619165fe97e..708840c93cbed6b5a85bb3ec27d21689f04df536 100644 --- a/src/main/java/com/cetc32/dh/controller/views/IndexController.java +++ b/src/main/java/com/cetc32/dh/controller/views/IndexController.java @@ -96,5 +96,14 @@ public class IndexController { map.put("originUrl", req.getRequestURL()); return "register"; } + @GetMapping({"/changepwd","/chpwd"}) + public String changepwd(String ReturnUrl, ModelMap map, HttpServletRequest req){ + if(ReturnUrl==null) + ReturnUrl=eip; + System.out.println(ReturnUrl); + map.put("ReturnUrl", ReturnUrl); + map.put("originUrl", req.getRequestURL()); + return "changepwd"; + } } diff --git a/src/main/java/com/cetc32/dh/service/AdminUserService.java b/src/main/java/com/cetc32/dh/service/AdminUserService.java index 8ec8e05ad39fb740c1bbe2c66099a47060fb2524..2714662399ca1e8344e612ec7dc31e1bbad62dac 100644 --- a/src/main/java/com/cetc32/dh/service/AdminUserService.java +++ b/src/main/java/com/cetc32/dh/service/AdminUserService.java @@ -44,7 +44,7 @@ public interface AdminUserService { int updatePwd(String userName, String password); - int delUser(Integer id, Integer status); + int updateUserStatus(Integer id, Integer status); List getAllUserList(); diff --git a/src/main/java/com/cetc32/dh/service/impl/AdminUserServiceImpl.java b/src/main/java/com/cetc32/dh/service/impl/AdminUserServiceImpl.java index fba508de4e36a87a2bfe1ca300b9f5c5be98b666..29bfef54727dc004377f866257b517f12bf24e67 100644 --- a/src/main/java/com/cetc32/dh/service/impl/AdminUserServiceImpl.java +++ b/src/main/java/com/cetc32/dh/service/impl/AdminUserServiceImpl.java @@ -32,10 +32,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -65,6 +62,9 @@ public class AdminUserServiceImpl implements AdminUserService { @Override public int insertUser(BaseAdminUser user) { + if(null == user.getRegTime()){ + user.setRegTime(new Date()); + } return baseAdminUserMapper.insertUser(user); } @@ -201,7 +201,7 @@ public class AdminUserServiceImpl implements AdminUserService { * @return Map */ @Override - public int delUser(Integer id,Integer status) { + public int updateUserStatus(Integer id, Integer status) { try { // 删除用户 //return baseAdminUserMapper.deleteInfo(id); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index bb475b128d1e31979be83720f899edc8d2f792f4..c98000a1840c3fb6e2e2bf3ba16adba1ae72ba55 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -56,7 +56,17 @@ upLoadPath: ${storePath}upLoad rootPath: /root/daohang/data myPath: ${rootPath}myPath writePath: ${rootPath}/product -eip: http://192.168.1.5:8080/ -verifyUrl: http://192.168.1.42:8087/rest/auth/verify?token= -passportUrl: http://192.168.1.42:8087/?ReturnUrl= -defaultLoginRequiredEnable: false +eip: http://192.168.1.42:8080/ +#verifyUrl: ${sso.authcenter}/rest/auth/verify?token= +#passportUrl: ${sso.authcenter}/?ReturnUrl= +#defaultLoginRequiredEnable: false +sso: + authcenter: http://192.168.1.42:8087 + verifyUrl: ${sso.authcenter}/rest/auth/verify?token= + passportUrl: ${sso.authcenter}/?ReturnUrl= + defaultLoginRequiredEnable: false + permission: S000^接口用户@/rest/**;*权限管理@/rest/**; + sysurl : http://192.168.1.42:${server.port} + sysname : 认证中心门户 + registerUrl : ${sso.authcenter}/rest/api/sys/sync + #loginInclude: /rest/auth/**,/rest/role/**,/rest/audit/** diff --git a/src/main/resources/mapper/BaseAdminRoleMapper.xml b/src/main/resources/mapper/BaseAdminRoleMapper.xml index 7239fc497e3722b24952b8ad0691d11257db51be..d5bcb87089b298fd7139ed1ee94f658d14abfc0b 100644 --- a/src/main/resources/mapper/BaseAdminRoleMapper.xml +++ b/src/main/resources/mapper/BaseAdminRoleMapper.xml @@ -33,7 +33,8 @@ select * from uservisit order by syscode asc - + insert into uservisit(syscode,username,visit) values(#{sysCode},#{userName},#{visit}) on conflict (syscode,username) do update set visit = uservisit.visit +1 diff --git a/src/main/resources/static/js/selectTree/selectTree.js b/src/main/resources/static/js/selectTree/selectTree.js index 9147f15322034017fcff1fabacde59a39515454a..266d496c7587e025dddd314880622b1f1086dc3d 100644 --- a/src/main/resources/static/js/selectTree/selectTree.js +++ b/src/main/resources/static/js/selectTree/selectTree.js @@ -61,7 +61,7 @@ $(document).ready(function(){ if(v.length > 0) { v = v.substring(0, v.length-1); }; - $("#relationTypeId").html(relationTypeId);//将选中的值放到select + $("#areacode").html(relationTypeId);//将选中的值放到select $('.pull-left1', '#relationBtn').text(v).attr('title', v);//将中文(要显示的内容)放到button中显示 if(v == ""){//如果没有选中任何值,显示默认内容 $('.pull-left1', '#relationBtn').text('请选择').attr('title', '请选择'); @@ -104,14 +104,35 @@ function registor(){ var security = $("#security").val(); var areacode = $("#areacode").val(); var passwordC = $("#passwordC").val(); - if(!!!username || !!!areacode || !!!security || !!! password ){ - alert("用户名,密码,安全等级,区域权限为必填项"); + if(!!!username + //|| !!!areacode + || !!!security + || !!! password ){ + alert("用户名," + + "密码," + + "安全等级" + + //",区域权限" + + "为必填项"); return false; } if(password !== passwordC){ alert("两次密码不匹配!!!") return false } + var validators = new InputValidators(); + validators.importStrategies(validationStrategies); + validators.addValidator('isNoSpecialChar', $("#username"), '用户名不能包含特殊字符,请填写完整', username); + validators.addValidator('isContainSpace', $("#passwordC"), '密码不能包含空格', passwordC); + validators.addValidator('maxLength:50', $("#username"), '用户名长度不能超过50个字符', username); + validators.addValidator('minLength:1', $("#username"), '用户名长度不能小于1个字符', username); + var result = validators.check() + if(result){ + //layer.msg(result.errMsg); + alert(result.errMsg); + result.element.focus(); + result.element.select(); + return false; + } $.ajax({ url: "/rest/auth/apply", type: "POST", @@ -145,4 +166,4 @@ $(document).click(function(e){ $(e.target).attr('id')!="relationBtn" && $(e.target).parents('#relationBtn').length <= 0 ){ $('#relationPanel').hide(); } -}); \ No newline at end of file +}); diff --git a/src/main/resources/static/js/validator.js b/src/main/resources/static/js/validator.js new file mode 100644 index 0000000000000000000000000000000000000000..c5909cfb335d09c52ebabd3e729118e7e1efd08a --- /dev/null +++ b/src/main/resources/static/js/validator.js @@ -0,0 +1,160 @@ +/******************************************************************************* + * Copyright(C) CETC-32 + * @Description: + * @Author :徐文远 + * @version:1.0 + * @date : 2021/7/30 下午1:10 + ******************************************************************************/ + +//验证准备 +//输入验证器 +function InputValidators(){ + this.validators = []; + this.strategies = {}; +} + +//添加验证方法 +//参数: +// rule: 验证策略字符串 +// element: 被验证的dom元素 +// errMsg: 验证失败时显示的提示信息 +// value: 被验证的值 +InputValidators.prototype.addValidator = function(rule, element, errMsg, value) { + var that = this; + var ruleElements = rule.split(":"); + + this.validators.push(function() { + var strategy = ruleElements.shift(); + var params = ruleElements; + params.unshift(value); + params.unshift(errMsg); + params.unshift(element); + + return that.strategies[strategy].apply(that, params); + }); +}; + +//添加验证策略函数 +//参数: +// name: 策略名称 +// strategy: 策略函数 +InputValidators.prototype.addValidationStrategy = function(name, strategy){ + this.strategies[name] = strategy; +}; + +//从策略对象导入验证策略函数 +//参数: +// strategies: 包含各种策略函数的对象 +InputValidators.prototype.importStrategies = function(strategies) { + for(var strategyName in strategies) { + this.addValidationStrategy(strategyName, strategies[strategyName]); + } +}; + +//验证失败时,将相关的错误信息打包返回 +//参数: +// element: dom元素 +// errMsg: 验证失败时的提示消息 +// value: 被验证的值 +InputValidators.prototype.buildInvalidObj = function(element, errMsg, value){ + return { + 'value': value, + 'element': element, + 'errMsg': errMsg + }; +}; + +//开始验证 +InputValidators.prototype.check = function() { + for(var i = 0, validator; validator = this.validators[i++];){ + var result = validator(); + if(result) { + return result; + } + } +}; + +//验证策略对象,包含默认的验证策略函数 +var validationStrategies = { + isEqual: function(element, errMsg, value1, value2) { + if(value1 !== value2) { + return this.buildInvalidObj(element, errMsg, value1 ); + } + }, + isNoEmpty: function(element, errMsg, value) { + if(value === '') { + return this.buildInvalidObj(element, errMsg, value ); + } + }, + isNoUndefined: function(element, errMsg, value) { + if(value === "undefined") { + return this.buildInvalidObj(element, errMsg, value ); + } + }, + isInteger:function (element, errMsg, value) { + var reg = /^[0-9]*[1-9][0-9]*$/ ; + if(!reg.test(value)){ + return this.buildInvalidObj(element, errMsg, value); + } + }, + isRight:function (element, errMsg, value) { + if(value>100){ + return this.buildInvalidObj(element, errMsg, value); + } + }, + isNotEmpty:function (element, errMsg, value) { + var fdstrat = value.indexOf("."); + if(fdstrat==-1||value.length<=1){ + return this.buildInvalidObj(element, errMsg, value); + } + }, + isCheck:function (element, errMsg, value) { + var isValue=""; + for(var i=0;i length){ + return this.buildInvalidObj(element, errMsg, value); + } + }, + + isMail: function(element, errMsg, value, length) { + var reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/; + if(!reg.test(value)){ + return this.buildInvalidObj(element, errMsg, value); + } + }, + isNoSpecialChar: function (element,errMsg,value,length) { + var patrn = /[`~!@#$%^&*()\s_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/im; + if (patrn.test(value)) {// 包含特殊字符 + return this.buildInvalidObj(element, errMsg, value); + } + }, + isContainSpace:function (element,errMsg,value,length) { + var patrn = /[\s]/im; + if (patrn.test(value)) {// 包含特殊字符 + return this.buildInvalidObj(element, errMsg, value); + } + }, +}; diff --git a/src/main/resources/templates/changepwd.html b/src/main/resources/templates/changepwd.html new file mode 100644 index 0000000000000000000000000000000000000000..ffd365cc5771fd68160bfef40d60ff80ea16bb93 --- /dev/null +++ b/src/main/resources/templates/changepwd.html @@ -0,0 +1,111 @@ + + + + + Web用户修改密码 - + + + + + + + + + + + + + +
+ +
+
+
+

密码修改

+
+ + + + + +
+ +
+ + +
+
+ +
+
+ +
+ + +
+
+ + diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index e687fdfe01dc910c81ccc8586e01c694547dbceb..8ef17b4e66eae04ff011033dc72c7cc54aa8a507 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -50,9 +50,9 @@ - +
  • + 修改密码 +
  • diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html index 0303096b477e41adbc5c2b4ecfcca28e9cd8ad05..1848126b4e70828eb60170ef2a5e02c90bf17d06 100644 --- a/src/main/resources/templates/register.html +++ b/src/main/resources/templates/register.html @@ -1,6 +1,6 @@  - - + + Web用户注册页面 - @@ -11,6 +11,7 @@ + @@ -27,6 +28,7 @@ + @@ -47,12 +49,11 @@
    -  +  
    -
    + - - +