修改密码剔除登录状态

master
baize 2024-04-12 15:43:20 +08:00
parent e1a82e881c
commit 9cb3404b26
3 changed files with 31 additions and 9 deletions

View File

@ -58,7 +58,7 @@ public class SysPasswordService {
retryCount = retryCount + 1; retryCount = retryCount + 1;
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
throw new ServiceException("用户不存在/密码错误"); throw new ServiceException("用户/邮箱不存在/密码错误");
} else { } else {
clearLoginRecordCache(username); clearLoginRecordCache(username);
} }

View File

@ -14,6 +14,7 @@ import com.muyu.common.system.domain.SysDept;
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.common.system.domain.LoginUser; import com.muyu.common.system.domain.LoginUser;
import com.muyu.system.domain.SysUserOnline;
import com.muyu.system.domain.resp.AuthRoleResp; import com.muyu.system.domain.resp.AuthRoleResp;
import com.muyu.system.domain.resp.UserDetailInfoResp; import com.muyu.system.domain.resp.UserDetailInfoResp;
import com.muyu.system.domain.resp.UserInfoResp; import com.muyu.system.domain.resp.UserInfoResp;
@ -55,6 +56,8 @@ public class SysUserController extends BaseController {
@Autowired @Autowired
private SysConfigService configService; private SysConfigService configService;
@Autowired
private SysUserOnlineController sysUserOnlineController;
/** /**
* *
@ -232,15 +235,25 @@ public class SysUserController extends BaseController {
/** /**
* *
*/ */
@RequiresPermissions("system:user:edit") @RequiresPermissions("`system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE) @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd") @PutMapping("/resetPwd")
public Result resetPwd (@RequestBody SysUser user) { public Result resetPwd (@RequestBody SysUser user) {
userService.checkUserAllowed(user); SysUser sysUser = userService.selectUserById(user.getUserId());
userService.checkUserDataScope(user.getUserId()); userService.checkUserAllowed(sysUser);
user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); userService.checkUserDataScope(sysUser.getUserId());
user.setPassword(SecurityUtils.encryptPassword(sysUser.getPassword()));
user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.resetPwd(user)); Result<TableDataInfo<SysUserOnline>> list = sysUserOnlineController.list(user.getLoginIp(), user.getUserName());
System.out.println(list);
TableDataInfo<SysUserOnline> data = list.getData();
List<SysUserOnline> rows = data.getRows();
for (SysUserOnline row : rows) {
if (row.getUserName().equals(sysUser.getUserName())){
sysUserOnlineController.forceLogout(row.getTokenId());
}
}
return toAjax(userService.resetPwd(sysUser));
} }
/** /**

View File

@ -3,10 +3,13 @@ package com.muyu.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.JwtUtils;
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.auth.AuthUtil;
import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.security.utils.SecurityUtils;
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;
@ -19,10 +22,12 @@ import com.muyu.system.service.SysConfigService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; 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.HttpServletRequest;
import javax.validation.Validator; import javax.validation.Validator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -336,9 +341,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
* *
* @return * @return
*/ */
@Autowired
private RedisService redisService;
@Autowired
private StringRedisTemplate redisTemplate;
@Override @Override
public int resetPwd (SysUser user) { public int resetPwd (SysUser user) {
return userMapper.updateUser(user); int i = userMapper.updateUser(user);
return i;
} }
/** /**
@ -500,6 +511,4 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return successMsg.toString(); return successMsg.toString();
} }
} }