|
|
@@ -21,6 +21,20 @@ func NewInterceptor(name string, urlWhitelist map[string]int) grpc.UnaryServerIn |
|
|
|
defer gerrors.LogPanic(name, ctx, req, info, &err) |
|
|
|
|
|
|
|
md, _ := metadata.FromIncomingContext(ctx) |
|
|
|
resp, err = handleMasterAuth(ctx, req, info, handler) |
|
|
|
//logger.Logger.Debug(name, zap.Any("method", info.FullMethod), zap.Any("md", md), zap.Any("req", req), |
|
|
|
// zap.Any("resp", resp), zap.Error(err)) |
|
|
|
|
|
|
|
//s, _ := status.FromError(err) |
|
|
|
//if s.Code() != 0 && s.Code() < 1000 { |
|
|
|
// md, _ := metadata.FromIncomingContext(ctx) |
|
|
|
// logger.Logger.Error(name, zap.String("method", info.FullMethod), zap.Any("md", md), zap.Any("req", req), |
|
|
|
// zap.Any("resp", resp), zap.Error(err), zap.String("stack", gerrors.GetErrorStack(s))) |
|
|
|
//} |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
resp, err = handleWithAuth(ctx, req, info, handler, urlWhitelist) |
|
|
|
logger.Logger.Debug(name, zap.Any("method", info.FullMethod), zap.Any("md", md), zap.Any("req", req), |
|
|
|
zap.Any("resp", resp), zap.Error(err)) |
|
|
@@ -62,3 +76,17 @@ func handleWithAuth(ctx context.Context, req interface{}, info *grpc.UnaryServer |
|
|
|
} |
|
|
|
return handler(ctx, req) |
|
|
|
} |
|
|
|
|
|
|
|
// handleMasterAuth 处理站长权限 |
|
|
|
func handleMasterAuth(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { |
|
|
|
serverName := strings.Split(info.FullMethod, "/")[1] |
|
|
|
if !strings.HasSuffix(serverName, "Int") { |
|
|
|
masterId, err := grpclib.GetCtxMasterId(ctx) |
|
|
|
_, err = rpc.GetBusinessIntClient().MasterAuth(ctx, &pb.MasterAuthReq{MasterId: masterId}) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return handler(ctx, req) |
|
|
|
} |