package middleware import ( "context" "git.diulo.com/mogfee/protoc-gen-kit/xuser" "google.golang.org/grpc/metadata" ) func JWT(authKey string) Middleware { return func(handler Handler) Handler { return func(ctx context.Context, a any) (any, error) { var token string if md, ok := metadata.FromIncomingContext(ctx); ok { token = md.Get("token")[0] } userId, err := xuser.ValidateUser(ctx.Value(token).(string)) if err != nil { return nil, err } ctx = xuser.WithContext(ctx, userId) return handler(ctx, a) } } }