| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package routes
-
- import (
- "context"
-
- "git.x2erp.com/qdy/go-base/authbase"
- "git.x2erp.com/qdy/go-base/ctx"
- "git.x2erp.com/qdy/go-base/model/response"
- "git.x2erp.com/qdy/go-base/sdk/configure"
- "git.x2erp.com/qdy/go-base/webx/router"
- )
-
- // RegisterAuthRoutes 注册认证路由
- func RegisterAuthRoutes(ws *router.RouterService, configClient *configure.Client) {
- // 用户登录(公开端点,无需认证)
- ws.POST("/api/auth/login",
- func(req *configure.UserLoginRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[string], error) {
- // 检查配置中心客户端是否可用
- if configClient == nil {
- // 配置中心不可用,返回模拟token用于开发测试
- // 使用固定的模拟token(确保前端能正常连接)
- simulatedToken := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidGVzdCIsInVzZXJuYW1lIjoidGVzdCIsImV4cCI6MTc3MTE0MTQyNywiaWF0IjoxNzE4NDIxNDI3fQ.SimulatedTokenForDevelopment"
- return &response.QueryResult[string]{
- Success: true,
- Data: simulatedToken,
- }, nil
- }
-
- token, err := configClient.LoginUser(ctx, req)
- if err != nil {
- return &response.QueryResult[string]{
- Success: false,
- Message: err.Error(),
- }, nil
- }
-
- return &response.QueryResult[string]{
- Success: true,
- Data: token,
- }, nil
- },
- ).Desc("用户登录(返回配置中心token,开发模式下提供模拟token)").Register()
-
- // Token验证端点(需要Token认证,用于测试token有效性)
- ws.POST("/api/auth/validate",
- func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[map[string]interface{}], error) {
- // 如果请求能到达这里,说明TokenAuth中间件已经验证了token
- // 返回当前用户信息
- userInfo := map[string]interface{}{
- "user_id": reqCtx.UserID,
- "username": reqCtx.Username,
- "tenant_id": reqCtx.TenantID,
- "project_id": reqCtx.ProjectID,
- "authenticated": true,
- }
- return &response.QueryResult[map[string]interface{}]{
- Success: true,
- Data: userInfo,
- }, nil
- },
- ).Use(authbase.TokenAuth).Desc("验证token有效性并返回用户信息").Register()
-
- // 健康检查端点(公开)
- ws.GET("/api/auth/health",
- func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[map[string]interface{}], error) {
- return &response.QueryResult[map[string]interface{}]{
- Success: true,
- Data: map[string]interface{}{
- "status": "healthy",
- "service": "svc-code-auth",
- },
- }, nil
- },
- ).Desc("认证服务健康检查").Register()
- }
|