package authz import ( "context" authzed "github.com/authzed/authzed-go/v1" auth "github.com/envoyproxy/go-control-plane/envoy/service/auth/v3" xcontext "github.com/xlgmokha/x/pkg/context" "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/authzd.git/pkg/pls" "google.golang.org/grpc" "google.golang.org/grpc/reflection" ) var Connection xcontext.Key[*authzed.Client] = xcontext.Key[*authzed.Client]("authzed_client") type Server struct { *grpc.Server } func New(ctx context.Context, options ...grpc.ServerOption) *Server { logger := log.From(ctx) server := grpc.NewServer(x.Prepend( options, grpc.UnaryInterceptor(pls.LogGRPC(logger)), grpc.StreamInterceptor(pls.LogGRPCStream(logger)), )...) auth.RegisterAuthorizationServer(server, NewCheckService(Connection.From(ctx))) reflection.Register(server) return &Server{ Server: server, } }