package common
|
|
import (
|
"context"
|
"github.com/gin-gonic/gin"
|
"github.com/micro/go-micro/metadata"
|
"github.com/micro/go-micro/server"
|
"shop-common/config"
|
"shop-common/proto/user"
|
)
|
|
var (
|
userCli user.UserService
|
)
|
func GetUserClient() user.UserService {
|
if userCli == nil {
|
uSrvC := GetMicroClient(config.ServiceConf.User)
|
userCli = user.NewUserService(config.ServiceConf.User, uSrvC.Client())
|
}
|
return userCli
|
}
|
|
func AuthWrapper(fn server.HandlerFunc) server.HandlerFunc {
|
return func(ctx context.Context, req server.Request, resp interface{}) error {
|
//meta, ok := metadata.FromContext(ctx)
|
//if !ok {
|
// fmt.Println("no auth meta-data found in request")
|
// return errors.New("no auth meta-data found in request")
|
//}
|
|
//fmt.Println("meta:", meta)
|
|
//loginUserId := ""
|
|
//token := meta["token"]
|
//if token != "" {
|
// authResp, err := GetUserClient().ValidateToken(context.Background(), &user.ValidateTokenReq{
|
// Token: token,
|
// })
|
// fmt.Println("Auth Resp:", authResp, "err:", err)
|
//
|
// if err !=nil {
|
// return err
|
// }
|
// loginUserId = authResp.UserId
|
//} else {
|
// fmt.Println("metadata token is nil")
|
//}
|
|
//loginUserId = meta[CurrentUserIdKey]
|
//fmt.Println("meta CurrentUserId:", loginUserId)
|
|
//ctx = context.WithValue(ctx, "current_user_id", loginUserId)
|
|
return fn(ctx, req, resp)
|
}
|
}
|
|
const (
|
CurrentUserIdKey = "Current_user_id"
|
)
|
|
// ContextWithSpan 返回context
|
func ContextWithMeta(c *gin.Context) context.Context {
|
ctx := context.TODO()
|
md := make(map[string]string)
|
v, ok := c.Get(CurrentUserIdKey)
|
if ok {
|
md[CurrentUserIdKey] = v.(string)
|
} else {
|
md[CurrentUserIdKey] = ""
|
}
|
return metadata.NewContext(ctx, md)
|
}
|
|
func GetUserIdFromCtx(ctx context.Context) string {
|
meta, ok := metadata.FromContext(ctx)
|
if !ok {
|
return ""
|
}
|
return meta[CurrentUserIdKey]
|
}
|