From c7dad0ed0c479501e59c9974a07c186774808332 Mon Sep 17 00:00:00 2001 From: Sejong Yoo Date: Thu, 8 Oct 2026 09:56:50 +0900 Subject: [PATCH] Support in-segment wildcards in ACL patterns (test*, test-*). `*` was not escaped before being converted to `[^/]*`, so patterns like `test*` compiled to a broken regex. Escape `*` and `?` so partial segment wildcards match as documented. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 ++ app/app/pages/guide.vue | 2 ++ app/app/pages/users.vue | 2 +- app/server/utils/acl.ts | 7 ++++--- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ab03734..6124bfb 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,8 @@ ACL 패턴 예: - `demo/app` — 정확한 저장소 - `demo/*` — 한 단계 하위 - `team/**` — 하위 전체 +- `test*`, `test-*` — 해당 접두사로 시작하는 최상위 저장소 (`/`는 넘지 않음) +- `team/app-*` — 세그먼트 안 부분 와일드카드 - `*` — 모든 저장소 ## 이미지 삭제 diff --git a/app/app/pages/guide.vue b/app/app/pages/guide.vue index 19eadce..160fd7e 100644 --- a/app/app/pages/guide.vue +++ b/app/app/pages/guide.vue @@ -139,6 +139,8 @@ const aclPatterns = [ { pattern: 'demo/app', description: '정확한 저장소' }, { pattern: 'demo/*', description: 'demo 아래 한 단계' }, { pattern: 'team/**', description: 'team 아래 전체' }, + { pattern: 'test*', description: 'test로 시작하는 최상위 저장소 (test, test-app 등)' }, + { pattern: 'team/app-*', description: 'team 아래 app-로 시작하는 저장소' }, { pattern: '*', description: '모든 저장소' }, ] diff --git a/app/app/pages/users.vue b/app/app/pages/users.vue index f770e4a..7b97408 100644 --- a/app/app/pages/users.vue +++ b/app/app/pages/users.vue @@ -162,7 +162,7 @@