|
|
|
@ -11,11 +11,24 @@ import org.dromara.system.mapper.SysUserMapper; |
|
|
|
import org.junit.jupiter.api.DisplayName; |
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; |
|
|
|
import org.springframework.boot.test.context.SpringBootTest; |
|
|
|
|
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import cn.dev33.satoken.context.mock.SaTokenContextMockUtil; |
|
|
|
import cn.dev33.satoken.stp.parameter.SaLoginParameter; |
|
|
|
import cn.dev33.satoken.stp.StpUtil; |
|
|
|
import org.dromara.common.core.domain.model.LoginUser; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
import org.junit.jupiter.api.AfterEach; |
|
|
|
import org.junit.jupiter.api.BeforeEach; |
|
|
|
import org.springframework.mock.web.MockHttpServletRequest; |
|
|
|
import org.springframework.web.context.request.RequestContextHolder; |
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes; |
|
|
|
|
|
|
|
/** |
|
|
|
* 批量重置 enterprise_user 表用户密码 |
|
|
|
* <p> |
|
|
|
@ -23,6 +36,7 @@ import java.util.List; |
|
|
|
* </p> |
|
|
|
*/ |
|
|
|
@SpringBootTest(classes = ZdxtAdminApplication.class) |
|
|
|
@AutoConfigureMockMvc |
|
|
|
@DisplayName("批量重置企业用户密码") |
|
|
|
public class ResetUserPasswordTest { |
|
|
|
|
|
|
|
@ -35,6 +49,46 @@ public class ResetUserPasswordTest { |
|
|
|
/** 重置后的明文密码 */ |
|
|
|
private static final String NEW_PASSWORD = "szsf@zfjd"; |
|
|
|
|
|
|
|
private static final String TEST_CLIENT_ID = "e5cd7e4891bf95d1d19206ce24a7b32e"; |
|
|
|
|
|
|
|
@BeforeEach |
|
|
|
public void setUp() { |
|
|
|
// 初始化 Sa-Token 上下文(非 Web 环境下 StpUtil.login 需要)
|
|
|
|
SaTokenContextMockUtil.setMockContext(); |
|
|
|
|
|
|
|
// 设置模拟请求上下文(数据权限拦截器需要从 SaToken 上下文获取用户信息)
|
|
|
|
MockHttpServletRequest mockRequest = new MockHttpServletRequest(); |
|
|
|
mockRequest.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"); |
|
|
|
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(mockRequest)); |
|
|
|
|
|
|
|
// 构造测试用登录用户
|
|
|
|
LoginUser loginUser = new LoginUser(); |
|
|
|
loginUser.setUserId(1L); |
|
|
|
loginUser.setUserType("sys_user"); |
|
|
|
loginUser.setTenantId("000000"); |
|
|
|
loginUser.setUsername("test_admin"); |
|
|
|
loginUser.setNickname("测试管理员"); |
|
|
|
loginUser.setDeptId("103"); |
|
|
|
loginUser.setDeptName("测试部门"); |
|
|
|
loginUser.setRolePermission(new HashSet<>()); |
|
|
|
loginUser.setMenuPermission(new HashSet<>()); |
|
|
|
|
|
|
|
// 模拟登录
|
|
|
|
SaLoginParameter param = new SaLoginParameter(); |
|
|
|
param.setExtra(LoginHelper.CLIENT_KEY, TEST_CLIENT_ID); |
|
|
|
LoginHelper.login(loginUser, param); |
|
|
|
} |
|
|
|
|
|
|
|
@AfterEach |
|
|
|
public void tearDown() { |
|
|
|
try { |
|
|
|
StpUtil.logout(); |
|
|
|
} catch (Exception ignored) { |
|
|
|
} |
|
|
|
RequestContextHolder.resetRequestAttributes(); |
|
|
|
SaTokenContextMockUtil.clearContext(); |
|
|
|
} |
|
|
|
|
|
|
|
@DisplayName("批量重置 enterprise_user 所有用户密码为 szsf@zfjd") |
|
|
|
@Test |
|
|
|
public void resetAllEnterpriseUserPassword() { |
|
|
|
@ -108,13 +162,13 @@ public class ResetUserPasswordTest { |
|
|
|
// 1. 指定需要重置密码的用户ID列表
|
|
|
|
List<Long> userIds = Arrays.asList( |
|
|
|
// TODO: 在此填入需要重置的用户ID
|
|
|
|
1L, 2L |
|
|
|
7897L, 17608416858L,17608416876L, 17608416904L,17608416912L, 17608416926L,17608416927L, 17608416945L |
|
|
|
); |
|
|
|
|
|
|
|
// 2. 根据ID列表查询系统用户
|
|
|
|
List<SysUser> userList = sysUserMapper.selectList( |
|
|
|
new LambdaQueryWrapper<SysUser>() |
|
|
|
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getSalt) |
|
|
|
.select(SysUser::getUserId, SysUser::getLoginName, SysUser::getSalt) |
|
|
|
.in(SysUser::getUserId, userIds) |
|
|
|
); |
|
|
|
|
|
|
|
@ -124,11 +178,11 @@ public class ResetUserPasswordTest { |
|
|
|
int skipCount = 0; |
|
|
|
|
|
|
|
for (SysUser user : userList) { |
|
|
|
String userName = user.getUserName(); |
|
|
|
String loginName = user.getLoginName(); |
|
|
|
String salt = user.getSalt(); |
|
|
|
|
|
|
|
if (userName == null || userName.isBlank()) { |
|
|
|
System.out.println("跳过: userId=" + user.getUserId() + ", userName为空"); |
|
|
|
if (loginName == null || loginName.isBlank()) { |
|
|
|
System.out.println("跳过: userId=" + user.getUserId() + ", loginName为空"); |
|
|
|
skipCount++; |
|
|
|
continue; |
|
|
|
} |
|
|
|
@ -138,8 +192,8 @@ public class ResetUserPasswordTest { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
// 3. 按规则生成新密码: MD5(userName + newPassword + salt)
|
|
|
|
String newMd5Password = DigestUtil.md5Hex(userName + NEW_PASSWORD + salt); |
|
|
|
// 3. 按规则生成新密码: MD5( + newPassword + salt)
|
|
|
|
String newMd5Password = DigestUtil.md5Hex(loginName + NEW_PASSWORD + salt); |
|
|
|
|
|
|
|
// 4. 更新密码
|
|
|
|
int rows = sysUserMapper.update(null, |
|
|
|
|