Abner
|
f5c5dee5ab
|
🐛 fix: 修复 Session 恢复后二维码和 LPA 不显示的问题
问题:
- 用户完成 eSIM 激活后,因外部二维码服务不可用导致页面空白
- Session 恢复时未调用 showESimResult() 显示二维码和 LPA 信息
解决方案:
1. 新增通用二维码生成模块 (src/js/modules/qrcode-generator.js)
- 实现三层降级策略:本地 CDN → 后端 Function → 文本提示
- 消除对外部服务的依赖,提升隐私保护
2. 新增后端 Function (netlify/functions/qrcode-generate.js)
- POST /bff/qrcode-generate 接口
- 返回 base64 编码的 PNG 二维码
- withAuth 中间件保护 + 输入验证
3. 重构前端二维码生成逻辑
- Giffgaff/Simyo 统一使用 generateQRCodeWithFallback()
- 保留并发调用防护和 tooltip 交互
- 使用 i18n 翻译替代硬编码错误提示
4. 修复 Session 恢复逻辑
- 在 handleSessionRestore() 中调用 showESimResult()
- 确保刷新页面后二维码和 LPA 正常显示
技术改进:
- 懒加载 qrcode.js(~13KB gzip),仅在首次调用时加载
- 完整的测试覆盖(前端单元测试 + 后端安全测试)
- 更新 BFF 路由配置(Edge Function + 本地开发服务器)
Closes #75
|
2026-06-13 19:20:22 +08:00 |
|
Abner
|
4ba791b660
|
🔧 chore: 优化 Cookie 验证分支逻辑并补充跨文件 CORS 注释
- 重构 `cookieHandler.checkResult` 的条件分支,将"验证通过但未拿到 JWT"的场景从模糊的 `!result.valid` 升级为更精确的 `result.success && !result.valid`,使三类结果路径语义更清晰
- 为三个分支各自添加中文注释,分别标注"完全成功"、"部分成功"和"硬错误,不可继续",提升代码可维护性
- 在 `bff-proxy.js` 顶部新增注释说明该文件运行在 Deno 环境,无法直接引用 Node.js 的 `_shared/cors.js`,并提醒需与 `netlify/functions/_shared/cors.js` 的 `parseOrigins` 保持同步
|
2026-05-31 21:46:01 +08:00 |
|
Abner
|
df2b6ca814
|
🐛 fix(auth): 收紧 BFF 鉴权并修复内部调用链路
|
2026-05-31 19:25:23 +08:00 |
|
Abner
|
b815225845
|
🐛 fix(auth): 收紧 BFF 鉴权并保持内部路由兼容
|
2026-05-31 18:15:45 +08:00 |
|
Abner
|
8559563e39
|
🔧 chore: 为 BFF 代理和 GraphQL 函数添加调试日志以排查 500 错误
- Edge Function (bff-proxy): 添加请求入口、ACCESS_KEY 检查、body 读取、
转发目标、fetch 结果等关键节点日志
- Function (giffgaff-graphql): 添加操作名、参数完整性、上游调用状态、
token 刷新链路等全链路日志
- 修复: fetch 异常时不再向客户端暴露内部错误详情(安全加固)
- 所有日志仅记录布尔态和状态码,不泄露 token/签名等敏感信息
|
2026-05-19 12:17:46 +08:00 |
|
Abner
|
3148a3564c
|
♻️ refactor: 移除 Turnstile 验证码、修复 CSP 和 Netlify 构建警告
- 移除 Turnstile 验证码逻辑,仅保留 reCAPTCHA 作为可选 fallback
- 修复 Google Fonts CSP 违规:style-src 添加 fonts.googleapis.com
- 移除 netlify.toml 中 /.netlify/functions/* 无效重定向规则
- 为 Giffgaff 和 Simyo 添加调试日志(环境信息 + 操作步骤)
- 简化 bff-proxy.js,移除验证码校验逻辑
|
2026-05-18 20:16:34 +08:00 |
|
Abner
|
188d4af85a
|
feat: 实现多提供商验证码系统,支持 Cloudflare Turnstile 和 Google reCAPTCHA
- 新增 CaptchaManager 类,统一管理 Turnstile 和 reCAPTCHA 验证码的初始化和 token 管理
- 扩展 BFF 代理支持多验证码提供商,根据配置自动切换验证逻辑
- 新增公共配置端点,动态下发验证码提供商配置到前端
- 重构 API 管理器,统一处理验证码 token 的头部和载荷注入
- 更新 CSP 策略,支持两种验证码服务的域名和资源
- 保留原有 Turnstile 功能的同时,支持 reCAPTCHA 作为备选方案
- 提供灵活的配置选项,可通过环境变量控制提供商开关和强制验证
|
2025-11-24 19:03:43 +08:00 |
|
Abner
|
05318df88a
|
feat: 为 Turnstile 验证添加强制执行控制功能
- 新增 TURNSTILE_ENFORCE 环境变量,可在紧急情况下跳过 BFF Turnstile 验证
- 在 CLAUDE.md 和 env.example 中添加完整的 Turnstile 配置说明
- 修改 BFF 代理逻辑,仅在启用强制执行时进行 Turnstile 验证
- 优化前端 JavaScript 代码,移除冗余的验证状态变量
- 在跳过验证时输出警告日志,便于调试和监控
|
2025-11-24 17:38:12 +08:00 |
|
Abner
|
4a0fcc94fe
|
feat: 重构Netlify Functions架构并增强代码质量
- 新增统一的中间件模块,提供鉴权、CORS和错误处理功能
- 重构所有Functions使用withAuth中间件简化代码结构
- 添加安全存储模块替代localStorage,防御XSS攻击
- 引入HTML清理工具,自动转义特殊字符和验证URL安全性
- 创建代码质量检查脚本,验证语法、环境变量和依赖完整性
- 添加构建日志工具和重构脚本,统一替换console.log为Logger
- 引入ESLint配置,提升代码质量和一致性
- 重构Giffgaff相关API,统一错误处理和验证逻辑
- 优化构建脚本,添加压缩和图片优化功能
- 新增健康检查端点,用于服务监控和状态报告
|
2025-11-23 22:20:02 +08:00 |
|
Abner
|
5a29e64ec7
|
feat: 重构部署流程并移除 Service Worker
- 新增部署工具脚本:添加 `build-static.js`、`deploy-prepare.js`、`deploy-analyze.js` 和 `test-deploy-config.js` 标准化构建部署流程
- 配置 Netlify 发布目录:修改 `netlify.toml` 将 `publish` 从根目录切换到 `dist` 目录以增强安全性
- 移除 Service Worker 相关代码:删除 `sw.js` 并清理相关注册逻辑,简化性能优化策略
- 增强服务器静态文件服务:重构静态资源中间件,增加环境检查和错误处理
- 改进 API 密钥处理逻辑:统一 Netlify Functions 的密钥验证流程,增加配置缺失提示
- 添加 Serena AI 配置文件:包含项目元数据、语言服务器设置和常用命令记忆
- 重构 HTML 页面路由:使用配置化的路由表替代硬编码路径,提高可维护性
|
2025-11-23 19:44:45 +08:00 |
|
Abner
|
2f8fa43b14
|
feat(security): 集成 Cloudflare Turnstile 验证
- 在 netlify.toml 中添加 Turnstile 相关的 CSP 规则
- 实现 BFF 代理中的 Turnstile token 校验逻辑
- 更新前端页面以支持 Turnstile 验证
- 修改 API 管理器以自动附带 Turnstile token
- 通过环境变量注入 Turnstile site key
|
2025-08-11 19:34:24 +08:00 |
|
Abner
|
5125c6538b
|
feat(netlify): 实现 BFF (Backend for Frontend) 架构
- 新增 Edge Function 作为前端和后端无服务器函数之间的代理
- 修改前端 API 调用路径,使用 /bff/* 前缀
- 移除前端直接传递 authKey,改为在 Edge Function 中添加
- 优化了请求转发和响应处理
|
2025-08-11 19:00:28 +08:00 |
|