diff options
Diffstat (limited to 'pkg/rpc')
| -rw-r--r-- | pkg/rpc/ability_handler.go | 20 | ||||
| -rw-r--r-- | pkg/rpc/server.go | 14 |
2 files changed, 34 insertions, 0 deletions
diff --git a/pkg/rpc/ability_handler.go b/pkg/rpc/ability_handler.go new file mode 100644 index 00000000..a881b41b --- /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 00000000..ba96b610 --- /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 +} |
