diff --git a/pkg/auth/grpc.go b/pkg/auth/grpc.go index e6cd00929f13a0cf702f1dee8bdb9dcd33768ab6..e2b89c4f0c2c22ac7e921d78aefca70e10682142 100644 --- a/pkg/auth/grpc.go +++ b/pkg/auth/grpc.go @@ -74,7 +74,7 @@ func ContextToGRPC() kitgrpc.ClientRequestFunc { } } -// PrincipalServerInterceptor - grpc-интерсептор, который используется для получения данных принципала из grpc-метаданы и добавления в контекст ''. В случае, если +// PrincipalServerInterceptor - grpc-интерсептор, который используется для получения данных принципала из grpc-метаданы и добавления в контекст ”. В случае, если // сервис не использует проверку прав 'Principal' к системе, в параметрах передается пустой объект '&PrincipalFactory{}' func PrincipalServerInterceptor(factory *PrincipalFactory) grpc.UnaryServerInterceptor { return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { @@ -98,6 +98,13 @@ func PrincipalClientInterceptor() grpc.UnaryClientInterceptor { } } +func AddAccessInterceptor(id string) grpc.UnaryClientInterceptor { + return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { + ctx = metadata.AppendToOutgoingContext(ctx, AccessMetadata, id) + return invoker(ctx, method, req, reply, cc, opts...) + } +} + func AddAuthorizationInterceptor(auth string) grpc.UnaryClientInterceptor { return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { ctx = metadata.AppendToOutgoingContext(ctx, "authorization", auth)