From 30bbdad4ef99449f29f412d0b770e4b9f76ede42 Mon Sep 17 00:00:00 2001 From: mo khan Date: Fri, 28 Mar 2025 17:49:09 -0600 Subject: refactor: move authorizers into authz package --- pkg/rpc/ability_handler.go | 20 ++++++++++++++++++++ pkg/rpc/server.go | 14 ++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 pkg/rpc/ability_handler.go create mode 100644 pkg/rpc/server.go (limited to 'pkg/rpc') diff --git a/pkg/rpc/ability_handler.go b/pkg/rpc/ability_handler.go new file mode 100644 index 0000000..a881b41 --- /dev/null +++ b/pkg/rpc/ability_handler.go @@ -0,0 +1,20 @@ +package rpc + +import ( + context "context" + "net/http" + + "github.com/xlgmokha/x/pkg/x" + "gitlab.com/mokhax/spike/pkg/authz" +) + +type AbilityHandler struct { + authorizer authz.Authorizer + UnimplementedAbilityServer +} + +func (h *AbilityHandler) Allowed(ctx context.Context, req *AllowRequest) (*AllowReply, error) { + // TODO:: Replace http.Request with authz.Request + request := x.Must(http.NewRequestWithContext(ctx, req.Permission, req.Resource, nil)) + return &AllowReply{Result: h.authorizer.Authorize(request)}, nil +} diff --git a/pkg/rpc/server.go b/pkg/rpc/server.go new file mode 100644 index 0000000..ba96b61 --- /dev/null +++ b/pkg/rpc/server.go @@ -0,0 +1,14 @@ +package rpc + +import ( + "gitlab.com/mokhax/spike/pkg/authz" + grpc "google.golang.org/grpc" +) + +func New(authorizer authz.Authorizer, options ...grpc.ServerOption) *grpc.Server { + server := grpc.NewServer(options...) + RegisterAbilityServer(server, &AbilityHandler{ + authorizer: authorizer, + }) + return server +} -- cgit v1.2.3