diff options
| author | mo khan <mo@mokhan.ca> | 2025-05-02 16:05:53 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-05-02 16:05:53 -0600 |
| commit | a3d5ee1225e2ce0b6cf3b90525a6876ca8f5ef8c (patch) | |
| tree | 429faf79855a2614b4c18bb286f94f474caf7e5c /app/services/ability.go | |
| parent | 649b71d7fd2d6768460a37ed0d9e6ce7a1202a4f (diff) | |
refactor: connect logging to http requests
Diffstat (limited to 'app/services/ability.go')
| -rw-r--r-- | app/services/ability.go | 27 |
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 +} |
