d73837e5ef
test: add comprehensive JWT coverage tests
...
Added tests for JWT token operations:
- TestGenerateAccessToken_Success
- TestGenerateRefreshToken_Success
- TestGenerateTokenPair_Success
- TestGenerateTokenPairWithRemember_Success
- TestValidateAccessToken_WrongType
- TestValidateRefreshToken_WrongType
- TestValidateAccessToken_InvalidToken
- TestGetAccessTokenExpire
- TestGetRefreshTokenExpire
- TestParseToken_Invalid
- TestGenerateLongLivedRefreshToken_Success
- TestParseRSAPrivateKey_InvalidPEM
- TestParseRSAPublicKey_InvalidPEM
- TestGenerateAndPersistRSAKeyPair_EmptyPath
- TestRefreshAccessToken_Success
- TestRefreshAccessToken_InvalidRefreshToken
- TestRefreshAccessToken_AccessTokenProvided
auth module coverage: 23.8% → 52.5%
Key functions now at 100%: ValidateAccessToken, ValidateRefreshToken, RefreshAccessToken, GetAccessTokenExpire, GetRefreshTokenExpire
2026-04-09 09:55:55 +08:00
1d42ede7e0
test: add coverage for Logout, GetUserInfo, GetCSRFToken, RefreshToken
...
Added tests for critical auth handler functions:
- TestAuthHandler_Logout_Success
- TestAuthHandler_Logout_WithoutToken
- TestAuthHandler_GetUserInfo_Success
- TestAuthHandler_GetUserInfo_WithoutToken
- TestAuthHandler_GetCSRFToken_Success
- TestAuthHandler_RefreshToken_Success
- TestAuthHandler_RefreshToken_InvalidToken
- TestAuthHandler_RefreshToken_MissingToken
auth_handler.go coverage: 10% → 12.1%
2026-04-09 07:53:06 +08:00
128efbc09f
docs: 新增 3 个 Runbook - 配置更新、安全事件响应、事件响应
...
完成 Runbook 目录建设:
- 05-config-update.md: 配置更新流程和回滚
- 06-security-incident.md: 安全事件分级和响应流程
- 07-incident-response.md: 服务事件分级和应急响应
2026-04-08 22:52:14 +08:00
12a5be9826
fix: suppress gosec G115/G118 false positive warnings
...
- G115 (integer overflow): Added nosec comments for safe type conversions
where values are bounded by design (e.g., rng.Intn(255) returns 0-254)
- G118 (context.Background): Added nosec for intentional async goroutines
that use WithTimeout for bounded execution after request completes
Note: G101 (hardcoded credentials) warnings are low-confidence false
positives - OAuth fields use getEnv() to read from environment.
2026-04-08 22:50:42 +08:00
3b0bcf0ff7
fix: P0问题修复 - JWT配置、安全扫描、备份、Runbook
...
P0 问题修复(按照 gap analysis):
1. JWT密钥配置修复
- config.yaml 移除占位符,改为空字符串
- 添加测试验证 JWT_SECRET 环境变量覆盖功能
2. Docker 部署完善
- 添加 deploy.resources 限制(内存 512M,CPU 0.5)
- 添加 healthcheck 健康检查
- 添加 restart: unless-stopped 重启策略
3. 安全扫描集成
- 创建 scripts/security/run-gosec.sh 安全扫描脚本
- 创建 scripts/security/workflow-template.yml CI工作流模板
- 运行 gosec 扫描发现 6 个 HIGH 级别整数溢出问题
4. 备份自动化
- 创建 scripts/backup/backup.sh 自动备份脚本
- 支持 SQLite 数据库和配置文件备份
- 支持备份验证、自动清理、恢复功能
5. Runbook 文档
- 创建 docs/runbooks/ 目录
- 添加 4 个核心 Runbook:服务启动、服务停止、备份恢复、日志分析
- 添加 README.md 索引文档
2026-04-08 22:31:43 +08:00
1b96715b55
chore: 完善 Docker 部署配置并修复测试超时
...
- 新增 Dockerfile: 多阶段构建,优化镜像大小
- 新增 .dockerignore: 加速构建,排除不必要文件
- 更新 docker-compose.yml: 使用 SQLite 简化部署
- 修复 vitest.config.js: testTimeout 改为 60000ms 修复慢测试超时
2026-04-08 22:13:46 +08:00
a85d822419
fix: 统一API响应格式并修复前端测试
...
- 所有Handler方法使用标准{code:0,message:"success",data:...}响应格式
- 修复Cursor分页响应包装(GetAllDevices,GetLoginLogs,ListUsers等)
- 修复AuthHandler和SMSHandler认证方法响应格式
- 修复operation_log.go admin用户operation_type前缀问题
- 修复DashboardPage嵌套stats结构
- 修复LoginLogsPage reset功能stale closure问题
- 修复UsersPage批量操作API调用
- 修复多个前端测试(mock格式、按钮选择、断言逻辑)
- 添加OAuth测试域名白名单
- 新增代码审查流程文档
2026-04-08 20:06:54 +08:00
26c5def4d7
chore: 清理重复目录和临时文件
...
删除内容:
- config/ (与 configs/ 重复)
- ininternal/ (internal 拼写错误,无实际使用)
- runtime/ (旧的 pid 文件和测试脚本)
- backup_temp/ (空目录)
验证: go build ./... && go test ./... 通过
2026-04-07 21:31:02 +08:00
2ae146a0b9
docs: AGENTS.md 添加项目目录规范章节
...
新增第14节:项目目录规范
- 目录结构速查表
- 禁止在根目录放置的文件类型
- 新增目录检查清单
- 文件命名规范
配合 docs/PROJECT_STRUCTURE.md 使用
2026-04-07 19:01:49 +08:00
6b2b450e91
docs: 添加项目结构规范文档
...
新增:
- docs/PROJECT_STRUCTURE.md - 完整目录结构规范
- data/.gitkeep, logs/.gitkeep, testdata/.gitkeep, uploads/avatars/.gitkeep
更新:
- .gitignore 添加临时文件规则 (*_result.txt, *_test*.txt 等)
- .gitignore 添加 uploads/avatars/ 内容忽略规则
2026-04-07 19:00:51 +08:00
5b6bd93179
refactor: 整理项目根目录结构
...
整理内容:
- 删除 60+ 临时测试输出文件 (*.txt)
- 移动二进制文件到 bin/ 目录
- 移动 Shell 脚本到 scripts/ 目录
- scripts/dev/: check_gitea.sh, check_sub2api.sh, run_tests.sh
- scripts/deploy/: deploy_*.sh, simple_deploy.sh
- scripts/ops/: fix_nginx.sh, fix_ssl.sh, install_docker.sh
- scripts/test/: test_*.sh, test_*.bat
- 移动批处理文件到 scripts/
- 移动 Python 脚本到 tools/
- 清理临时日志文件
保留根目录必要文件:
- go.mod, go.sum, go.work
- Makefile, docker-compose.yml
- .env.example, .gitignore
- README.md, AGENTS.md, DEPLOY_GUIDE.md
验证: go build ./... && go test ./... 通过
2026-04-07 18:10:36 +08:00
5dbb530b76
chore: 删除未使用的孤立包
...
清理以下未导入的包:
- internal/response (未使用的响应结构体)
- pkg/response (未使用的响应封装)
- internal/model (TLSFingerprintProfile, ErrorPassthroughRule)
- internal/models (SocialAccount, domain已有)
- internal/pkg/response (未使用的响应封装)
- internal/security/ratelimit (已迁移到middleware)
验证: go build ./... && go test ./... 通过
2026-04-07 17:46:25 +08:00
5ca3633be4
feat: 系统全面优化 - 设备管理/登录日志导出/性能监控/设置页面
...
后端:
- 新增全局设备管理 API(DeviceHandler.GetAllDevices)
- 新增登录日志导出功能(LogHandler.ExportLoginLogs, CSV/XLSX)
- 新增设置服务(SettingsService)和设置页面 API
- 设备管理支持多条件筛选(状态/信任状态/关键词)
- 登录日志支持流式导出防 OOM
- 操作日志支持按方法/时间范围搜索
- 主题配置服务(ThemeService)
- 增强监控健康检查(Prometheus metrics + SLO)
- 移除旧 ratelimit.go(已迁移至 robustness)
- 修复 SocialAccount NULL 扫描问题
- 新增 API 契约测试、Handler 测试、Settings 测试
前端:
- 新增管理员设备管理页面(DevicesPage)
- 新增管理员登录日志导出功能
- 新增系统设置页面(SettingsPage)
- 设备管理支持筛选和分页
- 增强 HTTP 响应类型
测试:
- 业务逻辑测试 68 个(含并发 CONC_001~003)
- 规模测试 16 个(P99 百分位统计)
- E2E 测试、集成测试、契约测试
- 性能基准测试、鲁棒性测试
全面测试通过(38 个测试包)
2026-04-07 12:08:16 +08:00
8655b39b03
test: 完善方案一业务逻辑测试和方案二规模测试
...
方案一(业务逻辑正确性测试):
- 修复 SocialAccount.CreatedAt/UpdatedAt NULL 扫描问题(改为 *time.Time 指针)
- 修复 OPLOG_003~006 数据隔离(改用唯一前缀+Search方法隔离)
- 修复 DEV_008 设备列表测试(改用UserID过滤器隔离)
- 修复并发测试 cache=private → cache=shared(SQLite连接共享)
- 新增 testEnv 隔离架构(独立DB + 独立 httptest.Server)
方案二(真实数据规模测试):
- 新增 LatencyStats P99/P95 百分位统计采集器
- 全部 16 个测试迁移至 newIsolatedDB(独立内存DB,WAL模式)
- 关键查询添加 P99 多次采样统计(UL/LL/DV/DS/PR/AUTH/OPLOG)
- 新增 CONC_SCALE_001~003 并发压测(50-100 goroutine)
- 删除旧 setupScaleTestDB 死代码
- 双阈值体系:SQLite本地宽松阈值 vs PostgreSQL生产严格目标
共计 84 测试通过(68 业务逻辑 + 16 规模测试)
2026-04-07 07:23:29 +08:00
3ae11237ab
fix: P1/P2 优化 - OAuth验证 + API响应 + 缓存击穿 + Webhook关闭
...
P1 - OAuth auth_url origin 验证:
- 添加 validateOAuthUrl() 函数验证 OAuth URL origin
- 仅允许同源或可信 OAuth 提供商
- LoginPage 和 ProfileSecurityPage 调用前验证
P2 - API 响应运行时类型验证:
- 添加 isApiResponse() 运行时验证函数
- parseJsonResponse 验证响应结构完整性
P2 - 缓存击穿防护 (singleflight):
- AuthMiddleware.isJTIBlacklisted 使用 singleflight.Group
- 防止 L1 miss 时并发请求同时打 L2
P2 - Webhook 服务优雅关闭:
- WebhookService 添加 Shutdown() 方法
- 服务器关闭时等待 worker 完成
- main.go 集成 shutdown 调用
2026-04-03 21:50:51 +08:00
10d126ee12
docs: 添加系统性优化方案 (P1-P2)
2026-04-03 21:08:18 +08:00
765a50b7d4
fix: 生产安全修复 + Go SDK + CAS SSO框架
...
安全修复:
- CRITICAL: SSO重定向URL注入漏洞 - 修复redirect_uri白名单验证
- HIGH: SSO ClientSecret未验证 - 使用crypto/subtle.ConstantTimeCompare验证
- HIGH: 邮件验证码熵值过低(3字节) - 提升到6字节(48位熵)
- HIGH: 短信验证码熵值过低(4字节) - 提升到6字节
- HIGH: Goroutine使用已取消上下文 - auth_email.go使用独立context+超时
- HIGH: SQL LIKE查询注入风险 - permission/role仓库使用escapeLikePattern
新功能:
- Go SDK: sdk/go/user-management/ 完整SDK实现
- CAS SSO框架: internal/auth/cas.go CAS协议支持
其他:
- L1Cache实例问题修复 - AuthMiddleware共享l1Cache
- 设备指纹XSS防护 - 内存存储替代localStorage
- 响应格式协议中间件
- 导出无界查询修复
2026-04-03 17:38:31 +08:00
44e60be918
docs: 添加项目全面审查报告(合并版)
2026-04-02 13:59:27 +08:00
1cba56ea85
chore: add remaining files and cleanup
2026-04-02 11:48:04 +08:00
bbeeb63dfa
docs: project docs, scripts, deployment configs, and evidence
2026-04-02 11:22:17 +08:00
4718980ab5
feat: admin frontend - React + Vite, auth pages, user management, roles, permissions, webhooks, devices, logs
2026-04-02 11:20:20 +08:00
dcc1f186f8
feat: backend core - auth, user, role, permission, device, webhook, monitoring, cache, repository, service, middleware, API handlers
2026-04-02 11:19:50 +08:00
e59a77bc49
Initial commit
2026-04-02 03:01:14 +00:00