实现面向个人客户的 7 个认证接口(A1-A7),覆盖资产验证、 微信公众号/小程序登录、手机号绑定/换绑、退出登录完整流程。 主要变更: - 新增 PersonalCustomerOpenID 模型,支持多 AppID 多 OpenID 管理 - 实现有状态 JWT(JWT + Redis 双重校验),支持服务端主动失效 - 扩展微信 SDK:小程序 Code2Session + 3 个 DB 动态工厂函数 - 实现 A1 资产验证 IP 限流(30/min)和 A4 三层验证码限流 - 新增 7 个错误码(1180-1186)和 6 个 Redis Key 函数 - 注册 /api/c/v1/auth/* 下 7 个端点并更新 OpenAPI 文档 - 数据库迁移 000083:新建 tb_personal_customer_openid 表
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package main
|
||
|
||
import (
|
||
"log"
|
||
"path/filepath"
|
||
|
||
"github.com/gofiber/fiber/v2"
|
||
|
||
"github.com/break/junhong_cmp_fiber/internal/bootstrap"
|
||
"github.com/break/junhong_cmp_fiber/internal/handler/admin"
|
||
apphandler "github.com/break/junhong_cmp_fiber/internal/handler/app"
|
||
"github.com/break/junhong_cmp_fiber/internal/routes"
|
||
"github.com/break/junhong_cmp_fiber/pkg/openapi"
|
||
)
|
||
|
||
func main() {
|
||
outputFile := "./docs/admin-openapi.yaml"
|
||
if err := generateAdminDocs(outputFile); err != nil {
|
||
log.Fatalf("生成 OpenAPI 文档失败: %v", err)
|
||
}
|
||
|
||
absPath, _ := filepath.Abs(outputFile)
|
||
log.Printf("成功在以下位置生成 OpenAPI 文档: %s", absPath)
|
||
}
|
||
|
||
// generateAdminDocs 生成 Admin API 的 OpenAPI 文档
|
||
func generateAdminDocs(outputPath string) error {
|
||
// 1. 创建生成器
|
||
adminDoc := openapi.NewGenerator("Admin API", "1.0")
|
||
|
||
// 2. 创建临时 Fiber App 用于路由注册
|
||
app := fiber.New()
|
||
|
||
// 3. 创建 Handler(使用 nil 依赖,因为只需要路由结构)
|
||
handlers := openapi.BuildDocHandlers()
|
||
handlers.AssetLifecycle = admin.NewAssetLifecycleHandler(nil)
|
||
handlers.ClientAuth = apphandler.NewClientAuthHandler(nil, nil)
|
||
|
||
// 4. 注册所有路由到文档生成器
|
||
routes.RegisterRoutesWithDoc(app, handlers, &bootstrap.Middlewares{}, adminDoc)
|
||
|
||
// 5. 保存规范到指定路径
|
||
if err := adminDoc.Save(outputPath); err != nil {
|
||
return err
|
||
}
|
||
|
||
return nil
|
||
}
|