summaryrefslogtreecommitdiff
path: root/app/services/ability.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-02 16:05:53 -0600
committermo khan <mo@mokhan.ca>2025-05-02 16:05:53 -0600
commita3d5ee1225e2ce0b6cf3b90525a6876ca8f5ef8c (patch)
tree429faf79855a2614b4c18bb286f94f474caf7e5c /app/services/ability.go
parent649b71d7fd2d6768460a37ed0d9e6ce7a1202a4f (diff)
refactor: connect logging to http requests
Diffstat (limited to 'app/services/ability.go')
-rw-r--r--app/services/ability.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/services/ability.go b/app/services/ability.go
new file mode 100644
index 00000000..871a9a9b
--- /dev/null
+++ b/app/services/ability.go
@@ -0,0 +1,27 @@
+package services
+
+import (
+ context "context"
+
+ "github.com/cedar-policy/cedar-go"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/authz.d/pkg/gid"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/authz.d/pkg/policies"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/authz.d/pkg/rpc"
+)
+
+type AbilityService struct {
+}
+
+func NewAbilityService() *AbilityService {
+ return &AbilityService{}
+}
+
+func (h *AbilityService) Allowed(ctx context.Context, req *rpc.AllowRequest) (*rpc.AllowReply, error) {
+ ok := policies.Allowed(cedar.Request{
+ Principal: gid.NewEntityUID(req.Subject),
+ Action: cedar.NewEntityUID("Permission", cedar.String(req.Permission)),
+ Resource: gid.NewEntityUID(req.Resource),
+ Context: cedar.NewRecord(cedar.RecordMap{}),
+ })
+ return &rpc.AllowReply{Result: ok}, nil
+}