summaryrefslogtreecommitdiff
path: root/pkg/gid/gid.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gid/gid.go')
-rw-r--r--pkg/gid/gid.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/pkg/gid/gid.go b/pkg/gid/gid.go
index e82b073e..3b9b29b1 100644
--- a/pkg/gid/gid.go
+++ b/pkg/gid/gid.go
@@ -8,13 +8,25 @@ import (
)
func NewEntityUID(globalID string) cedar.EntityUID {
+ if !strings.HasPrefix(globalID, "gid://") {
+ return DefaultEntityUID(globalID)
+ }
+
url, err := url.Parse(globalID)
if err != nil {
- return cedar.NewEntityUID("User", cedar.String(globalID))
+ return DefaultEntityUID(globalID)
+ }
+ items := strings.SplitN(url.Path, "/", 3)
+ if len(items) != 3 {
+ return DefaultEntityUID(globalID)
}
return cedar.NewEntityUID(
- cedar.EntityType(url.Hostname()),
- cedar.String(strings.TrimPrefix(url.Path, "/")),
+ cedar.EntityType(items[1]),
+ cedar.String(items[2]),
)
}
+
+func DefaultEntityUID(id string) cedar.EntityUID {
+ return cedar.NewEntityUID("User", cedar.String(id))
+}