纯后台改密码剔除用户

master
Saisai Liu 2024-04-12 16:22:59 +08:00
parent d8974355f6
commit b8901b21ba
3 changed files with 52 additions and 3 deletions

View File

@ -1,5 +1,6 @@
package com.muyu.system.controller; package com.muyu.system.controller;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.file.FileTypeUtils; import com.muyu.common.core.utils.file.FileTypeUtils;
@ -7,6 +8,7 @@ import com.muyu.common.core.utils.file.MimeTypeUtils;
import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.log.annotation.Log; import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType; import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.service.TokenService; import com.muyu.common.security.service.TokenService;
import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.remote.RemoteFileService; import com.muyu.common.system.remote.RemoteFileService;
@ -19,7 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.TimeUnit;
/** /**
* *
@ -38,6 +42,12 @@ public class SysProfileController extends BaseController {
@Autowired @Autowired
private RemoteFileService remoteFileService; private RemoteFileService remoteFileService;
@Autowired
private RedisService redisService;
@Autowired
private HttpServletRequest request;
/** /**
* *
*/ */
@ -95,6 +105,8 @@ public class SysProfileController extends BaseController {
if (SecurityUtils.matchesPassword(newPassword, password)) { if (SecurityUtils.matchesPassword(newPassword, password)) {
return error("新密码不能与旧密码相同"); return error("新密码不能与旧密码相同");
} }
String userKey = CacheConstants.LOGIN_TOKEN_KEY+request.getHeader("Admin-Token");
redisService.deleteObject(userKey);
if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) { if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) {
// 更新缓存用户密码 // 更新缓存用户密码
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();

View File

@ -238,6 +238,7 @@ public class SysUserController extends BaseController {
userService.checkUserDataScope(user.getUserId()); userService.checkUserDataScope(user.getUserId());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.resetPwd(user)); return toAjax(userService.resetPwd(user));
} }

View File

@ -2,19 +2,25 @@ package com.muyu.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.UserConstants; import com.muyu.common.core.constant.UserConstants;
import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.core.utils.SpringUtils;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.bean.BeanValidators; import com.muyu.common.core.utils.bean.BeanValidators;
import com.muyu.common.datascope.annotation.DataScope; import com.muyu.common.datascope.annotation.DataScope;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.service.TokenService;
import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysRole; import com.muyu.common.system.domain.SysRole;
import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.SysPost; import com.muyu.system.domain.SysPost;
import com.muyu.system.domain.SysUserOnline;
import com.muyu.system.domain.SysUserPost; import com.muyu.system.domain.SysUserPost;
import com.muyu.system.domain.SysUserRole; import com.muyu.system.domain.SysUserRole;
import com.muyu.system.mapper.*; import com.muyu.system.mapper.*;
import com.muyu.system.service.SysUserOnlineService;
import com.muyu.system.service.SysUserService; import com.muyu.system.service.SysUserService;
import com.muyu.system.service.SysConfigService; import com.muyu.system.service.SysConfigService;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -24,9 +30,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Validator; import javax.validation.Validator;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -52,6 +59,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Autowired @Autowired
private SysConfigService configService; private SysConfigService configService;
@Autowired
private SysUserOnlineService userOnlineService;
@Autowired
private TokenService tokenService;
@Autowired
private HttpServletRequest request;
@Autowired
private RedisService redisService;
/** /**
* *
* *
@ -327,7 +345,25 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
*/ */
@Override @Override
public int resetPwd(SysUser user) { public int resetPwd(SysUser user) {
return userMapper.updateUser(user); int i = userMapper.updateUser(user);
if (i>0){
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) {
LoginUser userRedis = redisService.getCacheObject(key);
userOnlineList.add(userOnlineService.loginUserToUserOnline(userRedis));
}
Collections.reverse(userOnlineList);
userOnlineList.removeAll(Collections.singleton(null));
SysUser one = this.selectUserById(user.getUserId());
userOnlineList.forEach(sysUserOnline -> {
if (sysUserOnline.getUserName().equals(one.getUserName())){
redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + sysUserOnline.getTokenId());
}
});
}
return i;
} }
/** /**