2026-01-22 16:04:12 +08:00
|
|
|
|
package user
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-05-11 20:21:56 +08:00
|
|
|
|
"context"
|
2026-01-22 16:04:12 +08:00
|
|
|
|
"net/http"
|
2026-05-11 20:21:56 +08:00
|
|
|
|
"strings"
|
2026-01-22 16:04:12 +08:00
|
|
|
|
|
|
|
|
|
|
"tyc-server/app/main/api/internal/logic/user"
|
|
|
|
|
|
"tyc-server/app/main/api/internal/svc"
|
|
|
|
|
|
"tyc-server/app/main/api/internal/types"
|
2026-05-11 20:21:56 +08:00
|
|
|
|
jwtx "tyc-server/common/jwt"
|
2026-01-22 16:04:12 +08:00
|
|
|
|
"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
|
|
|
|
|
|
}
|
2026-05-11 20:21:56 +08:00
|
|
|
|
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)
|
2026-01-22 16:04:12 +08:00
|
|
|
|
resp, err := l.WxH5Auth(&req)
|
|
|
|
|
|
result.HttpResult(r, w, resp, err)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|