From 7d1ecb720159ac07ffbf6886f5258e66460a5337 Mon Sep 17 00:00:00 2001 From: Daniel Jeffery <1425457+d-jeffery@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:33:28 -0800 Subject: [PATCH] fix: user & object formatter to allow '/' in ids (#183) --- server/src/openfga-yaml-schema.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/src/openfga-yaml-schema.ts b/server/src/openfga-yaml-schema.ts index d708af2..99db0f7 100644 --- a/server/src/openfga-yaml-schema.ts +++ b/server/src/openfga-yaml-schema.ts @@ -124,6 +124,7 @@ const undefinedTypeTuple = (user: string, instancePath: string) => { // Format enforcement const identifier = "[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?"; +const id = "[a-zA-Z0-9/_-]+"; const formatField = (field: string, regex: string, length: number) => { if (!field.match(new RegExp(regex) || field.length > length)) { @@ -133,7 +134,7 @@ const formatField = (field: string, regex: string, length: number) => { }; function formatUser(user: string): boolean { - return formatField(user, `^${identifier}:(\\*|${identifier}(#${identifier})?)$`, 512); + return formatField(user, `^${identifier}:(\\*|${id}(#${identifier})?)$`, 512); } function formatRelation(relation: string): boolean { @@ -141,7 +142,7 @@ function formatRelation(relation: string): boolean { } function formatObject(object: string): boolean { - return formatField(object, `^${identifier}:${identifier}$`, 256); + return formatField(object, `^${identifier}:${id}$`, 256); } function formatCondition(condition: string): boolean {