package user import ( "context" "net/http" "strings" "tyc-server/app/main/api/internal/logic/user" "tyc-server/app/main/api/internal/svc" "tyc-server/app/main/api/internal/types" jwtx "tyc-server/common/jwt" "tyc-server/common/result" "tyc-server/pkg/lzkit/validator" "github.com/zeromicro/go-zero/rest/httpx" ) func WxH5AuthHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req types.WXH5AuthReq if err := httpx.Parse(r, &req); err != nil { result.ParamErrorResult(r, w, err) return } if err := validator.Validate(req); err != nil { result.ParamValidateErrorResult(r, w, err) return } ctx := r.Context() // 本路由未挂 AuthInterceptor;若前端已带登录态(如手机号登录后再走静默授权),需解析 JWT 以便把 openid 写入当前正式用户 user_auth if authHeader := strings.TrimSpace(r.Header.Get("Authorization")); authHeader != "" { if claims, err := jwtx.ParseJwtToken(authHeader, svcCtx.Config.JwtAuth.AccessSecret); err == nil { ctx = context.WithValue(ctx, jwtx.ExtraKey, claims) } } l := user.NewWxH5AuthLogic(ctx, svcCtx) resp, err := l.WxH5Auth(&req) result.HttpResult(r, w, resp, err) } }