| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package middleware
- import (
- "context"
- "encoding/json"
- "strconv"
- "google.golang.org/grpc/metadata"
- "github.com/go-kratos/kratos/v2/middleware"
- )
- func GrpcValue(handler middleware.Handler) middleware.Handler {
- return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
- if md, ok := metadata.FromIncomingContext(ctx); ok {
- userID := md.Get("user_id")
- if len(userID) > 0 {
- _userID, _ := strconv.ParseInt(userID[0], 10, 64)
- ctx = context.WithValue(ctx, "user_id", _userID)
- }
- claimMap := md.Get("jwt_claims")
- if len(claimMap) > 0 {
- _claimMap := json.RawMessage(claimMap[0])
- ctx = context.WithValue(ctx, "jwt_claims", _claimMap)
- }
- token := md.Get("auth_token")
- if len(token) > 0 {
- ctx = context.WithValue(ctx, "auth_token", token[0])
- }
- page := md.Get("page")
- if len(page) > 0 {
- _page, _ := strconv.ParseInt(page[0], 10, 64)
- ctx = context.WithValue(ctx, "page", _page)
- }
- pageSize := md.Get("page_size")
- if len(pageSize) > 0 {
- _pageSize, _ := strconv.ParseInt(pageSize[0], 10, 64)
- ctx = context.WithValue(ctx, "page_size", _pageSize)
- }
- }
- return handler(ctx, req)
- }
- }
|