Commit cb89a8d2de6febd4dd5fbd9e2b20a03445b2ec26
1 parent
d08cb9ee
添加管理员重置密码,密码有效期功能
Showing
6 changed files
with
149 additions
and
18 deletions
src/main/java/com/bsth/controller/sys/UserController.java
| ... | ... | @@ -107,9 +107,13 @@ public class UserController extends BaseController<SysUser, Integer> { |
| 107 | 107 | // 检验密码有效期 |
| 108 | 108 | Date lastPwdDate = user.getLastPwdDate(); |
| 109 | 109 | if (lastPwdDate != null) { |
| 110 | + Integer validPeriod = user.getPwdValidPeriod(); | |
| 111 | + if (validPeriod == null) { | |
| 112 | + validPeriod = 180; // 默认180天 | |
| 113 | + } | |
| 110 | 114 | Period p = new Period(new DateTime(lastPwdDate), new DateTime(new Date()), PeriodType.days()); |
| 111 | - if (p.getDays() > 30) { // 30天不更新密码,不能登录 | |
| 112 | - return put(rs, "msg", "30天没有修改密码,不能登录,请联系管理员"); | |
| 115 | + if (p.getDays() > validPeriod) { | |
| 116 | + return put(rs, "msg", validPeriod + "天没有修改密码,不能登录,请联系管理员"); | |
| 113 | 117 | } |
| 114 | 118 | } |
| 115 | 119 | |
| ... | ... | @@ -282,6 +286,16 @@ public class UserController extends BaseController<SysUser, Integer> { |
| 282 | 286 | return msg; |
| 283 | 287 | } |
| 284 | 288 | |
| 289 | + @RequestMapping(value = "/resetPWD", method = RequestMethod.POST) | |
| 290 | + public String resetPWD(@RequestParam Integer user_id, @RequestParam Integer reset_day, @RequestParam String reset_passord) { | |
| 291 | + try { | |
| 292 | + sysUserService.resetPWD(user_id, reset_passord, reset_day); | |
| 293 | + return "修改成功!"; | |
| 294 | + } catch (Exception exp) { | |
| 295 | + return exp.getMessage(); | |
| 296 | + } | |
| 297 | + } | |
| 298 | + | |
| 285 | 299 | @RequestMapping(value = "/register", method = RequestMethod.POST) |
| 286 | 300 | public Map<String, Object> register(SysUser u) { |
| 287 | 301 | return sysUserService.register(u); | ... | ... |
src/main/java/com/bsth/entity/sys/SysUser.java
| ... | ... | @@ -35,6 +35,8 @@ public class SysUser { |
| 35 | 35 | |
| 36 | 36 | /** 最近密码更新时间 */ |
| 37 | 37 | private Date lastPwdDate; |
| 38 | + /** 密码有效期 */ | |
| 39 | + private Integer pwdValidPeriod; | |
| 38 | 40 | |
| 39 | 41 | private String agencies; |
| 40 | 42 | |
| ... | ... | @@ -123,4 +125,12 @@ public class SysUser { |
| 123 | 125 | public void setLastPwdDate(Date lastPwdDate) { |
| 124 | 126 | this.lastPwdDate = lastPwdDate; |
| 125 | 127 | } |
| 128 | + | |
| 129 | + public Integer getPwdValidPeriod() { | |
| 130 | + return pwdValidPeriod; | |
| 131 | + } | |
| 132 | + | |
| 133 | + public void setPwdValidPeriod(Integer pwdValidPeriod) { | |
| 134 | + this.pwdValidPeriod = pwdValidPeriod; | |
| 135 | + } | |
| 126 | 136 | } | ... | ... |
src/main/java/com/bsth/service/sys/SysUserService.java
| ... | ... | @@ -14,6 +14,8 @@ public interface SysUserService extends BaseService<SysUser, Integer>{ |
| 14 | 14 | |
| 15 | 15 | int changePWD(int id,String newPWD); |
| 16 | 16 | |
| 17 | + void resetPWD(int id, String newPWD, int validperiod); | |
| 18 | + | |
| 17 | 19 | Map<String,Object> register(SysUser u); |
| 18 | 20 | |
| 19 | 21 | List<SysUser> findAll_distinct(); | ... | ... |
src/main/java/com/bsth/service/sys/impl/SysUserServiceImpl.java
| ... | ... | @@ -51,7 +51,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implem |
| 51 | 51 | return sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode(newPWD)); |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | - @Override | |
| 54 | + @Override | |
| 55 | + public void resetPWD(int id, String newPWD, int validperiod) { | |
| 56 | + SysUser user = sysUserRepository.findOne(id); | |
| 57 | + user.setPwdValidPeriod(validperiod); | |
| 58 | + sysUserRepository.changePWD(id, new BCryptPasswordEncoder(4).encode(newPWD)); | |
| 59 | + } | |
| 60 | + | |
| 61 | + @Override | |
| 55 | 62 | public Map<String, Object> register(SysUser u) { |
| 56 | 63 | Map<String, Object> rs = new HashMap(); |
| 57 | 64 | try{ | ... | ... |
src/main/resources/static/pages/permission/user/list.html
| ... | ... | @@ -115,6 +115,7 @@ |
| 115 | 115 | |
| 116 | 116 | <td> |
| 117 | 117 | <a class="btn btn-sm blue btn-outline" href="edit.html?no={{obj.id}}" data-pjax><i class="fa fa-edit"></i> 编辑</a> |
| 118 | + <a class="btn btn-sm blue btn-outline resetpwd" style="display: {{obj.showpdc}}" onclick="resetPassword({{obj.id}}, {{obj.lastPwdDate}});"><i class="fa fa-edit"></i> 重置密码</a> | |
| 118 | 119 | <!--<button type="button" class="btn btn-sm line_allot_btn" data-id="{{obj.id}}">线调线路分配</button>--> |
| 119 | 120 | </td> |
| 120 | 121 | </tr> |
| ... | ... | @@ -171,23 +172,40 @@ $(function(){ |
| 171 | 172 | params['order'] = 'lastLoginDate'; |
| 172 | 173 | params['page'] = page; |
| 173 | 174 | var i = layer.load(2); |
| 174 | - $get('/user' ,params, function(data){ | |
| 175 | - $.each(data.content, function(i, obj) { | |
| 176 | - obj.lastLoginDate = moment(obj.lastLoginDate).format("YYYY-MM-DD HH:mm:ss"); | |
| 175 | + $get('/user' ,params, function(data) { | |
| 176 | + // 获取当前登录用户 | |
| 177 | + $get('/user/currentUser',{}, function(user) { | |
| 178 | + var b_isAdmin = false; // 是否是管理员用户 | |
| 179 | + $.each(user.authorities, function(i, obj) { | |
| 180 | + if (obj.authority === 'ROLE_ADMIN') { | |
| 181 | + b_isAdmin = true; | |
| 182 | + } | |
| 183 | + }); | |
| 184 | + | |
| 185 | + $.each(data.content, function(i, obj) { | |
| 186 | + obj.lastLoginDate = moment(obj.lastLoginDate).format("YYYY-MM-DD HH:mm:ss"); | |
| 187 | + if (b_isAdmin) { | |
| 188 | + obj.showpdc = ''; // 显示重置密码按钮 | |
| 189 | + } else { | |
| 190 | + obj.showpdc = 'none'; | |
| 191 | + } | |
| 192 | + }); | |
| 193 | + var bodyHtm = template('user_list_temp', {list: data.content}); | |
| 194 | + | |
| 195 | + $('#datatable_user tbody').html(bodyHtm) | |
| 196 | + .find('.icheck').iCheck(icheckOptions) | |
| 197 | + .on('ifChanged', iCheckChange); | |
| 198 | + if(pagination && data.content.length > 0){ | |
| 199 | + //重新分页 | |
| 200 | + initPagination = true; | |
| 201 | + showPagination(data); | |
| 202 | + } | |
| 203 | + layer.close(i); | |
| 204 | + | |
| 205 | + $('.line_allot_btn').on('click', openAllotWindow); | |
| 206 | + | |
| 177 | 207 | }); |
| 178 | - var bodyHtm = template('user_list_temp', {list: data.content}); | |
| 179 | - | |
| 180 | - $('#datatable_user tbody').html(bodyHtm) | |
| 181 | - .find('.icheck').iCheck(icheckOptions) | |
| 182 | - .on('ifChanged', iCheckChange); | |
| 183 | - if(pagination && data.content.length > 0){ | |
| 184 | - //重新分页 | |
| 185 | - initPagination = true; | |
| 186 | - showPagination(data); | |
| 187 | - } | |
| 188 | - layer.close(i); | |
| 189 | 208 | |
| 190 | - $('.line_allot_btn').on('click', openAllotWindow); | |
| 191 | 209 | }); |
| 192 | 210 | } |
| 193 | 211 | |
| ... | ... | @@ -263,4 +281,22 @@ function changeEnabled(id,enabled){ |
| 263 | 281 | jsDoQuery(null, true); |
| 264 | 282 | }) |
| 265 | 283 | } |
| 284 | +// 重置密码 | |
| 285 | +function resetPassword(userId, ld) { | |
| 286 | + $.get('/pages/permission/user/resetPWD.html', function (content) { | |
| 287 | + layer.open({ | |
| 288 | + type: 1, | |
| 289 | + area: ['600px', '360px'], | |
| 290 | + content: content, | |
| 291 | + title: '修改密码', | |
| 292 | + shift: 5, | |
| 293 | + scrollbar: false, | |
| 294 | + success: function (layero, index) { | |
| 295 | + $(layero).find('#user_id').val(userId); | |
| 296 | + $(layero).find('#last_pwd_date').val(ld ? moment(ld).format("YYYY-MM-DD HH:mm:ss") : ''); | |
| 297 | + } | |
| 298 | + }); | |
| 299 | + }); | |
| 300 | + | |
| 301 | +} | |
| 266 | 302 | </script> |
| 267 | 303 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/permission/user/resetPWD.html
0 → 100644
| 1 | +<div class="row"> | |
| 2 | + <div class="col-md-12"> | |
| 3 | + <!-- BEGIN VALIDATION STATES--> | |
| 4 | + <div class="portlet light portlet-fit portlet-form bordered"> | |
| 5 | + <div class="portlet-body"> | |
| 6 | + <form class="form-horizontal" id="resetPWDForm"> | |
| 7 | + <input type="hidden" id="user_id" name="user_id"> | |
| 8 | + <div class="form-group" style="margin-top: 60px"> | |
| 9 | + <label class="control-label col-md-4">最近密码更新时间: | |
| 10 | + </label> | |
| 11 | + <div class="col-md-6"> | |
| 12 | + <div class="input-icon right"> | |
| 13 | + <i class="fa"></i> | |
| 14 | + <input type="text" readonly class="form-control" name="last_pwd_date" id="last_pwd_date" value="" /> </div> | |
| 15 | + </div> | |
| 16 | + </div> | |
| 17 | + | |
| 18 | + <div class="form-group" > | |
| 19 | + <label class="control-label col-md-4">密码有效期(天): | |
| 20 | + </label> | |
| 21 | + <div class="col-md-6"> | |
| 22 | + <div class="input-icon right"> | |
| 23 | + <i class="fa"></i> | |
| 24 | + <input type="number" class="form-control" name="reset_day" id="reset_day" value="180" /> </div> | |
| 25 | + </div> | |
| 26 | + </div> | |
| 27 | + <div class="form-group"> | |
| 28 | + <label class="control-label col-md-4">默认密码: | |
| 29 | + </label> | |
| 30 | + <div class="col-md-6"> | |
| 31 | + <div class="input-icon right"> | |
| 32 | + <i class="fa"></i> | |
| 33 | + <input type="text" class="form-control" name="reset_passord" id="reset_passord" value="123456" /> </div> | |
| 34 | + </div> | |
| 35 | + </div> | |
| 36 | + <div class="form-actions"> | |
| 37 | + <div class="row"> | |
| 38 | + <div class="col-md-offset-5 col-md-7"> | |
| 39 | + <button type="button" id="confirm" class="btn green">确定</button> | |
| 40 | + <button type="button" class="btn default">取消</button> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + </div> | |
| 44 | + </form> | |
| 45 | + </div> | |
| 46 | + </div> | |
| 47 | + </div> | |
| 48 | +</div> | |
| 49 | + | |
| 50 | + | |
| 51 | +<script> | |
| 52 | + $(function(){ | |
| 53 | + | |
| 54 | + $("#confirm").on("click",function(){ | |
| 55 | + var data = $('#resetPWDForm').serializeJSON(); | |
| 56 | + console.log(data); | |
| 57 | + $.post('/user/resetPWD',data,function(msg){ | |
| 58 | + layer.alert(msg); | |
| 59 | + }); | |
| 60 | + }); | |
| 61 | + }); | |
| 62 | +</script> | |
| 0 | 63 | \ No newline at end of file | ... | ... |