Skip to content

Commit

Permalink
Izaak/orgs 17 setactive by url example (#10)
Browse files Browse the repository at this point in the history
* Very close to setActive by slug

Replicating the workflow here: https://clerk.com/docs/guides/force-organizations#set-an-active-organization-based-on-the-url as closely as possible

It has a few issues though:

1: If you use the org-switcher component to pick a different org, the URL doesn't change
2: If you navigate to an org slug in the URL that you don't have access too, we just set the org to the personal workspace, instead of displaying a helpful error.

* Using setActive by slug!

From the canary release.

* renaming to sync-org-with-url

* Update examples/sync-org-with-url/README.md

Co-authored-by: Kyle MacDonald <kylemac@users.noreply.github.com>

* Making the org switcher navigate pages!

Turns out, it's a feature!

We should probably add an example that uses these properties.

OrganizationList has one: https://clerk.com/docs/components/organization/organization-list#usage-with-frameworks

but OrganizationSwitcher doesn't: https://clerk.com/docs/components/organization/organization-switcher#usage-with-frameworks

* Now nicely handling non-existent orgs!

Would be nice if there was better copy though.

* Now with sub-paths!

* Fixing regex to work with no trailing path

* Printing the org slug from `auth()` in a server component

* Speeding up url->session org syncing

* Preventing server from rendering bad org slug

* Better naming

---------

Co-authored-by: Kyle MacDonald <kylemac@users.noreply.github.com>
  • Loading branch information
izaaklauer and kylemac authored Aug 21, 2024
1 parent 888214b commit 47ce816
Show file tree
Hide file tree
Showing 32 changed files with 384 additions and 157 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"version": 3,
"middleware": {},
"functions": {},
"sortedMiddleware": []
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"node": {
"f872762b6cd8f0c1ab189355be859953710a4799": {
"workers": {
"app/_not-found/page": "(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2FUsers%2Fizaak%2Fdev%2Forgs%2Fexamples%2Fsetactive-with-slug%2Fnode_modules%2F%40clerk%2Fnextjs%2Fdist%2Fesm%2Fapp-router%2Fserver-actions.js%22%2C%5B%22invalidateCacheAction%22%5D%5D%5D&__client_imported__=true!",
"app/page": "(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2FUsers%2Fizaak%2Fdev%2Forgs%2Fexamples%2Fsetactive-with-slug%2Fnode_modules%2F%40clerk%2Fnextjs%2Fdist%2Fesm%2Fapp-router%2Fserver-actions.js%22%2C%5B%22invalidateCacheAction%22%5D%5D%5D&__client_imported__=true!",
"app/orgs/[orgSlug]/page": "(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2FUsers%2Fizaak%2Fdev%2Forgs%2Fexamples%2Fsetactive-with-slug%2Fnode_modules%2F%40clerk%2Fnextjs%2Fdist%2Fesm%2Fapp-router%2Fserver-actions.js%22%2C%5B%22invalidateCacheAction%22%5D%5D%5D&__client_imported__=true!"
},
"layer": {
"app/_not-found/page": "action-browser",
"app/page": "action-browser",
"app/orgs/[orgSlug]/page": "action-browser"
}
}
},
"edge": {},
"encryptionKey": "PxeTPPy+DGe3J0wqKIHXjorA85/GqRvUEaahz1b2o4g="
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"c":[],"r":["src/middleware","edge-runtime-webpack"],"m":["(middleware)/./node_modules/@clerk/backend/dist/chunk-7VE5X6MW.mjs","(middleware)/./node_modules/@clerk/backend/dist/chunk-HLOIKRRB.mjs","(middleware)/./node_modules/@clerk/backend/dist/chunk-P263NW7Z.mjs","(middleware)/./node_modules/@clerk/backend/dist/chunk-RDWIKGZP.mjs","(middleware)/./node_modules/@clerk/backend/dist/index.mjs","(middleware)/./node_modules/@clerk/backend/dist/internal.mjs","(middleware)/./node_modules/@clerk/backend/dist/runtime/browser/crypto.mjs","(middleware)/./node_modules/@clerk/nextjs/dist/esm/app-router/server/utils.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/constants.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/clerkClient.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/clerkMiddleware.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/constants.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/errorThrower.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/errors.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/nextFetcher.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/protect.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/routeMatcher.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/server/utils.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/utils/debugLogger.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/utils/logFormatter.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/utils/pathMatchers.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/utils/response.js","(middleware)/./node_modules/@clerk/nextjs/dist/esm/utils/serverRedirectWithAuth.js","(middleware)/./node_modules/@clerk/shared/dist/apiUrlFromPublishableKey.mjs","(middleware)/./node_modules/@clerk/shared/dist/callWithRetry.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-4PW5MDZA.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-6NDGN2IU.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-7ELT755Q.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-7U7QHXU6.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-CYDR2ZSA.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-IC4FGZI3.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-K64INQ4C.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-KOH7GTJO.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-L45N5DM5.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-QE2A7CJI.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-SHMQZLCH.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-T5VTDOY6.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-TETGTEI2.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-TRWMHODU.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-TUVJ3GI6.mjs","(middleware)/./node_modules/@clerk/shared/dist/chunk-X2FYR5U6.mjs","(middleware)/./node_modules/@clerk/shared/dist/deprecated.mjs","(middleware)/./node_modules/@clerk/shared/dist/devBrowser.mjs","(middleware)/./node_modules/@clerk/shared/dist/error.mjs","(middleware)/./node_modules/@clerk/shared/dist/handleValueOrFn.mjs","(middleware)/./node_modules/@clerk/shared/dist/isomorphicAtob.mjs","(middleware)/./node_modules/@clerk/shared/dist/keys.mjs","(middleware)/./node_modules/@clerk/shared/dist/logger.mjs","(middleware)/./node_modules/@clerk/shared/dist/proxy.mjs","(middleware)/./node_modules/@clerk/shared/dist/telemetry.mjs","(middleware)/./node_modules/@clerk/shared/dist/underscore.mjs","(middleware)/./node_modules/@clerk/shared/dist/url.mjs","(middleware)/./node_modules/cookie/index.js","(middleware)/./node_modules/crypto-js/aes.js","(middleware)/./node_modules/crypto-js/cipher-core.js","(middleware)/./node_modules/crypto-js/core.js","(middleware)/./node_modules/crypto-js/enc-base64.js","(middleware)/./node_modules/crypto-js/enc-utf8.js","(middleware)/./node_modules/crypto-js/evpkdf.js","(middleware)/./node_modules/crypto-js/hmac-sha1.js","(middleware)/./node_modules/crypto-js/hmac.js","(middleware)/./node_modules/crypto-js/md5.js","(middleware)/./node_modules/crypto-js/sha1.js","(middleware)/./node_modules/dot-case/dist.es2015/index.js","(middleware)/./node_modules/lower-case/dist.es2015/index.js","(middleware)/./node_modules/map-obj/index.js","(middleware)/./node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js?absolutePagePath=%2FUsers%2Fizaak%2Fdev%2Forgs%2Fexamples%2Fsetactive-with-slug%2Fsrc%2Fmiddleware.ts&page=%2Fsrc%2Fmiddleware&rootDir=%2FUsers%2Fizaak%2Fdev%2Forgs%2Fexamples%2Fsetactive-with-slug&matchers=&preferredRegion=&middlewareConfig=e30%3D!","(middleware)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js","(middleware)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js","(middleware)/./node_modules/next/dist/compiled/cookie/index.js","(middleware)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js","(middleware)/./node_modules/next/dist/esm/api/headers.js","(middleware)/./node_modules/next/dist/esm/api/server.js","(middleware)/./node_modules/next/dist/esm/client/components/app-router-headers.js","(middleware)/./node_modules/next/dist/esm/client/components/draft-mode.js","(middleware)/./node_modules/next/dist/esm/client/components/headers.js","(middleware)/./node_modules/next/dist/esm/client/components/hooks-server-context.js","(middleware)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js","(middleware)/./node_modules/next/dist/esm/lib/constants.js","(middleware)/./node_modules/next/dist/esm/lib/url.js","(middleware)/./node_modules/next/dist/esm/server/api-utils/index.js","(middleware)/./node_modules/next/dist/esm/server/app-render/dynamic-rendering.js","(middleware)/./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js","(middleware)/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js","(middleware)/./node_modules/next/dist/esm/server/internal-utils.js","(middleware)/./node_modules/next/dist/esm/server/lib/trace/constants.js","(middleware)/./node_modules/next/dist/esm/server/lib/trace/tracer.js","(middleware)/./node_modules/next/dist/esm/server/web/adapter.js","(middleware)/./node_modules/next/dist/esm/server/web/error.js","(middleware)/./node_modules/next/dist/esm/server/web/exports/index.js","(middleware)/./node_modules/next/dist/esm/server/web/globals.js","(middleware)/./node_modules/next/dist/esm/server/web/next-url.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/image-response.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/request.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/response.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js","(middleware)/./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js","(middleware)/./node_modules/next/dist/esm/server/web/utils.js","(middleware)/./node_modules/next/dist/esm/shared/lib/constants.js","(middleware)/./node_modules/next/dist/esm/shared/lib/get-hostname.js","(middleware)/./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js","(middleware)/./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js","(middleware)/./node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js","(middleware)/./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js","(middleware)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js","(middleware)/./node_modules/next/dist/esm/shared/lib/segment.js","(middleware)/./node_modules/next/dist/experimental/testmode/context.js","(middleware)/./node_modules/next/dist/experimental/testmode/fetch.js","(middleware)/./node_modules/next/dist/experimental/testmode/server-edge.js","(middleware)/./node_modules/next/package.json","(middleware)/./node_modules/no-case/dist.es2015/index.js","(middleware)/./node_modules/path-to-regexp/dist.es2015/index.js","(middleware)/./node_modules/react/cjs/react.development.js","(middleware)/./node_modules/react/index.js","(middleware)/./node_modules/snake-case/dist.es2015/index.js","(middleware)/./node_modules/snakecase-keys/index.js","(middleware)/./node_modules/tslib/tslib.es6.mjs","(middleware)/./src/middleware.ts","(shared)/./node_modules/next/dist/esm/client/components/action-async-storage-instance.js","(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js","(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js","(shared)/./node_modules/next/dist/esm/client/components/request-async-storage-instance.js","(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js","(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage-instance.js","(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js","?599d","buffer","node:async_hooks",""]}
1 change: 1 addition & 0 deletions examples/setactive-with-slug/.next/types/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type": "module"}
125 changes: 0 additions & 125 deletions examples/setactive-with-slug/src/app/layout.tsx

This file was deleted.

3 changes: 0 additions & 3 deletions examples/setactive-with-slug/src/app/page.tsx

This file was deleted.

File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# templates: default
# templates: sync-org-with-url

This is a base template to bootstrap a new orgs example

Expand Down
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 47ce816

Please sign in to comment.