fix(auth): scope mobile sms users by tenant

This commit is contained in:
2026-07-14 06:59:11 +08:00
parent 599f025295
commit 03d4b97f75
3 changed files with 29 additions and 1 deletions
@@ -89,7 +89,9 @@ public class SmsAuthStrategy implements IAuthStrategy {
} }
private SysUserVo loadOrRegisterUserByPhonenumber(String tenantId, String phonenumber) { private SysUserVo loadOrRegisterUserByPhonenumber(String tenantId, String phonenumber) {
SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, phonenumber)); SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getTenantId, tenantId)
.eq(SysUser::getPhonenumber, phonenumber));
if (ObjectUtil.isNull(user)) { if (ObjectUtil.isNull(user)) {
SysUser sysUser = new SysUser(); SysUser sysUser = new SysUser();
sysUser.setTenantId(tenantId); sysUser.setTenantId(tenantId);
@@ -0,0 +1,25 @@
package org.dromara.web.service.impl;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import java.nio.file.Files;
import java.nio.file.Path;
import static org.junit.jupiter.api.Assertions.assertTrue;
@Tag("dev")
class SmsAuthStrategyTenantTest {
@Test
void mobileSmsUserLookupKeepsTenantBoundary() throws Exception {
Path source = Path.of("src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java");
if (!Files.exists(source)) {
source = Path.of("ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java");
}
String code = Files.readString(source);
assertTrue(code.contains(".eq(SysUser::getTenantId, tenantId)"));
assertTrue(code.contains(".eq(SysUser::getPhonenumber, phonenumber)"));
}
}
+1
View File
@@ -101,3 +101,4 @@
- 2026-07-14 目录导入异步任务租户边界修复:`startLocalImportTask` 捕获当前租户,并用 `TenantHelper.dynamic` 包住整个后台导入 worker,任务进度、取消状态、OSS/片段/向量写入不再因脱离登录线程回退到 `000000`;新增异步上下文回归测试。正式多租户目录导入仍需测试环境验证。 - 2026-07-14 目录导入异步任务租户边界修复:`startLocalImportTask` 捕获当前租户,并用 `TenantHelper.dynamic` 包住整个后台导入 worker,任务进度、取消状态、OSS/片段/向量写入不再因脱离登录线程回退到 `000000`;新增异步上下文回归测试。正式多租户目录导入仍需测试环境验证。
- 2026-07-14 线上只读复核:生产根站点、`/h5/`、租户列表和员工首页 API 均返回 200;线上仍加载管理端 `index-CJZ3Ax3Z.js` 与 H5 `index-D4-NrEpb.js`,本地最新租户边界修复提交 `6ec17726`、`c95cb1ff` 尚未发布。本次未修改生产环境,发布前需先做测试环境跨租户上传/目录导入回归。 - 2026-07-14 线上只读复核:生产根站点、`/h5/`、租户列表和员工首页 API 均返回 200;线上仍加载管理端 `index-CJZ3Ax3Z.js` 与 H5 `index-D4-NrEpb.js`,本地最新租户边界修复提交 `6ec17726`、`c95cb1ff` 尚未发布。本次未修改生产环境,发布前需先做测试环境跨租户上传/目录导入回归。
- 2026-07-14 异步队列清扫修复:上传队列 worker 的卡死任务清扫改为跨租户扫描,避免无登录线程回退到 `000000` 后只清理默认租户;实际加工、失败回写和 SOP 处理仍按队列条目租户隔离。`AihrUploadQueueServiceTest` 与 AIHR 全量测试 51/51 通过;双租户上传/目录导入仍需测试环境回归。 - 2026-07-14 异步队列清扫修复:上传队列 worker 的卡死任务清扫改为跨租户扫描,避免无登录线程回退到 `000000` 后只清理默认租户;实际加工、失败回写和 SOP 处理仍按队列条目租户隔离。`AihrUploadQueueServiceTest` 与 AIHR 全量测试 51/51 通过;双租户上传/目录导入仍需测试环境回归。
- 2026-07-14 移动端短信登录租户修复:手机号查询补充 `tenant_id` 条件,避免同一手机号在不同租户登录时复用其他租户的 `sys_user`;新增认证策略边界回归测试。正式多租户登录仍需用测试租户账号做 HTTP 回归。