From 99137adf99d125a87102e3a6b05b62b93f560bc7 Mon Sep 17 00:00:00 2001 From: Izaak Lauer <8404559+izaaklauer@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:34:43 -0400 Subject: [PATCH 1/5] Reversing personal account and workspace presedence --- .../src/tokens/__tests__/request.test.ts | 11 ++++--- packages/backend/src/tokens/request.ts | 32 +++++++++---------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/packages/backend/src/tokens/__tests__/request.test.ts b/packages/backend/src/tokens/__tests__/request.test.ts index 61b5c893398..e187432ee7e 100644 --- a/packages/backend/src/tokens/__tests__/request.test.ts +++ b/packages/backend/src/tokens/__tests__/request.test.ts @@ -298,14 +298,15 @@ export default (QUnit: QUnit) => { }, }, { - name: 'personal account match precedes org match', + name: 'org match match precedes personal account', whenOrgSyncOptions: { - organizationPatterns: ['/personal-account'], // bad practice - personalAccountPatterns: ['/personal-account'], + personalAccountPatterns: ['/', '/(.*)'], // Personal account captures everything + organizationPatterns: ['/orgs/:slug'], // that isn't org scoped }, - whenAppRequestPath: '/personal-account', + whenAppRequestPath: '/orgs/my-org', thenExpectActivationEntity: { - type: 'personalAccount', + type: 'organization', + organizationSlug: 'my-org', }, }, { diff --git a/packages/backend/src/tokens/request.ts b/packages/backend/src/tokens/request.ts index 2e4ed6b9fa3..39b5e4769cc 100644 --- a/packages/backend/src/tokens/request.ts +++ b/packages/backend/src/tokens/request.ts @@ -735,22 +735,6 @@ export function getOrganizationSyncTarget( return null; } - // Check for personal account activation - if (matchers.PersonalAccountMatcher) { - let personalResult: Match>>; - try { - personalResult = matchers.PersonalAccountMatcher(url.pathname); - } catch (e) { - // Intentionally not logging the path to avoid potentially leaking anything sensitive - console.error(`Failed to apply personal account pattern "${options.personalAccountPatterns}" to a path`, e); - return null; - } - - if (personalResult) { - return { type: 'personalAccount' }; - } - } - // Check for organization activation if (matchers.OrganizationMatcher) { let orgResult: Match>>; @@ -776,6 +760,22 @@ export function getOrganizationSyncTarget( ); } } + + // Check for personal account activation + if (matchers.PersonalAccountMatcher) { + let personalResult: Match>>; + try { + personalResult = matchers.PersonalAccountMatcher(url.pathname); + } catch (e) { + // Intentionally not logging the path to avoid potentially leaking anything sensitive + console.error(`Failed to apply personal account pattern "${options.personalAccountPatterns}" to a path`, e); + return null; + } + + if (personalResult) { + return { type: 'personalAccount' }; + } + } return null; } From e91bd65886922ec1c7e952ead67e8e13de5b3da6 Mon Sep 17 00:00:00 2001 From: Izaak Lauer <8404559+izaaklauer@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:37:44 -0400 Subject: [PATCH 2/5] Changeset --- .changeset/stale-pans-clean.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/stale-pans-clean.md diff --git a/.changeset/stale-pans-clean.md b/.changeset/stale-pans-clean.md new file mode 100644 index 00000000000..025ff738f55 --- /dev/null +++ b/.changeset/stale-pans-clean.md @@ -0,0 +1,5 @@ +--- +"@clerk/backend": patch +--- + +Grants organization URL patterns presedence over personal account patterns in organization sync options. From 2d85de3869be18cc01772fb891284c2ed3563eea Mon Sep 17 00:00:00 2001 From: Izaak Lauer <8404559+izaaklauer@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:56:14 -0400 Subject: [PATCH 3/5] updating jsdoc comments --- packages/backend/src/tokens/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/tokens/types.ts b/packages/backend/src/tokens/types.ts index 0e97c0026c4..235b08eb078 100644 --- a/packages/backend/src/tokens/types.ts +++ b/packages/backend/src/tokens/types.ts @@ -36,7 +36,7 @@ export type OrganizationSyncOptions = { * organization-related fields will be set to null. The server component must detect this and respond * with an appropriate error (e.g., notFound()). * - * If the route also matches the personalAccountPatterns, the personalAccountPattern takes precedence. + * If the route also matches the personalAccountPatterns, this takes precedence. * * Must have a path token named either ":id" (matches a clerk organization ID) or ":slug" (matches a clerk * organization slug). @@ -50,7 +50,7 @@ export type OrganizationSyncOptions = { /** * URL patterns for resources in the context of a clerk personal account (user-specific, outside any organization). - * If the route also matches the organizationPattern, this takes precedence. + * If the route also matches the organizationPattern, the organizationPatterns takes precedence. * * Common examples: * - ["/user", "/user/(.*)"] From f97841c20000b5f7fbc8fe18349ece821cfdcea8 Mon Sep 17 00:00:00 2001 From: Izaak Lauer <8404559+izaaklauer@users.noreply.github.com> Date: Thu, 17 Oct 2024 09:44:59 -0400 Subject: [PATCH 4/5] Minor instead of patch in changeset Good feedback @panteliselef! https://github.com/clerk/javascript/pull/4320#discussion_r1802943185 --- .changeset/stale-pans-clean.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/stale-pans-clean.md b/.changeset/stale-pans-clean.md index 025ff738f55..d49484b7198 100644 --- a/.changeset/stale-pans-clean.md +++ b/.changeset/stale-pans-clean.md @@ -1,5 +1,5 @@ --- -"@clerk/backend": patch +"@clerk/backend": minor --- Grants organization URL patterns presedence over personal account patterns in organization sync options. From 93deebad9c32b3c2bc308eb9f849bb91f97fda0f Mon Sep 17 00:00:00 2001 From: Laura Beatris <48022589+LauraBeatris@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:21:20 -0300 Subject: [PATCH 5/5] Update changeset --- .changeset/stale-pans-clean.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/stale-pans-clean.md b/.changeset/stale-pans-clean.md index d49484b7198..a20fba237da 100644 --- a/.changeset/stale-pans-clean.md +++ b/.changeset/stale-pans-clean.md @@ -2,4 +2,4 @@ "@clerk/backend": minor --- -Grants organization URL patterns presedence over personal account patterns in organization sync options. +Updates `organizationPatterns` to take precedence over `personalAccountPatterns` in `organizationSyncOptions`