feat(tenant): 新增租户自助注册功能(支持 Turnstile 人机验证)

- 支持匿名 POST /register 注册,默认套餐 ID=999、账号数 99、2099 年底过期
- 集成 Cloudflare Turnstile 服务端校验,可开关、可配置密钥与超时
- 补充操作人信息,避免 creator/updater 为空
- 操作日志匿名场景从 Request Attribute 补全用户信息
- 更新 .gitignore 忽略 /.omc/ 与 AGENTS.md
- 关闭默认水印(留空)
This commit is contained in:
2026-02-06 19:09:57 +08:00
parent eb936ce677
commit 432ed8adf8
7 changed files with 184 additions and 7 deletions

View File

@@ -1,11 +1,13 @@
package cn.iocoder.yudao.framework.operatelog.core.service;
import cn.iocoder.yudao.framework.common.biz.system.logger.OperateLogCommonApi;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.biz.system.logger.dto.OperateLogCreateReqDTO;
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import com.mzt.logapi.beans.LogRecord;
import com.mzt.logapi.service.ILogRecordService;
import lombok.extern.slf4j.Slf4j;
@@ -50,11 +52,16 @@ public class LogRecordServiceImpl implements ILogRecordService {
private static void fillUserFields(OperateLogCreateReqDTO reqDTO) {
// 使用 SecurityFrameworkUtils。因为要考虑rpc、mq、job它其实不是 web
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
if (loginUser == null) {
if (loginUser != null) {
reqDTO.setUserId(loginUser.getId());
reqDTO.setUserType(loginUser.getUserType());
return;
}
reqDTO.setUserId(loginUser.getId());
reqDTO.setUserType(loginUser.getUserType());
// 匿名请求场景(例如注册),尝试从 Request Attribute 获取用户信息
Long loginUserId = WebFrameworkUtils.getLoginUserId();
Integer loginUserType = WebFrameworkUtils.getLoginUserType();
reqDTO.setUserId(loginUserId != null ? loginUserId : 0L);
reqDTO.setUserType(loginUserType != null ? loginUserType : UserTypeEnum.ADMIN.getValue());
}
public static void fillModuleFields(OperateLogCreateReqDTO reqDTO, LogRecord logRecord) {
@@ -88,4 +95,4 @@ public class LogRecordServiceImpl implements ILogRecordService {
throw new UnsupportedOperationException("使用 OperateLogApi 进行操作日志的查询");
}
}
}