Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

auth_routes.go 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package routes
  2. import (
  3. "context"
  4. "git.x2erp.com/qdy/go-base/authbase"
  5. "git.x2erp.com/qdy/go-base/ctx"
  6. "git.x2erp.com/qdy/go-base/model/response"
  7. "git.x2erp.com/qdy/go-base/sdk/configure"
  8. "git.x2erp.com/qdy/go-base/webx/router"
  9. )
  10. // RegisterAuthRoutes 注册认证路由
  11. func RegisterAuthRoutes(ws *router.RouterService, configClient *configure.Client) {
  12. // 用户登录(公开端点,无需认证)
  13. ws.POST("/api/auth/login",
  14. func(req *configure.UserLoginRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[string], error) {
  15. token, err := configClient.LoginUser(ctx, req)
  16. if err != nil {
  17. return &response.QueryResult[string]{
  18. Success: false,
  19. Message: err.Error(),
  20. }, nil
  21. }
  22. return &response.QueryResult[string]{
  23. Success: true,
  24. Data: token,
  25. }, nil
  26. },
  27. ).Desc("用户登录(返回配置中心token)").Register()
  28. // Token验证端点(需要Token认证,用于测试token有效性)
  29. ws.POST("/api/auth/validate",
  30. func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[map[string]interface{}], error) {
  31. // 如果请求能到达这里,说明TokenAuth中间件已经验证了token
  32. // 返回当前用户信息
  33. userInfo := map[string]interface{}{
  34. "user_id": reqCtx.UserID,
  35. "username": reqCtx.Username,
  36. "tenant_id": reqCtx.TenantID,
  37. "project_id": reqCtx.ProjectID,
  38. "authenticated": true,
  39. }
  40. return &response.QueryResult[map[string]interface{}]{
  41. Success: true,
  42. Data: userInfo,
  43. }, nil
  44. },
  45. ).Use(authbase.TokenAuth).Desc("验证token有效性并返回用户信息").Register()
  46. // 健康检查端点(公开)
  47. ws.GET("/api/auth/health",
  48. func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[map[string]interface{}], error) {
  49. return &response.QueryResult[map[string]interface{}]{
  50. Success: true,
  51. Data: map[string]interface{}{
  52. "status": "healthy",
  53. "service": "svc-code-auth",
  54. },
  55. }, nil
  56. },
  57. ).Desc("认证服务健康检查").Register()
  58. }