From 2d257c73849018e5af9126c64a57974215b58382 Mon Sep 17 00:00:00 2001 From: Alexis Aguilar <98043211+alexisintech@users.noreply.github.com> Date: Thu, 12 Dec 2024 17:25:07 -0500 Subject: [PATCH 1/9] (chore) DOCS-9680 add list of components to component reference overview (#1800) --- docs/components/overview.mdx | 39 +++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/docs/components/overview.mdx b/docs/components/overview.mdx index 30ef4f78aa..fbc6b591d8 100644 --- a/docs/components/overview.mdx +++ b/docs/components/overview.mdx @@ -5,15 +5,48 @@ description: A list of Clerk's comprehensive suite of components designed to sea Clerk offers a comprehensive suite of components designed to seamlessly integrate authentication and multi-tenancy into your application. With Clerk components, you can easily customize the appearance of authentication components and pages, manage the entire authentication flow to suit your specific needs, and even build robust SaaS applications. -To get started, select a component from the navigation on the left. +## UI components -## What are control components? +- [``](/docs/components/authentication/sign-in) +- [``](/docs/components/authentication/sign-up) +- [``](/docs/components/authentication/google-one-tap) +- [``](/docs/components/user/user-button) +- [``](/docs/components/user/user-profile) +- [``](/docs/components/organization/create-organization) +- [``](/docs/components/organization/organization-profile) +- [``](/docs/components/organization/organization-switcher) +- [``](/docs/components/organization/organization-list) +- [``](/docs/components/waitlist) + +## Control components + +{/* TODO(Alexis): update with new callout */} Control components manage authentication-related behaviors in your application. They handle tasks such as controlling content visibility based on user authentication status, managing loading states during authentication processes, and redirecting users to appropriate pages. Control components render at `` and `` states for assertions on the [`Clerk` object](/docs/references/javascript/clerk/clerk). A common example is the [``](/docs/components/control/signed-in) component, which allows you to conditionally render content only when a user is authenticated. +- [``](/docs/components/control/authenticate-with-callback) +- [``](/docs/components/control/clerk-loaded) +- [``](/docs/components/control/clerk-loading) +- [``](/docs/components/protect) +- [``](/docs/components/control/multi-session) +- [``](/docs/components/control/redirect-to-signin) +- [``](/docs/components/control/redirect-to-signup) +- [``](/docs/components/control/redirect-to-userprofile) +- [``](/docs/components/control/redirect-to-organizationprofile) +- [``](/docs/components/control/redirect-to-createorganization) +- [``](/docs/components/control/signed-in) +- [``](/docs/components/control/signed-out) + +## Unstyled components + +- [``](/docs/components/unstyled/sign-in-button) +- [``](/docs/components/unstyled/sign-in-with-metamask) +- [``](/docs/components/unstyled/sign-up-button) +- [``](/docs/components/unstyled/sign-out-button) + ## Customization Guides -- [Theme components with the appearance prop](/docs/customization/overview) +- [Customize components with the `appearance` prop](/docs/customization/overview) - [Localize components with the `localization` prop (experimental)](/docs/customization/localization) - [Add pages to the `` component](/docs/customization/user-profile) - [Add pages to the `` component](/docs/customization/organization-profile) From ba1871eacb8dd3ac449facf668caca97f186d8fc Mon Sep 17 00:00:00 2001 From: Alexis Aguilar <98043211+alexisintech@users.noreply.github.com> Date: Thu, 12 Dec 2024 18:13:13 -0500 Subject: [PATCH 2/9] (chore) steps component now accepts h2s (#1801) --- CONTRIBUTING.md | 8 ++-- .../oidc/custom-provider.mdx | 14 +++---- .../enterprise-connections/saml/azure.mdx | 16 ++++---- .../saml/custom-provider.mdx | 12 +++--- .../enterprise-connections/saml/google.mdx | 22 +++++------ .../enterprise-connections/saml/okta.mdx | 16 ++++---- .../social-connections/spotify.mdx | 6 +-- .../social-connections/x-twitter.mdx | 12 +++--- .../making/custom-session-token.mdx | 8 ++-- docs/custom-flows/bot-sign-up-protection.mdx | 4 +- docs/custom-flows/email-password-mfa.mdx | 8 ++-- docs/custom-flows/email-password.mdx | 6 +-- docs/custom-flows/email-sms-otp.mdx | 8 ++-- docs/custom-flows/embedded-email-links.mdx | 4 +- docs/custom-flows/google-one-tap.mdx | 4 +- docs/custom-flows/manage-sms-based-mfa.mdx | 4 +- docs/custom-flows/manage-totp-based-mfa.mdx | 6 +-- .../customization/elements/guides/sign-in.mdx | 12 +++--- .../customization/elements/guides/sign-up.mdx | 12 +++--- docs/deployments/migrate-from-firebase.mdx | 22 +++++------ docs/guides/authjs-migration.mdx | 38 +++++++++---------- docs/guides/basic-rbac.mdx | 24 ++++++------ docs/guides/force-organizations.mdx | 18 ++++----- docs/guides/waitlist.mdx | 16 ++++---- docs/integrations/databases/convex.mdx | 18 ++++----- docs/integrations/databases/fauna.mdx | 10 ++--- docs/integrations/databases/firebase.mdx | 10 ++--- docs/integrations/databases/instantdb.mdx | 10 ++--- docs/integrations/databases/neon.mdx | 18 ++++----- docs/quickstarts/astro.mdx | 14 +++---- docs/quickstarts/chrome-extension.mdx | 26 ++++++------- docs/quickstarts/expo.mdx | 22 +++++------ docs/quickstarts/express.mdx | 8 ++-- docs/quickstarts/fastify.mdx | 10 ++--- docs/quickstarts/ios.mdx | 20 +++++----- docs/quickstarts/javascript.mdx | 20 +++++----- docs/quickstarts/nextjs.mdx | 10 ++--- docs/quickstarts/react-router.mdx | 10 ++--- docs/quickstarts/react.mdx | 14 +++---- docs/quickstarts/remix.mdx | 16 ++++---- docs/quickstarts/setup-clerk.mdx | 8 ++-- docs/quickstarts/tanstack-start.mdx | 16 ++++---- docs/references/astro/react.mdx | 12 +++--- .../chrome-extension/add-react-router.mdx | 10 ++--- .../references/chrome-extension/sync-host.mdx | 8 ++-- docs/references/expo/local-credentials.mdx | 10 ++--- .../custom-signup-signin-pages.mdx | 6 +-- docs/references/ios/sign-in-with-apple.mdx | 8 ++-- .../nextjs/custom-signup-signin-pages.mdx | 12 +++--- docs/references/nextjs/trpc.mdx | 10 ++--- .../nextjs/usage-with-older-versions.mdx | 4 +- .../custom-signup-signin-pages.mdx | 10 ++--- docs/references/react-router/library-mode.mdx | 8 ++-- docs/references/redwood/overview.mdx | 14 +++---- .../remix/custom-signup-signin-pages.mdx | 8 ++-- docs/references/remix/spa-mode.mdx | 12 +++--- docs/references/ruby/overview.mdx | 14 +++---- docs/testing/cypress/overview.mdx | 8 ++-- docs/testing/playwright/overview.mdx | 8 ++-- .../playwright/test-authenticated-flows.mdx | 10 ++--- docs/webhooks/loops.mdx | 8 ++-- docs/webhooks/sync-data.mdx | 22 +++++------ styleguides/SSO.STYLEGUIDE.MD | 2 +- 63 files changed, 371 insertions(+), 393 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4136a9f280..398002e105 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -439,18 +439,18 @@ console.log('ignored') ### `` -The `` component is used to number a set of instructions with an outcome. It uses the highest heading available in the component to denote each step. Can be used with `h3` headings. +The `` component is used to number a set of instructions with an outcome. It uses the highest heading available in the component to denote each step. Can be used with `h2` and `h3` headings. ```mdx -### Step 1 +## Step 1 Do these actions to complete Step 1. -### Another step +## Another step -#### A heading inside a step +### A heading inside a step Do these actions to complete Step 2. diff --git a/docs/authentication/enterprise-connections/oidc/custom-provider.mdx b/docs/authentication/enterprise-connections/oidc/custom-provider.mdx index 3ae5b0ce3f..ffe342ec81 100644 --- a/docs/authentication/enterprise-connections/oidc/custom-provider.mdx +++ b/docs/authentication/enterprise-connections/oidc/custom-provider.mdx @@ -25,7 +25,7 @@ This guide explains how to use a custom [OpenID Connect (OIDC)](https://openid.n To make the setup process easier, it's recommended to keep two browser tabs open: one for the [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) and one for your Identity Provider (IdP). - ### Set up an enterprise connection in Clerk + ## Set up an enterprise connection in Clerk 1. In the Clerk Dashboard, navigate to the [**SSO Connections**](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) page. 1. Select **Add connection** and select **For specific domains**. @@ -35,14 +35,14 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Add the **Specific Domain** that you want to allow this connection for. This is the domain of the users you want to allow to sign in to your app. 1. Select **Add connection**. You will be redirected to the connection's configuration page. Keep this page open. - ### Configure your IdP + ## Configure your IdP 1. If necessary, create a new application in your IdP. 1. In the connection's configuration page of the Clerk Dashboard, copy the **Authorized redirect URI**. 1. Add the value to your IdP's whitelisted URLs. 1. Find your application's **Discovery Endpoint**, **Client ID**, and **Client Secret** and copy them. - ### Set the Discovery Endpoint, Client ID, and Client Secret in Clerk + ## Set the Discovery Endpoint, Client ID, and Client Secret in Clerk 1. In your IdP settings, copy your application's **Discovery Endpoint**, **Client ID**, and **Client Secret**. 1. In the connection's configuration page in the Clerk Dashboard, paste these values in their respective fields. @@ -52,7 +52,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open > [!NOTE] > Most IdPs provide a **Discovery Endpoint** to retrieve metadata about an OIDC provider. If your IdP doesn't offer this endpoint or if you need greater control over the setup process, in the connection's configuration page in the Clerk Dashboard, find the **Identity Provider Configuration** section and select **Use Manual Configuration** to manually configure the connection. - ### Configure attribute mapping (optional) + ## Configure attribute mapping (optional) Clerk expects the claims returned by your IdP to follow the [OIDC Standard](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). If your provider returns claims in a non-standard format, use the **Attribute Mapping** section on the connection's configuration page to adjust the mapping of Clerk's user properties to match the IdP's claim attributes. @@ -61,7 +61,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open > > If the IdP doesn't return this claim, you can leave the **Email address verified** field blank and set the **Default value** to **True**. This should only be done if you fully trust the IdP, as it can expose your app to [OAuth attacks](https://www.descope.com/blog/post/noauth). - ### Allow additional identifiers (optional) + ## Allow additional identifiers (optional) User profile information is sourced from the IdP. To allow users to add new identifiers (e.g., email address or phone number) to their profiles: @@ -69,14 +69,14 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Enable **Allow additional identifiers**. 1. Select **Save**. - ### Enable the connection for Clerk + ## Enable the connection for Clerk To make the connection available for your users to authenticate with: 1. Navigate back to the Clerk Dashboard where you should still have the connection's configuration page open. If not, navigate to the [**SSO connections**](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) page and select the connection. 1. At the top of the page, toggle on **Enable connection** and select **Save**. - ### Test your connection + ## Test your connection The simplest way to test your enterprise connection is to visit your Clerk app's [Account Portal](/docs/customization/account-portal/overview), which is available for all Clerk apps out-of-the-box. diff --git a/docs/authentication/enterprise-connections/saml/azure.mdx b/docs/authentication/enterprise-connections/saml/azure.mdx index 87a7039fc4..67a08b2cbd 100644 --- a/docs/authentication/enterprise-connections/saml/azure.mdx +++ b/docs/authentication/enterprise-connections/saml/azure.mdx @@ -25,7 +25,7 @@ Enabling single sign-on (SSO) with **Microsoft Azure Entra ID** (formerly [Activ To make the setup process easier, it's recommended to keep two browser tabs open: one for the [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) and one for your [Microsoft Azure portal](https://portal.azure.com). - ### Set up an enterprise connection in Clerk + ## Set up an enterprise connection in Clerk To create a SAML connection in Clerk: @@ -38,7 +38,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Find the **Service Provider Configuration** section. 1. Save the **Identifier (Entity ID)** and **Reply URL (Assertion Consumer Service URL)** values somewhere secure. You'll need these in the [Configure your service provider](#configure-your-service-provider) step. Leave this page open. - ### Create a new enterprise app in Microsoft + ## Create a new enterprise app in Microsoft To create a new enterprise app in Microsoft: @@ -52,7 +52,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open - Ensure the option **Integrate any other application you don't find in the gallery (Non-gallery)** is selected. - Select **Create**. - ### Assign selected user or group in Microsoft + ## Assign selected user or group in Microsoft Now that you have created the enterprise app, you need to assign users or groups to the app. For example, if you were part of the Clerk organization, you would have access to users and groups within the Clerk organization. In this case, you could assign individual users or entire groups to the enterprise app you just created. @@ -63,14 +63,14 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Select **Select** at the bottom of the page. You'll be redirected to the **Add Assignment** page. 1. Select **Assign** at the bottom of the page. - ### Configure SSO in Microsoft + ## Configure SSO in Microsoft After assigning the user or group to the enterprise app, you need to configure the SSO settings to enable SAML SSO. 1. In the navigation sidebar, open the **Manage** dropdown and select **Single sign-on**. 1. In the **Select a single sign-on method** section, select **SAML**. - ### Configure your service provider + ## Configure your service provider To configure Clerk as your service provider, add these two fields to your IdP's application: @@ -84,7 +84,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Paste the **Identifier (Entity ID)** and **Reply URL (Assertion Consumer Service URL)** values you saved earlier into their respective fields. These values will be saved automatically. 1. Select **Save** at the top of the panel. Close the panel. - ### Configure your identity provider + ## Configure your identity provider To configure Microsoft Entra ID as your identity provider, add the following fields to your app: @@ -93,7 +93,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Navigate back to the **Clerk Dashboard**. In the **Identity Provider Configuration** section, under **App Federation Metadata Url**, paste the **App Federation Metadata URL**. 1. Select **Fetch & save**. - ### Map Microsoft claims to Clerk attributes + ## Map Microsoft claims to Clerk attributes Mapping the claims in your IdP to the attributes in Clerk ensures that the data from your IdP is correctly mapped to the data in Clerk. @@ -112,7 +112,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Next to **Source attribute**, search for and select `user.userprincipalname` in the dropdown. 1. Select **Save** at the top of the page. - ### Enable the connection for Clerk + ## Enable the connection for Clerk To make the connection available for your users to authenticate with: diff --git a/docs/authentication/enterprise-connections/saml/custom-provider.mdx b/docs/authentication/enterprise-connections/saml/custom-provider.mdx index b717cfa88e..e0dbd4a0d6 100644 --- a/docs/authentication/enterprise-connections/saml/custom-provider.mdx +++ b/docs/authentication/enterprise-connections/saml/custom-provider.mdx @@ -22,10 +22,8 @@ description: Learn how to integrate an Identity Provider with Clerk using SAML S Clerk supports Enterprise SSO via the SAML protocol, enabling you to create authentication strategies for an Identity Provider (IdP). Currently, Clerk offers direct integrations with [Microsoft Azure AD](/docs/authentication/enterprise-connections/saml/azure), [Google Workspace](/docs/authentication/enterprise-connections/saml/google), and [Okta Workforce](/docs/authentication/enterprise-connections/saml/okta) as IdPs. However, you can also integrate with any other IdP that supports the SAML protocol. This guide will show you how to set up a SAML connection with a custom IdP in Clerk. -## Tutorial - - ### Set up an enterprise connection in Clerk + ## Set up an enterprise connection in Clerk To create a SAML connection in Clerk: @@ -36,23 +34,23 @@ Clerk supports Enterprise SSO via the SAML protocol, enabling you to create auth 1. Add the **Specific Domain** that you want to allow this connection for. This is the domain of the users you want to allow to sign in to your application. 1. Select **Add connection**. You will be redirected to the connection's configuration page. - ### Create a new enterprise application in your IdP + ## Create a new enterprise application in your IdP Create a new application in your IdP. In the next steps, you'll configure your IdP with the settings provided by your Service Provider (Clerk), and configure Clerk with the settings provided by your IdP. Keep both the IdP and Clerk Dashboard open. - ### Configure your Identity Provider + ## Configure your Identity Provider There are two options for configuring your IdP: - [**Metadata configuration**](#metadata-configuration) - This is where you can download your IdP's metadata file or input the metadata URL that you got from your IdP. This is the recommended way to configure your IdP, but not all IdPs support this method. - [**Custom configuration**](#custom-configuration) - This is where you can manually input the configuration settings for your IdP. - #### Metadata configuration + ### Metadata configuration 1. In your IdP dashboard, find where you can download the metadata file or copy the metadata URL. 1. In the Clerk Dashboard on the connection's configuration page, under **Identity Provider Configuration**,select **Add via metadata**. Input the metadata URL or upload the metadata file that you got from your IdP. - #### Custom configuration + ### Custom configuration If you choose to manually input the configuration settings for your IdP, you will need to fill these three fields in the Clerk Dashboard: diff --git a/docs/authentication/enterprise-connections/saml/google.mdx b/docs/authentication/enterprise-connections/saml/google.mdx index 010d286a92..4ec7423f1c 100644 --- a/docs/authentication/enterprise-connections/saml/google.mdx +++ b/docs/authentication/enterprise-connections/saml/google.mdx @@ -20,10 +20,8 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. - Use Google Workspace to enable single sign-on (SSO) via SAML for your Clerk application. -## Tutorial - - ### Set up an enterprise connection in Clerk + ## Set up an enterprise connection in Clerk To create a SAML connection in Clerk: @@ -34,7 +32,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. Add the **Specific Domain** that you want to allow this connection for. This is the domain of the users you want to allow to sign in to your application. 1. Select **Add connection**. You'll be redirected to the connection's configuration page. - ### Create a new enterprise application in Google + ## Create a new enterprise application in Google To create a new enterprise application in Google: @@ -45,20 +43,20 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. In the **App details** section, an **App name** is required. 1. Select the **Continue** button. - ### Configure your identity provider + ## Configure your identity provider There are two options for configuring your IdP: - [**Metadata configuration**](#metadata-configuration) - This is where you can input the URL to your IdP's metadata file. This is the recommended way to configure your IdP. - [**Custom configuration**](#custom-configuration) - This is where you can manually input the configuration settings for your IdP. - #### Metadata configuration + ### Metadata configuration 1. In the Google Admin Console, under **Option 1: Download IdP Metadata**, select the **Download Metadata** button. 1. Navigate back to the Clerk Dashboard and in the **Identity Provider Configuration** section, select the **Upload file** button. 1. Upload the metadata file you downloaded from Google. - #### Custom configuration + ### Custom configuration If you choose to manually input the configuration settings for your IdP, you must add these three fields to your Clerk settings: @@ -71,7 +69,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. Fill in the **SSO URL**, **Entity ID**, and upload the **Certificate**. Don't forget to select **Save**. 1. In the Google Admin Console, select the **Continue** button. - ### Configure your service provider + ## Configure your service provider To configure your service provider (Clerk), you will need to add these two fields to your IdP's application: @@ -85,7 +83,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. In the Google Admin Console, paste these values into their respective fields. 1. Under the **Name ID** section, select the dropdown for **Name ID format** and select **Email**. - ### Map Google claims to Clerk attributes + ## Map Google claims to Clerk attributes Mapping the claims in your IdP to the attributes in Clerk ensures that the data from your IdP is correctly mapped to the data in Clerk. @@ -103,7 +101,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. Enter `mail` in the field. 1. If you have additional claims that you would like to map to Clerk, you can do so by following the steps in the [Map other claims](#map-other-claims-optional) section. Otherwise, select the **Finish** button. - #### Map other claims (optional) + ### Map other claims (optional) In Clerk, the [`User`](/docs/users/overview#user-object) object has a `publicMetadata` property that you can use to store additional information about your users. @@ -121,7 +119,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. Learn more about [how to access the metadata from our APIs](/docs/users/metadata). - ### Enable the connection on Google + ## Enable the connection on Google Once the configuration is complete, you will be redirected to the app details page. @@ -129,7 +127,7 @@ description: Learn how to integrate Google Workspace with Clerk using SAML SSO. 1. In the **Service status** section, select **ON for everyone**. 1. Select the **Save** button. - ### Enable the connection for Clerk + ## Enable the connection for Clerk To make the connection available for your users to authenticate with: diff --git a/docs/authentication/enterprise-connections/saml/okta.mdx b/docs/authentication/enterprise-connections/saml/okta.mdx index f530a92eae..2ba9589b4c 100644 --- a/docs/authentication/enterprise-connections/saml/okta.mdx +++ b/docs/authentication/enterprise-connections/saml/okta.mdx @@ -20,10 +20,8 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. - Use Okta Workforce to enable single sign-on (SSO) via SAML for your Clerk application. -## Tutorial - - ### Set up an enterprise connection in Clerk + ## Set up an enterprise connection in Clerk To create a SAML connection in Clerk: @@ -37,7 +35,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Save the **Single sign-on URL** and the **Audience URI (SP Entity ID)** values somewhere secure. You'll need these in the [Configure your service provider](#configure-your-service-provider) step. 1. Leave this page open. - ### Create a new enterprise application in Okta + ## Create a new enterprise application in Okta To create a new enterprise application in Okta: @@ -49,7 +47,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Once redirected to the **Create SAML Integration** page, fill in the **General Settings** fields. An **App name** is required. 1. Select the **Next** button to continue. - ### Configure your service provider + ## Configure your service provider Once you have moved forward from the **General Settings** instructions, you will be presented with the **Configure SAML** page. @@ -62,7 +60,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Paste the **Single sign-on URL** and the **Audience URI (SP Entity ID)** values that you saved earlier into their respective fields. - ### Map Okta claims to Clerk attributes + ## Map Okta claims to Clerk attributes Mapping the claims in your IdP to the attributes in Clerk ensures that the data from your IdP is correctly mapped to the data in Clerk. @@ -84,7 +82,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Scroll to the bottom of the page and select the **Next** button to continue. 1. You will be redirected to the **Feedback** page. Fill out the feedback however you would like and select the **Finish** button to complete the setup. - ### Assign selected user or group in Okta + ## Assign selected user or group in Okta You need to assign your users/user groups to your enterprise application. For example, if you were part of the Clerk organization, you would have access to users and groups in the Clerk organization. In this case, you could assign one or more users or entire groups to the enterprise application you just created. @@ -94,7 +92,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Select the **Assign** button next to the user or group that you want to assign. 1. Select the **Done** button to complete the assignment. - ### Configure your identity provider + ## Configure your identity provider Once you have completed the setup in Okta, you will be redirected to the application instances page with the **Sign On** tab selected. @@ -103,7 +101,7 @@ description: Learn how to integrate Okta Workforce with Clerk using SAML SSO. 1. Under the **Metadata configuration** option, paste the **Metadata URL**. 1. Select the **Fetch & save** button to complete the setup. - ### Enable the connection for Clerk + ## Enable the connection for Clerk To make the connection available for your users to authenticate with: diff --git a/docs/authentication/social-connections/spotify.mdx b/docs/authentication/social-connections/spotify.mdx index 14bf02bde1..93023f25ab 100644 --- a/docs/authentication/social-connections/spotify.mdx +++ b/docs/authentication/social-connections/spotify.mdx @@ -28,7 +28,7 @@ Enabling OAuth with [Spotify](https://developer.spotify.com/documentation/web-ap To make the setup process easier, it's recommended to keep two browser tabs open: one for the [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) and one for your [Spotify Developer Dashboard](https://developer.spotify.com/). - ### Enable Spotify as a social connection in Clerk + ## Enable Spotify as a social connection in Clerk 1. In the Clerk Dashboard, navigate to the [**SSO connections**](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) page. 1. Select **Add connection** and select **For all users**. @@ -36,7 +36,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Ensure that both **Enable for sign-up and sign-in** and **Use custom credentials** are toggled on. 1. Save the **Redirect URI** somewhere secure. Keep the modal and page open. - ### Create your app in Spotify + ## Create your app in Spotify 1. On a separate page, go to the [Spotify Developer Dashboard](https://developer.spotify.com/) and sign in. 1. In the top-right, select your profile button and select [**Dashboard**](https://developer.spotify.com/dashboard). @@ -45,7 +45,7 @@ To make the setup process easier, it's recommended to keep two browser tabs open 1. Select **Save**. 1. On your app page, select **Settings**. Keep this page open. - ### Set the Client ID and Client Secret in the Clerk Dashboard + ## Set the Client ID and Client Secret in the Clerk Dashboard 1. In the Spotify app's settings page, save the **Client ID** and **Client secret** somewhere secure. To reveal the **Client secret**, you must select **View client secret**. 1. Navigate back to the Clerk Dashboard where the modal should still be open and paste these values into the respective fields. diff --git a/docs/authentication/social-connections/x-twitter.mdx b/docs/authentication/social-connections/x-twitter.mdx index 296986e1c3..4610f5a6d9 100644 --- a/docs/authentication/social-connections/x-twitter.mdx +++ b/docs/authentication/social-connections/x-twitter.mdx @@ -23,15 +23,13 @@ description: Learn how to set up a social connection with X/Twitter v2 in your C - Set X/Twitter's **Client ID** and **Client Secret** in the Clerk Dashboard -## Overview - Clerk does not currently support preconfigured shared OAuth credentials for X/Twitter on development instances. This means you will have to provide custom credentials for both development _and_ production instances, which involves generating your own **Client ID** and **Client Secret** using your X/Twitter Developer account. This tutorial will walk you through that process in just a few simple steps. > [!WARNING] > X/Twitter v2 is currently not providing email addresses of users. The user will have to fill in their email address manually when they return to your application after authenticating with X/Twitter. - ### Create an X/Twitter application + ## Create an X/Twitter application If you don't have an existing X/Twitter application you've set up for social connection, you need to register a new one at the [X/Twitter Developer Portal](https://developer.twitter.com/en/portal/dashboard). Note that the process requires approval from X/Twitter before your new application can be used. @@ -40,7 +38,7 @@ Clerk does not currently support preconfigured shared OAuth credentials for X/Tw 1. Navigate to the X/Twitter Developer Portal and go to [**Projects & Apps**](https://developer.twitter.com/en/portal/projects-and-apps). 1. Select **+ Add App**. After entering a name, you will be presented with your app's credentials. However, for setting up the X/Twitter v2 social connection with Clerk, **you won't need these credentials**. This is because you will be utilizing the OAuth 2.0 flow, which relies on different authentication details. - ### Enable X/Twitter as a social connection + ## Enable X/Twitter as a social connection To enable X/Twitter as a social connection for your Clerk application: @@ -49,7 +47,7 @@ Clerk does not currently support preconfigured shared OAuth credentials for X/Tw 1. In the **Choose provider** dropdown, select **X/Twitter**. 1. Toggle on **Use custom credentials** and copy **Redirect URI**. Keep this modal and page open. - ### Set the Redirect URI in your X/Twitter application + ## Set the Redirect URI in your X/Twitter application 1. Navigate back to the X/Twitter Developer portal. 1. On the application settings screen, scroll down to the **User authentication settings** section and select **Set up**. You'll be presented with the **User authentication settings** page. @@ -58,7 +56,7 @@ Clerk does not currently support preconfigured shared OAuth credentials for X/Tw 1. Under **App info**, in the **Callback URI / Redirect URL** input, paste the **Redirect URI** value you copied from the Clerk Dashboard. 1. Fill any other required fields, such as the **Website URL**, and select **Save**. - ### Set the Client ID and Client Secret in the Clerk Dashboard + ## Set the Client ID and Client Secret in the Clerk Dashboard After setting up your X/Twitter application, you should be able to copy your **Client ID** and **Client Secret**. @@ -67,7 +65,7 @@ Clerk does not currently support preconfigured shared OAuth credentials for X/Tw > [!NOTE] > If the modal or page is not still open, in the Clerk Dashboard, navigate to the [**SSO connections**](https://dashboard.clerk.com/last-active?path=user-authentication/sso-connections) page. Next to **X/Twitter**, select the settings icon. Under **Use custom credentials**, you can paste the **Client ID** and **Client Secret** into their respective fields. - ### Test your OAuth + ## Test your OAuth The simplest way to test your OAuth is to visit your Clerk application's [Account Portal](/docs/customization/account-portal/overview), which is available for all Clerk applications out-of-the-box. diff --git a/docs/backend-requests/making/custom-session-token.mdx b/docs/backend-requests/making/custom-session-token.mdx index ee28e7e925..4b4973f87e 100644 --- a/docs/backend-requests/making/custom-session-token.mdx +++ b/docs/backend-requests/making/custom-session-token.mdx @@ -11,10 +11,8 @@ This guide will show you how to customize a session token to include additional -{/* TODO: Update the H3 to an H2 when the Steps component can accept headings other than H3. */} - - ### Add custom claims to your session token + ## Add custom claims to your session token 1. In the Clerk Dashboard, navigate to the [**Sessions**](https://dashboard.clerk.com/last-active?path=sessions) page. 1. In the **Customize your session token** section, click the **Edit** button. @@ -24,7 +22,7 @@ This guide will show you how to customize a session token to include additional ![Clerk Dashboard showing the custom claim modal](/docs/images/advance/session-tokens/custom-session-example.png) - ### Use the custom claims in your application + ## Use the custom claims in your application The [`Auth`](/docs/references/nextjs/auth-object) object in the `@clerk/nextjs` package includes a `sessionClaims` property that contains the custom claims you added to your session token. @@ -64,7 +62,7 @@ This guide will show you how to customize a session token to include additional ``` - ### Add global TypeScript type for custom session claims + ## Add global TypeScript type for custom session claims To get auto-complete and prevent TypeScript errors when working with custom session claims, you can define a global type. diff --git a/docs/custom-flows/bot-sign-up-protection.mdx b/docs/custom-flows/bot-sign-up-protection.mdx index 20bf49b4cc..e6c63a18b5 100644 --- a/docs/custom-flows/bot-sign-up-protection.mdx +++ b/docs/custom-flows/bot-sign-up-protection.mdx @@ -8,12 +8,12 @@ description: Learn how to add Clerk's bot protection to your custom sign-up flow Clerk provides the ability to add a CAPTCHA widget to your sign-up flows to protect against bot sign-ups. The [``](/docs/components/authentication/sign-up) component handles this flow out-of-the-box. However, if you're building a custom user interface, this guide will show you how to add the CAPTCHA widget to your custom sign-up flow. - ### Enable bot sign-up protection + ## Enable bot sign-up protection 1. In the Clerk Dashboard, navigate to the [**Attack protection**](https://dashboard.clerk.com/last-active?path=user-authentication/attack-protection) page. 1. In the **Bot sign-up protection** section, enable the feature and choose the **CAPTCHA type** you want to use. - ### Add the CAPTCHA widget to your custom sign-up form + ## Add the CAPTCHA widget to your custom sign-up form To render the CAPTCHA widget in your custom sign-up form, you need to include a specific element in your DOM. Specifically, there should be a `
` element by the time you call `signUp.create()`. This element acts as a placeholder onto which the widget will be rendered. diff --git a/docs/custom-flows/email-password-mfa.mdx b/docs/custom-flows/email-password-mfa.mdx index d4861d8c4a..2296237854 100644 --- a/docs/custom-flows/email-password-mfa.mdx +++ b/docs/custom-flows/email-password-mfa.mdx @@ -11,10 +11,8 @@ Clerk supports second factor verification through **SMS verification code**, **A This guide will walk you through how to build a custom email/password sign-in flow that supports **Authenticator application** and **Backup codes** as the second factor. -{/* TODO: Update these Steps when the Steps component can accept other headings. As of right now, Steps can only accept H3s. */} - - ### Enable email and password authentication + ## Enable email and password authentication This example uses email and password authentication, however, you can modify this approach according to the needs of your application. To use email and password authentication, you first need to enable these authentication strategies in the Clerk Dashboard. @@ -22,7 +20,7 @@ This guide will walk you through how to build a custom email/password sign-in fl 1. Ensure that _only_ **Email address** is required. If **Phone number** and **Username** are enabled, ensure they are not required. Use the settings icon next to each user attribute to check if a setting is required or optional. If you want to require **Username**, you must collect the username and pass the data to the `create()` method in your custom flow. 1. In the **Authentication strategies** section of this page, ensure **Password** is enabled. - ### Enable multi-factor authentication + ## Enable multi-factor authentication For your users to be able to enable MFA for their account, you need to enable MFA as an authentication strategy in your Clerk application. @@ -30,7 +28,7 @@ This guide will walk you through how to build a custom email/password sign-in fl 1. For the purpose of this guide, toggle on both the **Authenticator application** and **Backup codes** strategies. 1. Select **Save**. - ### Sign-in flow + ## Sign-in flow Signing in to an MFA-enabled account is identical to the regular sign-in process. However, in the case of an MFA-enabled account, a sign-in won't convert until both first factor and second factor verifications are completed. diff --git a/docs/custom-flows/email-password.mdx b/docs/custom-flows/email-password.mdx index 91d7f95dda..d22ac988ff 100644 --- a/docs/custom-flows/email-password.mdx +++ b/docs/custom-flows/email-password.mdx @@ -10,7 +10,7 @@ This guide will walk you through how to build a custom email/password sign-up an {/* TODO: Update these Steps when the Steps component can accept other headings. As of right now, Steps can only accept H3s. */} - ### Enable email and password authentication + ## Enable email and password authentication To use email and password authentication, you first need to enable these [authentication strategies](/docs/authentication/configuration/sign-up-sign-in-options#authentication-strategies) in the Clerk Dashboard. @@ -21,7 +21,7 @@ This guide will walk you through how to build a custom email/password sign-up an > [!NOTE] > By default, the [verification method](/docs/authentication/configuration/sign-up-sign-in-options#verification-methods) for the **Email address** strategy is set to **Email verification code**. This means that when a user signs up using their email address and password, Clerk sends a one-time code to their email address. The user must then enter this code to verify their email and complete the sign-up process. - ### Sign-up flow + ## Sign-up flow To sign up a user using their email, password, and email verification code, you must: @@ -467,7 +467,7 @@ This guide will walk you through how to build a custom email/password sign-up an - ### Sign-in flow + ## Sign-in flow To authenticate a user using their email and password, you must: diff --git a/docs/custom-flows/email-sms-otp.mdx b/docs/custom-flows/email-sms-otp.mdx index 363d863d34..9eaec44650 100644 --- a/docs/custom-flows/email-sms-otp.mdx +++ b/docs/custom-flows/email-sms-otp.mdx @@ -9,10 +9,8 @@ Clerk supports passwordless authentication, which lets users sign in and sign up This guide will walk you through how to build a custom SMS OTP sign-up and sign-in flow. The process for using email OTP is similar, and the differences will be highlighted throughout. -{/* TODO: Update these Steps when the Steps component can accept other headings. As of right now, Steps can only accept H3s. */} - - ### Enable SMS OTP + ## Enable SMS OTP To use SMS OTP as an authentication strategy, you first need to enable it in the Clerk Dashboard. @@ -20,7 +18,7 @@ This guide will walk you through how to build a custom SMS OTP sign-up and sign- 1. Ensure that _only_ **Phone number** is required. If **Email address** or **Username** are enabled, ensure they are not required. Use the settings icon to check if a setting is required or optional. If you would like to require **Username**, you must collect the username and pass it to the `create()` method in your custom flow. For this guide, if you would like to use email OTP instead, require the **Email address** option instead of the **Phone number** option. 1. In the **Authentication strategies** section of this page, ensure **SMS verification code** is enabled. Ensure **Password** is toggled off, as you are prioritizing passwordless, SMS OTP-only authentication in this guide. If you would like to use email OTP instead, enable the **Email verification code** strategy instead of the **SMS verification code** strategy. - ### Sign-up flow + ## Sign-up flow To sign up a user using an OTP, you must: @@ -306,7 +304,7 @@ This guide will walk you through how to build a custom SMS OTP sign-up and sign- To create a sign-up flow for email OTP, use the [`prepareEmailAddressVerification`](/docs/references/javascript/sign-up/email-verification#prepare-email-address-verification) and [`attemptEmailAddressVerification`](/docs/references/javascript/sign-up/email-verification#attempt-email-address-verification). These helpers work the same way as their phone number counterparts do in the previous example. You can find all available methods in the [`SignUp`](/docs/references/javascript/sign-in/sign-in) object documentation. - ### Sign-in flow + ## Sign-in flow To authenticate a user with an OTP, you must: diff --git a/docs/custom-flows/embedded-email-links.mdx b/docs/custom-flows/embedded-email-links.mdx index a7c6a6a6e9..2af4535257 100644 --- a/docs/custom-flows/embedded-email-links.mdx +++ b/docs/custom-flows/embedded-email-links.mdx @@ -15,7 +15,7 @@ Common use cases include: This guide will demonstrate how to generate a sign-in token and use it to sign in a user. - ### Generate a sign-in token + ## Generate a sign-in token [Sign-in tokens](/docs/reference/backend-api/tag/Sign-in-Tokens#operation/CreateSignInToken){{ target: '_blank' }} are JWTs that can be used to sign in to an application without specifying any credentials. A sign-in token can be used **once**, and can be consumed from the Frontend API using the [`ticket`](/docs/references/javascript/sign-in/sign-in#sign-in-create-params) strategy, which is demonstrated in the following example. @@ -40,7 +40,7 @@ This guide will demonstrate how to generate a sign-in token and use it to sign i Then, you can embed this link anywhere, such as an email. - ### Build a custom flow for signing in with a sign-in token + ## Build a custom flow for signing in with a sign-in token To handle email links with sign-in tokens, you must set up a page in your frontend that detects the token, signs the user in, and performs any additional actions you need. diff --git a/docs/custom-flows/google-one-tap.mdx b/docs/custom-flows/google-one-tap.mdx index 0023351877..d072ead81d 100644 --- a/docs/custom-flows/google-one-tap.mdx +++ b/docs/custom-flows/google-one-tap.mdx @@ -10,11 +10,11 @@ description: Learn how to build a custom Google One Tap authentication flow usin This guide will walk you through how to build a custom Google One Tap authentication flow. - ### Enable Google as a social connection + ## Enable Google as a social connection To use Google One Tap with Clerk, follow the steps in the [dedicated guide](/docs/authentication/social-connections/google#configuring-google-social-connection) to configure Google as a social connection in the Clerk Dashboard using custom credentials. - ### Create the Google One Tap authentication flow + ## Create the Google One Tap authentication flow To authenticate users with Google One Tap, you must: diff --git a/docs/custom-flows/manage-sms-based-mfa.mdx b/docs/custom-flows/manage-sms-based-mfa.mdx index a16224c6fa..34d75f7092 100644 --- a/docs/custom-flows/manage-sms-based-mfa.mdx +++ b/docs/custom-flows/manage-sms-based-mfa.mdx @@ -13,14 +13,14 @@ One of the options that Clerk supports for MFA is **SMS verification codes**. Th > To learn how to build a custom flow for managing authenticator app (TOTP) MFA, see the [dedicated guide](/docs/custom-flows/manage-totp-based-mfa). - ### Enable multi-factor authentication + ## Enable multi-factor authentication For your users to be able to enable MFA for their account, you need to enable MFA as an MFA authentication strategy in your Clerk application. 1. In the Clerk Dashboard, navigate to the [**Multi-factor**](https://dashboard.clerk.com/last-active?path=user-authentication/multi-factor) page. 1. Enable **SMS verification code** and **Backup codes** and select **Save**. - ### Create the multi-factor management flow + ## Create the multi-factor management flow This example is written for Next.js App Router but it can be adapted for any React meta framework, such as Remix. diff --git a/docs/custom-flows/manage-totp-based-mfa.mdx b/docs/custom-flows/manage-totp-based-mfa.mdx index 62fee0ab1a..9710cfe585 100644 --- a/docs/custom-flows/manage-totp-based-mfa.mdx +++ b/docs/custom-flows/manage-totp-based-mfa.mdx @@ -13,7 +13,7 @@ One of the options that Clerk supports for MFA is **Authenticator applications ( > To learn how to build a custom flow for managing SMS MFA, see the [dedicated guide](/docs/custom-flows/manage-sms-based-mfa). - ### Enable multi-factor authentication + ## Enable multi-factor authentication For your users to be able to enable MFA for their account, you need to enable MFA as an MFA authentication strategy in your Clerk application. @@ -21,7 +21,7 @@ One of the options that Clerk supports for MFA is **Authenticator applications ( 1. Enable **Authenticator application** and **Backup codes**. 1. Select **Save**. - ### Create the multi-factor management flow + ## Create the multi-factor management flow @@ -306,7 +306,7 @@ One of the options that Clerk supports for MFA is **Authenticator applications ( - #### Force MFA (optional) + ### Force MFA (optional) While Clerk does not natively enforce MFA for all users, you can implement this functionality by using `clerkMiddleware()` to check whether a user has MFA enabled. diff --git a/docs/customization/elements/guides/sign-in.mdx b/docs/customization/elements/guides/sign-in.mdx index a2d83b1440..003a318b7d 100644 --- a/docs/customization/elements/guides/sign-in.mdx +++ b/docs/customization/elements/guides/sign-in.mdx @@ -34,7 +34,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. > - Clerk Elements currently only works with Next.js App Router and [Clerk Core 2](/changelog/2024-04-19){{ target: '_blank' }}. As it gets closer to a stable release, support for additional frameworks will be added. - ### Add a sign-in route + ## Add a sign-in route Create a new route in your Next.js application. The route needs to be an [optional catch-all route](https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes#optional-catch-all-segments) so the sign-in flow can handled nested paths, as shown in the following example: @@ -54,7 +54,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. > [!TIP] > If you're getting TypeScript errors on the `@clerk/elements` imports you probably have forgotten to set your [`moduleResolution`](https://www.typescriptlang.org/tsconfig/#moduleResolution) in `tsconfig.json` to `bundler`. - ### Add the start step + ## Add the start step The Clerk authentication flows are made up of **steps**. Steps handle rendering the UI for each part of the flow. To allow users to create a sign-in attempt, the `start` step needs to be rendered. The following example does so with the `` component: @@ -75,7 +75,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. } ``` - ### Add form fields + ## Add form fields Make it functional by adding input fields. The following example uses the `` component to render an `identifier` field, as well as the `` component to allow users to sign in with a social connection, like Google: @@ -111,7 +111,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. > [!NOTE] > If your Clerk instance supports signing in with Google and doesn't require multi-factor authentication (MFA), you should be able to complete a sign-in with the components rendered so far. - ### Add verification + ## Add verification As users progress through a sign-in attempt, they may be asked to **verify** a number of authentication factors in the `verifications` step. You can render a form for the user to complete verification, but each [verification strategy](/docs/customization/elements/reference/sign-in#strategy) requires different fields. You must render the form fields conditionally for each authentication strategy your instance supports using the `` component. @@ -163,7 +163,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. Verification is the final step in the sign-in flow. When a user has verified all required factors, the sign-in attempt will be complete and they will be signed in. - ### Add password support + ## Add password support If your instance is configured to support authenticating with passwords, you must add a few additional steps and verification strategies. You can choose if you want to support providing a password in the `start` step with an additional field, or as an additional verification strategy. For this guide, add it as a standalone verification strategy. @@ -276,7 +276,7 @@ description: Learn how to build a complete sign-in form with Clerk Elements. > [!NOTE] > If your instance isn't configured to use passwords, or any of the strategies outlined here, Clerk Elements will log a warning to the console during development. - ### Customize and add styling + ## Customize and add styling Learn how to style your Clerk Elements components with the [styling guide](/docs/customization/elements/guides/styling). diff --git a/docs/customization/elements/guides/sign-up.mdx b/docs/customization/elements/guides/sign-up.mdx index eb9e04d147..85e41b892d 100644 --- a/docs/customization/elements/guides/sign-up.mdx +++ b/docs/customization/elements/guides/sign-up.mdx @@ -34,7 +34,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. > - Clerk Elements currently only works with Next.js App Router and [Clerk Core 2](/changelog/2024-04-19){{ target: '_blank' }}. As it gets closer to a stable release, support for additional frameworks will be added. - ### Add a sign-up route + ## Add a sign-up route Create a new route in your Next.js application. The route needs to be an [optional catch-all route](https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes#optional-catch-all-segments) so the sign-up flow can handled nested paths, as shown in the following example: @@ -54,7 +54,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. > [!TIP] > If you're getting TypeScript errors on the `@clerk/elements` imports you probably have forgotten to set your [`moduleResolution`](https://www.typescriptlang.org/tsconfig/#moduleResolution) in `tsconfig.json` to `bundler`. - ### Add the start step + ## Add the start step The Clerk authentication flows are made up of **steps**. Steps handle rendering the UI for each part of the flow. To allow users to create a sign-up attempt, the `start` step needs to be rendered. The following example does so with the `` component: @@ -75,7 +75,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. } ``` - ### Add form fields + ## Add form fields Make it functional by adding input fields. The following example uses the `` component to render the `emailAddress` and `username` fields, as well as the `` component to allow users to sign up with a social connection, like Google: @@ -122,7 +122,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. `` takes care of wiring up the input with the label element, and `` will render any field-specific errors that get returned from Clerk's API. The `` component provides common actions that are used throughout the flows. In this case, using the `submit` action to render a submit button for the start form. - ### Add verification + ## Add verification As users progress through a sign-up attempt, they may be asked to **verify** a number of authentication factors in the `verifications` step. You can render a form for the user to complete verification, but each [verification strategy](/docs/customization/elements/reference/sign-in#strategy) requires different fields. You must render the form fields conditionally for each authentication strategy your instance supports using the `` component. @@ -195,7 +195,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. Verification is the final step in the sign-up flow. When a user has verified all required factors, the sign-up attempt will be complete, their account will be created, and they will be signed in. - ### Accept additional fields + ## Accept additional fields Should a user attempt to sign up via Google while a username is a required field, the `continue` step will be necessary to accept the username. The `` component will display any additional required fields. @@ -281,7 +281,7 @@ description: Learn how to build a complete sign-up form with Clerk Elements. > [!NOTE] > Under the hood, Clerk Elements will conditionally render the fields that are necessary to complete the sign up attempt, so there's no need to check the state of the sign up attempt yourself. - ### Customize and add styling + ## Customize and add styling Learn how to style your Clerk Elements components with the [styling guide](/docs/customization/elements/guides/styling). diff --git a/docs/deployments/migrate-from-firebase.mdx b/docs/deployments/migrate-from-firebase.mdx index 9a7971d49b..bb12619e42 100644 --- a/docs/deployments/migrate-from-firebase.mdx +++ b/docs/deployments/migrate-from-firebase.mdx @@ -6,9 +6,9 @@ description: Migrating your user base from Firebase to Clerk is a 2-part process Migrating your user base from Firebase to Clerk is a 2-part process that can be accomplished with just a few steps. - ### Export your Firebase users + ## Export your Firebase users - #### Install the Firebase CLI + ### Install the Firebase CLI If you haven't already, install the Firebase CLI: @@ -16,7 +16,7 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be npm install -g firebase-tools ``` - #### Log in to Firebase + ### Log in to Firebase Login to your Firebase account via the CLI. @@ -24,7 +24,7 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be firebase login ``` - #### Find your Firebase project ID + ### Find your Firebase project ID Use the firebase CLI to list your projects and find the project ID you want to export. @@ -32,7 +32,7 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be firebase projects:list ``` - #### Export your Firebase users using the CLI + ### Export your Firebase users using the CLI Use the firebase CLI to export your users to a JSON file. @@ -52,7 +52,7 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be You should now have a JSON file called `firebase-users.json` that contains all your Firebase users. - ### Retrieve your password hash parameters + ## Retrieve your password hash parameters In your Firebase project’s dashboard, navigate to **Authentication** and click on the 3 vertical dots at the top of the user's list, then click on **Password hash parameters**. @@ -60,23 +60,23 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be You can find more information about this page and the values above on [Firebase's documentation](https://firebaseopensource.com/projects/firebase/scrypt/). - ### Create a Node.js script + ## Create a Node.js script Now you have all the information you need to import your Firebase users into Clerk. This example uses Node.js, but you can use any other language or method if you so wish. - #### init npm + ### init npm ```bash {{ filename: 'terminal' }} npm init -y ``` - #### Install dependencies + ### Install dependencies ```bash {{ filename: 'terminal' }} npm i node-fetch@2 ``` - #### Create a script + ### Create a script ```js {{ filename: 'migrate-to-clerk.js' }} const fetch = require('node-fetch') @@ -134,7 +134,7 @@ Migrating your user base from Firebase to Clerk is a 2-part process that can be Here, body will either hold the necessary information to migrate a password-based user or in the case of an OAuth-based user, it'll skip the password check. It will also have the previous user ID as `external_id`, so you can link the newly created users with their existing data. - ### Run the script + ## Run the script ```bash {{ filename: 'terminal' }} node migrate-to-clerk.js diff --git a/docs/guides/authjs-migration.mdx b/docs/guides/authjs-migration.mdx index 0ff9014a9e..7f881daa42 100644 --- a/docs/guides/authjs-migration.mdx +++ b/docs/guides/authjs-migration.mdx @@ -33,12 +33,10 @@ description: Learn how to migrate an application using Auth.js to use Clerk for - Find further support -## Introduction - This guide shows how to migrate an application using Auth.js (formerly NextAuth.js) to use Clerk for authentication. - ### Install `@clerk/nextjs` + ## Install `@clerk/nextjs` Clerk's Next.js SDK gives you access to prebuilt [components](/docs/components/overview), [hooks](/docs/references/nextjs/overview#client-side-helpers), and [helpers](/docs/references/nextjs/overview) for Next.js Server Components, Route Handlers and Middleware. Run the following command to install it: @@ -56,7 +54,7 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. ``` - ### Set environment variables + ## Set environment variables Add the following code to your `.env.local` file to set your public and Secret Keys. @@ -67,7 +65,7 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. CLERK_SECRET_KEY={{secret}} ``` - ### Wrap your Next.js app in `` + ## Wrap your Next.js app in `` Remove the `` provider from Auth.js and replace it with ``. @@ -104,26 +102,26 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. ``` - ### Set up sign-up and sign-in UI + ## Set up sign-up and sign-in UI - #### Account Portal + ### Account Portal Account Portal is the fastest way to authenticate your app. Clerk's Account Portal hosts the ``, ``, ``, and other components for your application. Read more about [Account Portal](/docs/customization/account-portal/getting-started). To use the Account Portal, remove the routes that mount the Auth.js sign-in and sign-up UI. Replace the links to those routes with the [``](/docs/components/unstyled/sign-in-button) or [``](/docs/components/unstyled/sign-out-button) components. - #### Self-hosted UI + ### Self-hosted UI If Clerk's Account Portal pages aren't a good fit your app, you can build a custom sign-in and sign-up UI in one of two ways: - use the [prebuilt components](/docs/references/nextjs/custom-signup-signin-pages), such as the [``](/docs/components/authentication/sign-in) and [``](/docs/components/authentication/sign-up) components - build a [fully custom UI using the Clerk API](/docs/custom-flows/overview), leveraging Clerk's React hooks such as [`useSignIn()`](/docs/references/react/use-sign-in) and [`useSignUp()`](/docs/references/react/use-sign-up) - ### Protect your app + ## Protect your app With Clerk, you can control access to your application in a few different ways. One way is to use Clerk's Middleware to protect your entire application, or specific routes. Another way is to use Clerk's components to conditionally render UI based on the user's authentication state. You can hide or show UI based on whether the user is signed in or not. - #### Control access to your app with Clerk Middleware + ### Control access to your app with Clerk Middleware You will need to remove the Auth.js Middleware from your application, and replace it with the Clerk's Middleware helper, `clerkMiddleware()`. @@ -147,7 +145,7 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. } ``` - #### Control access to your app with Clerk's components + ### Control access to your app with Clerk's components To conditionally render UI when the user is signed in, wrap it with [``](/docs/components/control/signed-in). @@ -170,9 +168,9 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. } ``` - ### Read user and session data + ## Read user and session data - #### Server-side + ### Server-side Replace any Auth.js `getServerSession(req, res, authOptions)` with Clerk's helpers. @@ -205,7 +203,7 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. - #### Client Side + ### Client Side Replace Auth.js's `useSession()` hook with Clerk's hooks. @@ -224,14 +222,14 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. } ``` - ### User IDs as Foreign Keys + ## User IDs as Foreign Keys When you migrate to Clerk, you will likely need to resolve the foreign key that you used in your database. If you used the `userId` from NextAuth.js, you could resolve this issue with one of the following two options: - [Use Clerk's `externalId` field](#use-clerks-external-id-field) - [Update your Auth.js database](#update-your-database) - #### Use Clerk's `externalId` field + ### Use Clerk's `externalId` field When you migrate user data from Auth.js to Clerk, Clerk generates new user IDs for each user. If you are using existing user IDs as foreign keys in your database (e.g. in a `user_id` column), you can save those IDs as the user's `externalId` in Clerk. This `externalId` can be included in the session token by adding the following [customization](/docs/backend-requests/making/custom-session-token). The following example will set the user's ID to be `externalId` if one is present, otherwise, it will use the Clerk's user ID. @@ -287,19 +285,19 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. > [!NOTE] > You can not access the above from the client-side. If you are using one of Clerk's hooks, then you will need to check if `externalID` exists. If it doesn't, then read the `userId`. - #### Update your database + ### Update your database Alternatively, after the data migration, you can update all the user IDs stored in your database as a foreign key to the new Clerk user IDs. You can read more about user IDs and user data migration in the [Migration Script README](https://github.com/clerk/migration-script?tab=readme-ov-file#handling-the-foreign-key-constraint). - ### Create a Clerk production instance + ## Create a Clerk production instance Every Clerk application has a `Development` and a `Production` instance. Before you start migrating user data, you need to configure your Clerk `Production` instance and migrate your Auth.js users directly into that instance. The [Deploying to Production](/docs/deployments/overview#deploying-to-production) page covers creating a `Production` instance. You can migrate a small set of users on the `Development` instance for testing/staging. To enable importing users to your `Development` instance, add `IMPORT_TO_DEV_INSTANCE=true` to the `.env` for the migration script. - ### Migrate user data from Auth.js to Clerk + ## Migrate user data from Auth.js to Clerk This walkthrough will help you move user data from your existing database to Clerk. @@ -340,7 +338,7 @@ This guide shows how to migrate an application using Auth.js (formerly NextAuth. 1. Check for an error log for any users that were not migrated successfully. - ### Finding further support for migrating from Auth.js to Clerk + ## Finding further support for migrating from Auth.js to Clerk This guide covers the most common steps that you would take for the migration. If you have more complex integrations with Auth.js that are not covered here, don't hesitate to reach out in the [Clerk Discord](/discord){{ target: '_blank' }} by creating a post in the [Support channel](https://discord.gg/bmPVkeqKzZ). diff --git a/docs/guides/basic-rbac.mdx b/docs/guides/basic-rbac.mdx index c162efd9d8..10504d94c5 100644 --- a/docs/guides/basic-rbac.mdx +++ b/docs/guides/basic-rbac.mdx @@ -8,7 +8,7 @@ To control which users can access certain parts of your app, you can use the [ro This guide assumes that you're using Next.js App Router, but the concepts can be adapted to Next.js Pages Router and Remix. - ### Configure the session token + ## Configure the session token Clerk provides [user metadata](/docs/users/metadata#user-metadata), which can be used to store information, and in this case, it can be used to store a user's role. Since `publicMetadata` can only be read but not modified in the browser, it is the safest and most appropriate choice for storing information. @@ -26,7 +26,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be - ### Create a global TypeScript definition + ## Create a global TypeScript definition 1. In your application's root folder, create a `types/` directory. 1. Inside this directory, create a `globals.d.ts` file with the following code. This file will provide auto-completion and prevent TypeScript errors when working with roles. For this guide, only the `admin` and `moderator` roles will be defined. @@ -46,7 +46,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Set the admin role for your user + ## Set the admin role for your user Later in the guide, you will add a basic admin tool to change a user's role. For now, manually add the `admin` role to your own user account. @@ -61,7 +61,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Create a reusable function to check roles + ## Create a reusable function to check roles Create a helper function to simplify checking roles. @@ -81,7 +81,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be > [!NOTE] > You can customize the behavior of the `checkRole()` helper function to suit your needs. For example, you could modify it to return the roles a user has or create a `protectByRole()` function that handles role-based redirects. - ### Create the admin dashboard + ## Create the admin dashboard Now, it's time to create an admin dashboard. The first step is to create the `/admin` route. @@ -94,7 +94,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Protect the admin dashboard + ## Protect the admin dashboard To protect the `/admin` route, choose **one** of the two following methods: @@ -104,7 +104,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be > [!IMPORTANT] > You only need to follow **one** of the following methods to secure your `/admin` route. - #### Option 1: Protect the `/admin` route using middleware + ### Option 1: Protect the `/admin` route using middleware 1. In your app's root directory, create a `middleware.ts` file with the following code. The `createRouteMatcher()` function identifies routes starting with `/admin`. `clerkMiddleware()` intercepts requests to the `/admin` route, and checks the user's role in their `metadata` to verify that they have the `admin` role. If they don't, it redirects them to the home page. @@ -132,7 +132,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - #### Option 2: Protect the `/admin` route at the page-level + ### Option 2: Protect the `/admin` route at the page-level 1. Add the following code to the `app/admin/page.tsx` file. The `checkRole()` function checks if the user has the `admin` role. If they don't, it redirects them to the home page. @@ -151,7 +151,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Create server actions for managing a user's role + ## Create server actions for managing a user's role 1. In your `app/admin/` directory, create an `_actions.ts` file with the following code. The `setRole()` action checks that the current user has the `admin` role before updating the specified user's role using Clerk's [JavaScript Backend SDK](/docs/references/backend/user/update-user). The `removeRole()` action removes the role from the specified user. @@ -193,7 +193,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Create a component for searching for users + ## Create a component for searching for users 1. In your `app/admin/` directory, create a `SearchUsers.tsx` file with the following code. The `` component includes a form for searching for users. When submitted, it appends the search term to the URL as a search parameter. Your `/admin` route will then perform a query based on the updated URL. @@ -226,7 +226,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Refactor the admin dashboard + ## Refactor the admin dashboard With the server action and the search form set up, it's time to refactor the `app/admin/page.tsx`. @@ -298,7 +298,7 @@ This guide assumes that you're using Next.js App Router, but the concepts can be } ``` - ### Finished 🎉 + ## Finished 🎉 The foundation of a custom RBAC (Role-Based Access Control) system is now set up. Roles are attached directly to the user's session, allowing your application to access them without the need for additional network requests. The `checkRole()` helper function simplifies role checks and reduces code complexity. The final component is the admin dashboard, which enables admins to efficiently search for users and manage roles. diff --git a/docs/guides/force-organizations.mdx b/docs/guides/force-organizations.mdx index ecfef6948c..b3ca2eac15 100644 --- a/docs/guides/force-organizations.mdx +++ b/docs/guides/force-organizations.mdx @@ -23,14 +23,12 @@ description: Learn how to hide Personal Accounts and force organizations in your - Limit access to users with active organizations only -## Introduction - In this guide, you will learn how to hide a user's Personal Account in order to appear as if they only have access to organizations. You will also learn how to limit access to your application to only users with active organizations, further enforcing organization-centric access. This is useful for applications that are built for organizations only, such as B2B applications. This guide will be written for Next.js applications using App Router, but the same concepts can be applied to any application using Clerk. - ### Hide Personal Accounts from UI components + ## Hide Personal Accounts from UI components To begin forcing organizations in your application, you need to remove a user's Personal Account from the UI. A user's Personal Account cannot be disabled; it can only be hidden. @@ -68,11 +66,11 @@ This guide will be written for Next.js applications using App Router, but the sa - ### Detect and set an active organization + ## Detect and set an active organization With Clerk, a user can have many organization memberships, but only one of them can be active at a time. - #### Detect an active organization + ### Detect an active organization A session will always include an `orgId` via the [`Auth` object](/docs/references/nextjs/auth-object#auth-object-example-with-active-organization). This can be used to detect if a user has an active organization. @@ -109,7 +107,7 @@ This guide will be written for Next.js applications using App Router, but the sa - #### Set an active organization + ### Set an active organization In the case of [prebuilt components](/docs/components/overview), an organization will _automatically_ be set as active each time the user creates an organization, accepts an invitation, or selects a membership from the organization switcher. In the case of custom flows, you will need to implement the logic for setting an organization as active. The [`useOrganizationList()`](/docs/references/react/use-organization-list) hook provides a `setActive` method to help you with this. @@ -153,7 +151,7 @@ This guide will be written for Next.js applications using App Router, but the sa } ``` - #### Set an active organization based on the URL + ### Set an active organization based on the URL > [!WARNING] > This approach still depends on the `setActive` method, which only runs on the client. Due to this limitation, during SSR, it is possible that `orgId` from `auth()` returns an incorrect value that does not match the organization ID in the URL. @@ -213,7 +211,7 @@ This guide will be written for Next.js applications using App Router, but the sa } ``` - ### Limit access to users with active organizations only + ## Limit access to users with active organizations only Now that you have hidden Personal Accounts from the UI and can detect and set an active organization, you can limit access to your application to users with active organizations only. This will ensure that users without active organizations cannot access your application. @@ -229,7 +227,7 @@ This guide will be written for Next.js applications using App Router, but the sa Based on your use case, you can decide to limit users either in the entire app or a specific part of it. For example, a B2B application might need to limit access to only users with an active organization, whereas a B2B2C application might limit only the `/dashboard` path to users with an active organization. - #### Limit access using the `clerkMiddleware()` helper + ### Limit access using the `clerkMiddleware()` helper Clerk's [`clerkMiddleware()`](/docs/references/nextjs/clerk-middleware) helper can be used in both App Router and Pages Router applications to limit access to users with active organizations only. @@ -324,7 +322,7 @@ This guide will be written for Next.js applications using App Router, but the sa } ``` - #### Limit access using an App Router layout + ### Limit access using an App Router layout In Next.js App Router applications, instead of using `clerkMiddleware()`, you also have the option to use a layout to limit access to users with active organizations only. diff --git a/docs/guides/waitlist.mdx b/docs/guides/waitlist.mdx index cff59729a3..f4012afc5a 100644 --- a/docs/guides/waitlist.mdx +++ b/docs/guides/waitlist.mdx @@ -6,7 +6,7 @@ description: Learn how to add a waitlist to your Next.js application. In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist), users can register their interest in your app by joining a waitlist. This mode is ideal for apps in early development stages or those wanting to generate interest before launch. This guide shows you how to get Clerk integrated and how to add a waitlist to your Next.js application. - ### Install `@clerk/nextjs` + ## Install `@clerk/nextjs` Clerk's [Next.js SDK](/docs/references/nextjs/overview) gives you access to prebuilt components, React hooks, and helpers to make user authentication easier. @@ -26,7 +26,7 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) ``` - ### Set your Clerk API keys + ## Set your Clerk API keys @@ -51,7 +51,7 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) CLERK_SECRET_KEY={{secret}} ``` - ### Enable Waitlist mode + ## Enable Waitlist mode To enable **Waitlist** mode, follow these steps: @@ -64,7 +64,7 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) 1. On the right-side of a user's row, select the menu icon (...). 1. Select **Invite** to invite the user to your application. Select **Deny** to deny the user access to your application. - ### Add the `` component + ## Add the `` component The [``](/docs/components/waitlist) component renders a form that allows users to join for early access to your app. @@ -78,7 +78,7 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) } ``` - ### Add `` to your app + ## Add `` to your app @@ -99,14 +99,14 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) } ``` - ### Add sign-in functionality + ## Add sign-in functionality To allow users to sign in once they've been approved from the waitlist, you must: - [Add `clerkMiddleware()` to your app.](#add-clerkmiddleware-to-your-app) - [Add a sign-in page.](#add-a-sign-in-page) - #### Add `clerkMiddleware()` to your app + ### Add `clerkMiddleware()` to your app [`clerkMiddleware()`](/docs/references/nextjs/clerk-middleware#clerk-middleware) grants you access to user authentication state throughout your app, on any route or page. It also allows you to protect specific routes from unauthenticated users. To add `clerkMiddleware()` to your app, follow these steps: @@ -134,7 +134,7 @@ In [**Waitlist** mode](/docs/authentication/configuration/restrictions#waitlist) 1. By default, `clerkMiddleware()` will not protect any routes. All routes are public and you must opt-in to protection for routes. See the [`clerkMiddleware()` reference](/docs/references/nextjs/clerk-middleware) to learn how to require authentication for specific routes. - #### Add a sign-in page + ### Add a sign-in page The following example demonstrates how to render the `` component. diff --git a/docs/integrations/databases/convex.mdx b/docs/integrations/databases/convex.mdx index 2c825606aa..bbce2b5bc4 100644 --- a/docs/integrations/databases/convex.mdx +++ b/docs/integrations/databases/convex.mdx @@ -24,14 +24,12 @@ description: Learn how to integrate Clerk into your Convex application. - Access user identity in Convex queries and mutations -## Introduction - Convex is the full-stack TypeScript development platform. With Convex you get to build a backend with a provided realtime database, file storage, text search, scheduling and more. Paired with Clerk's user authentication and management features, you can build a powerful application with minimal effort. This tutorial assumes that you have already [set up a Clerk application](/docs/quickstarts/setup-clerk) and a [React + Convex application](https://docs.convex.dev/quickstart/react){{ target: '_blank' }}. This tutorial will also assume that you have not added Clerk to your application yet. - ### Create a JWT template based on Convex + ## Create a JWT template based on Convex In the Clerk Dashboard, navigate to the [**JWT templates**](https://dashboard.clerk.com/last-active?path=jwt-templates) page. Select the **New template** button to create a new template based on Convex. @@ -47,7 +45,7 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q By default, Clerk will sign the JWT with a private key automatically generated for your application, which is what most developers use for Convex. If you so choose, you can customize this key. - ### Configure Convex with the Clerk issuer domain + ## Configure Convex with the Clerk issuer domain The next step is to configure Convex with the issuer domain provided by Clerk. From your Clerk **JWT template** screen, find the **Issuer** input and click to **Copy** the URL. @@ -68,11 +66,11 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q Replace the `domain` string with the **Issuer** URL you copied. - ### Deploy your changes to Convex + ## Deploy your changes to Convex Run `npx convex dev` to automatically sync your configuration to your backend. - ### Install `@clerk/clerk-react` + ## Install `@clerk/clerk-react` Run the following command to install Clerk's React SDK: @@ -90,7 +88,7 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q ``` - ### Set environment variables + ## Set environment variables In your React project's root folder, you may have an `.env.local` file alongside `package.json` and other configuration files. If you don't see it, create it. @@ -110,7 +108,7 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q VITE_CLERK_PUBLISHABLE_KEY={{pub_key}} ``` - ### Configure the Clerk and Convex providers + ## Configure the Clerk and Convex providers Both Clerk and Convex have provider components that are required to provide authentication and client context. @@ -149,7 +147,7 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q ) ``` - ### Access user identity in Convex queries and mutations + ## Access user identity in Convex queries and mutations You can access the user information from the JWT in Convex queries and mutations. Use the `ctx.auth.getUserIdentity()` which returns the parsed information from the JWT, or `null` if the client isn't authenticated. @@ -171,7 +169,7 @@ This tutorial assumes that you have already [set up a Clerk application](/docs/q You can customize the information in the JWT by navigating to the [**JWT templates**](https://dashboard.clerk.com/last-active?path=jwt-templates) page in the Clerk Dashboard. Previously, Convex explicitly listed fields derived from [OpenID standard claims](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Now, Convex allows keys to accept [custom claims](https://docs.convex.dev/api/interfaces/server.UserIdentity). - ### Finished! + ## Finished! You now have a fully functioning React and Convex application with Clerk authentication. Be aware that Convex may require usage of their custom hooks and methods rather than Clerk's, such as using Convex's `useConvexAuth()` hook instead of Clerk's `useAuth()` hook in some cases. For more information on how to use Convex with Clerk, see the [Convex docs](https://docs.convex.dev/auth/clerk). diff --git a/docs/integrations/databases/fauna.mdx b/docs/integrations/databases/fauna.mdx index 40ed46991e..0e01ef4f9f 100644 --- a/docs/integrations/databases/fauna.mdx +++ b/docs/integrations/databases/fauna.mdx @@ -30,7 +30,7 @@ Integrating Fauna with Clerk gives you the benefits of using a Fauna database wh This guide will walk you through the steps to integrate Fauna with Clerk in your Next.js app. - ### Get your Clerk Frontend API URL and JWKS URL + ## Get your Clerk Frontend API URL and JWKS URL Add the following keys to your `.env.local` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -52,7 +52,7 @@ This guide will walk you through the steps to integrate Fauna with Clerk in your NEXT_PUBLIC_CLERK_JWKS_URL={{jwks_url}} ``` - ### Configure Fauna + ## Configure Fauna 1. Navigate to the [Fauna Dashboard](https://dashboard.fauna.com/) and select your database. 1. Select the **Access Providers** tab and select **Create Access Provider**. @@ -76,7 +76,7 @@ This guide will walk you through the steps to integrate Fauna with Clerk in your ``` 1. Select **Save**. - ### Create a JWT template in Clerk + ## Create a JWT template in Clerk Clerk's JWT templates allow you to generate a new valid Fauna authentication token (JWT) for each signed in user. These tokens allow authenticated users to access your data with Fauna's API. @@ -90,7 +90,7 @@ This guide will walk you through the steps to integrate Fauna with Clerk in your - In the **Claims** section, set the `aud` claim to the **Audience URL** you copied from Fauna in Step 2. The URL format should be `https://db.fauna.com/db/`. You can include additional claims if you’d like, but `aud` is the only required one. [Shortcodes](/docs/backend-requests/making/jwt-templates#shortcodes) are available to make adding dynamic user values easy. - Select **Save** from the notification bubble to complete setup. - ### Install the Fauna library + ## Install the Fauna library Add the Fauna library to your project. @@ -108,7 +108,7 @@ This guide will walk you through the steps to integrate Fauna with Clerk in your ``` - ### Authenticate Fauna queries in your Next.js app + ## Authenticate Fauna queries in your Next.js app You can now create Fauna JWTs in Clerk using the JWT template you created in the previous step. Generate the Fauna JWT by calling Clerk's [`useAuth().getToken`](/docs/references/react/use-auth) method, and use it to authenticate with Fauna as an end user, as shown in the following example: diff --git a/docs/integrations/databases/firebase.mdx b/docs/integrations/databases/firebase.mdx index 51c692f0eb..61219e5315 100644 --- a/docs/integrations/databases/firebase.mdx +++ b/docs/integrations/databases/firebase.mdx @@ -32,7 +32,7 @@ Integrating Firebase with Clerk gives you the benefits of using Firebase's featu > See the [demo repo](https://github.com/clerk/clerk-firebase-nextjs) for a full example of how to integrate Firebase with Clerk in a Next.js app. - ### Configure the integration + ## Configure the integration The Firebase integration enables you to use Clerk to generate a valid authentication token to send to Firebase Auth. This enables you to leverage Clerk's prebuilt components, auth provider options, and more, while accessing Firebase products like Firestore with a session validated by Firebase Auth. @@ -68,7 +68,7 @@ Integrating Firebase with Clerk gives you the benefits of using Firebase's featu - ### Enable authentication in Firebase + ## Enable authentication in Firebase To use Firebase auth, ensure authentication is enabled in your Firebase dashboard. To do so: @@ -77,7 +77,7 @@ Integrating Firebase with Clerk gives you the benefits of using Firebase's featu 1. Select **Get started**. 1. Enable any sign-in method you want, such as **Email/Password**. - ### Add a Security Rule to your Firestore database (optional) + ## Add a Security Rule to your Firestore database (optional) Adding the [Cloud Firestore](https://firebase.google.com/docs/firestore/quickstart) feature in your Firebase application is optional. @@ -93,7 +93,7 @@ Integrating Firebase with Clerk gives you the benefits of using Firebase's featu } ``` - ### Get your Firebase config object + ## Get your Firebase config object To connect to your Firebase app in your code, you need a config object from your Firebase project. To find it: @@ -115,7 +115,7 @@ Integrating Firebase with Clerk gives you the benefits of using Firebase's featu See [Google's Firebase documentation](https://support.google.com/firebase/answer/7015592) for more information on the config object. - ### Use Firebase with Clerk in your code + ## Use Firebase with Clerk in your code Now that you have configured the integration, and you have retrieved your Firebase config object, it's time to use Firebase with Clerk in your code. diff --git a/docs/integrations/databases/instantdb.mdx b/docs/integrations/databases/instantdb.mdx index 43522defff..b72937377c 100644 --- a/docs/integrations/databases/instantdb.mdx +++ b/docs/integrations/databases/instantdb.mdx @@ -35,7 +35,7 @@ Integrating [InstantDB](https://www.instantdb.com/) with Clerk gives you the ben This guide will walk you through the steps to integrate InstantDB with Clerk in your Next.js app. - ### Configure your Clerk session token + ## Configure your Clerk session token InstantDB uses Clerk's [session token](/docs/backend-requests/resources/session-tokens) to authenticate users. To use InstantDB with Clerk, you need to include the `email` claim in your session token. @@ -50,12 +50,12 @@ This guide will walk you through the steps to integrate InstantDB with Clerk in You can have additional claims as long as the `email` claim is set to `{{user.primary_email_address}}`. - ### Get your Clerk Publishable Key + ## Get your Clerk Publishable Key 1. In the Clerk Dashboard, navigate to the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page. 1. In the **Quick Copy** section, copy your Clerk Publishable Key. - ### Configure InstantDB + ## Configure InstantDB 1. In the InstantDB dashboard, navigate to the [**Auth**](https://www.instantdb.com/dash?t=auth) tab. 1. Select **Setup Clerk**. @@ -63,7 +63,7 @@ This guide will walk you through the steps to integrate InstantDB with Clerk in 1. Confirm the **The session token has the "email" claim.** message. 1. Select **Add Clerk app**. - ### Install the InstantDB library + ## Install the InstantDB library Run the following command to add the InstantDB library to your project. @@ -81,7 +81,7 @@ This guide will walk you through the steps to integrate InstantDB with Clerk in ``` - ### Integrate InstantDB to your Clerk application + ## Integrate InstantDB to your Clerk application To sign in to InstantDB with Clerk, you need to: diff --git a/docs/integrations/databases/neon.mdx b/docs/integrations/databases/neon.mdx index 56abd969e8..d62eba71b1 100644 --- a/docs/integrations/databases/neon.mdx +++ b/docs/integrations/databases/neon.mdx @@ -23,7 +23,7 @@ description: Learn how to integrate Clerk into your Neon application. This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.js application, using `drizzle-orm` and `drizzle-kit` to interact with the database. The tutorial guides you through setting up a simple application that enables users to add, view, and delete messages using Server Actions and Middleware with Clerk. - ### Create a new Next.js project + ## Create a new Next.js project 1. Create a new Next.js project using the following command: ```sh {{ filename: 'terminal' }} @@ -37,11 +37,11 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j npm install -D drizzle-kit ``` - ### Integrate the Next.js Clerk SDK + ## Integrate the Next.js Clerk SDK Follow the [Next.js quickstart](/docs/quickstarts/nextjs) to integrate the Clerk Next.js SDK into your application. - ### Protect your application routes + ## Protect your application routes To ensure that only authenticated users can access your application, modify [`clerkMiddleware`](/docs/references/nextjs/clerk-middleware) to require authentication for every route. @@ -62,7 +62,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j } ``` - ### Set your neon connection string + ## Set your neon connection string Add the Neon connection string to your project's environment variables. You can find the Neon connection string in the [Neon console](https://console.neon.tech/) - see the [Neon docs](https://neon.tech/docs/connect/connect-from-any-app) for more information. @@ -74,7 +74,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j CLERK_SECRET_KEY={{secret}} ``` - ### Set up the application schema and database connection + ## Set up the application schema and database connection 1. Inside the `app/`, create a `db/` directory. @@ -110,7 +110,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j }) ``` - ### Push the schema to the database + ## Push the schema to the database 1. To load the schema into the database, create a `drizzle.config.ts` file at the root of your project and add the following configuration: @@ -139,7 +139,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j npx drizzle-kit push ``` - ### Create Server Actions to handle user interactions + ## Create Server Actions to handle user interactions To handle form submissions for adding and deleting user messages, create two Server Actions in `app/actions.ts`. Use Clerk's [`auth()` helper](/docs/references/nextjs/auth) to obtain the user ID, which will be used to interact with the database. @@ -170,7 +170,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j } ``` - ### Create the UI for the Home Page + ## Create the UI for the Home Page In your `app/page.tsx` file, add the following code to create the UI for the home page. If a message exists, the user can view and delete it; otherwise, they can add a new message. @@ -211,7 +211,7 @@ This tutorial demonstrates how to integrate Neon Postgres with Clerk in a Next.j } ``` - ### Run the application + ## Run the application Run your application and open `http://localhost:3000` in your browser. Sign in with Clerk and interact with the application to add and delete user messages. diff --git a/docs/quickstarts/astro.mdx b/docs/quickstarts/astro.mdx index f1767b7ed2..c46a85d9c8 100644 --- a/docs/quickstarts/astro.mdx +++ b/docs/quickstarts/astro.mdx @@ -31,7 +31,7 @@ description: Add authentication and user management to your Astro app with Clerk - ### Install `@clerk/astro` + ## Install `@clerk/astro` Clerk's [Astro SDK](/docs/references/astro/overview) provides a set of components, hooks, and stores that make it easy to build authentication and user management features in your Astro app. @@ -51,7 +51,7 @@ description: Add authentication and user management to your Astro app with Clerk ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env.local` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -70,7 +70,7 @@ description: Add authentication and user management to your Astro app with Clerk CLERK_SECRET_KEY={{secret}} ``` - ### Update `astro.config.mjs` + ## Update `astro.config.mjs` To configure Clerk in your Astro app, you will need to update your `astro.config.mjs`. @@ -90,7 +90,7 @@ description: Add authentication and user management to your Astro app with Clerk }) ``` - ### Add `clerkMiddleware()` to your app + ## Add `clerkMiddleware()` to your app [`clerkMiddleware()`](/docs/references/astro/clerk-middleware) grants you access to user authentication state throughout your app, on any route or page. It also allows you to protect specific routes from unauthenticated users. To add `clerkMiddleware()` to your app, follow these steps: @@ -105,7 +105,7 @@ description: Add authentication and user management to your Astro app with Clerk ``` 1. By default, `clerkMiddleware()` will not protect any routes. All routes are public and you must opt-in to protection for routes. See the [`clerkMiddleware()` reference](/docs/references/astro/clerk-middleware) to learn how to require authentication for specific routes. - ### Add TypeScript declarations + ## Add TypeScript declarations Update the `env.d.ts` file in your `src/` directory to add type definitions for the `locals` added by the middleware. @@ -118,7 +118,7 @@ description: Add authentication and user management to your Astro app with Clerk /// ``` - ### Add Clerk components to your app + ## Add Clerk components to your app You can control which content signed-in and signed-out users can see with Clerk's [prebuilt control components](/docs/components/overview#what-are-control-components). Create a header using the following components: @@ -170,7 +170,7 @@ description: Add authentication and user management to your Astro app with Clerk ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/chrome-extension.mdx b/docs/quickstarts/chrome-extension.mdx index f361d050e4..fef197f686 100644 --- a/docs/quickstarts/chrome-extension.mdx +++ b/docs/quickstarts/chrome-extension.mdx @@ -27,13 +27,13 @@ description: Add authentication and user management to your Chrome Extension wit - ### Configure your authentication options + ## Configure your authentication options When creating your Clerk application in the Clerk Dashboard, your authentication options will depend on how you configure your Chrome Extension. Chrome Extensions can be used as a popup, a side panel, or in conjunction with a web app. Popups and side panels have limited authentication options. [Learn more about what options are available.](/docs/references/chrome-extension/overview#authenication-options) This guide will use a popup. - ### Create a new app using the Plasmo framework + ## Create a new app using the Plasmo framework [Plasmo](https://docs.plasmo.com/framework) is a browser extension framework that includes hot reloading and creating development and production extension builds easily from the same code. @@ -46,7 +46,7 @@ description: Add authentication and user management to your Chrome Extension wit cd clerk-chrome-extension ``` - ### Install `@clerk/chrome-extension` + ## Install `@clerk/chrome-extension` Clerk's [Chrome Extension SDK](/docs/references/chrome-extension/overview) gives you access to prebuilt components, React hooks, and helpers to make user authentication easier. @@ -56,7 +56,7 @@ description: Add authentication and user management to your Chrome Extension wit pnpm add @clerk/chrome-extension ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Plasmo offers [several options](https://docs.plasmo.com/framework/env) for environment variable files, as the same codebase can be used for development and production builds, as well as for targeting different browsers. This guide uses `.env.development` and `.env.chrome` files. @@ -77,7 +77,7 @@ description: Add authentication and user management to your Chrome Extension wit CLERK_FRONTEND_API={{fapi_url}} ``` - ### Add `` to your app + ## Add `` to your app @@ -107,7 +107,7 @@ description: Add authentication and user management to your Chrome Extension wit export default IndexPopup ``` - ### Create a header with Clerk components + ## Create a header with Clerk components You can control what content signed in and signed out users can see with Clerk's [prebuilt components](/docs/components/overview). Create a header with the following Clerk components. (With Chrome Extensions, you can also add this logic to a footer). @@ -157,7 +157,7 @@ description: Add authentication and user management to your Chrome Extension wit export default IndexPopup ``` - ### Update `` props for Chrome Extension navigation + ## Update `` props for Chrome Extension navigation To avoid navigation errors, set the `afterSignOutUrl`, `signInFallbackRedirectUrl` and `signUpFallbackRedirectUrl` props for ``. Chrome Extensions don't use an `http` URL, such as `http://localhost:3000`. Instead, they use a `chrome-extension://` URL appended with an unique extension ID called a CRX ID. This URL is what you will pass to these props. @@ -209,7 +209,7 @@ description: Add authentication and user management to your Chrome Extension wit export default IndexPopup ``` - ### Create a consistent CRX ID for your extension + ## Create a consistent CRX ID for your extension Chrome Extensions have a unique CRX ID that rotates by default, which can cause errors with the Clerk integration. To avoid these problems, ensure that you have a **consistent** CRX ID in both development and production for your extension by following these steps: @@ -217,7 +217,7 @@ description: Add authentication and user management to your Chrome Extension wit 1. Select **Generate KeyPairs**. 1. Save the **Private Key** somewhere secure in case you need it in the future. Save the **Public Key** and the **CRX ID** for the next steps. - ### Create an `.env.chrome` file to store your public key + ## Create an `.env.chrome` file to store your public key Create an `.env.chrome` file and add your public key to it, as shown in the following example: @@ -225,7 +225,7 @@ description: Add authentication and user management to your Chrome Extension wit CRX_PUBLIC_KEY= ``` - ### Edit your `package.json` to use the new public key + ## Edit your `package.json` to use the new public key Plasmo [uses the `package.json` to generate a `manifest.json` on build](https://docs.plasmo.com/framework#where-is-the-manifestjson-file), and allows for the use of environment variables in `package.json`. @@ -246,7 +246,7 @@ description: Add authentication and user management to your Chrome Extension wit } ``` - ### Use `pnpm dev` to start your development server and create a build + ## Use `pnpm dev` to start your development server and create a build Plasmo facilitates Chrome Extension development by automatically "hot loading" the app whenever you save a changed file in the project. This ensures the `build/chrome-mv3-dev` folder remains up to date. Without the plugin, you would need to manually execute the build command and reload your Chrome Extension after each change. Plasmo automates this process, streamlining development. @@ -256,7 +256,7 @@ description: Add authentication and user management to your Chrome Extension wit pnpm dev ``` - ### Load your Chrome Extension into your Chromium-based browser + ## Load your Chrome Extension into your Chromium-based browser To load your Chrome Extension, follow these steps: @@ -266,7 +266,7 @@ description: Add authentication and user management to your Chrome Extension wit 1. Navigate to where your project is located and select the `build/chrome-mv3-dev` folder. Then select **Select**. Your extension will now be loaded and shown in the list of extensions. 1. Confirm that the ID shown in your extension matches the CRX ID you saved [earlier](#create-a-consistent-crx-id-for-your-extension). - ### Test your Chrome Extension + ## Test your Chrome Extension In your Chrome browser, open the extension popup. Ensure that the `` appears, and that selecting it opens the `` modal. Sign in and ensure that the `` appears in the header. diff --git a/docs/quickstarts/expo.mdx b/docs/quickstarts/expo.mdx index c9d126d8cf..1ef8b7da8e 100644 --- a/docs/quickstarts/expo.mdx +++ b/docs/quickstarts/expo.mdx @@ -33,7 +33,7 @@ description: Add authentication and user management to your Expo app with Clerk. - ### Install `@clerk/clerk-expo` + ## Install `@clerk/clerk-expo` Clerk's [Expo SDK](/docs/references/expo/overview) gives you access to prebuilt components, hooks, and helpers to make user authentication easier. @@ -53,7 +53,7 @@ description: Add authentication and user management to your Expo app with Clerk. ``` - ### Install `@clerk/types` (optional) + ## Install `@clerk/types` (optional) Clerk's `@clerk/types` package provides TypeScript type definitions. @@ -73,7 +73,7 @@ description: Add authentication and user management to your Expo app with Clerk. ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add your Clerk Publishable Key to your `.env` file. It can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -91,7 +91,7 @@ description: Add authentication and user management to your Expo app with Clerk. EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY={{pub_key}} ``` - ### Add `` to your root layout + ## Add `` to your root layout @@ -122,7 +122,7 @@ description: Add authentication and user management to your Expo app with Clerk. } ``` - ### Configure the token cache + ## Configure the token cache Clerk stores the active user's session token in memory by default. In Expo apps, the recommended way to store sensitive data, such as tokens, is by using `expo-secure-store` which encrypts the data before storing it. @@ -201,11 +201,11 @@ description: Add authentication and user management to your Expo app with Clerk. > [!TIP] > When you sign a user out with [`signOut()`](/docs/references/react/use-auth#use-auth-returns), Clerk will remove the user's session JWT from the token cache. - ### Add sign-up and sign-in pages + ## Add sign-up and sign-in pages Clerk currently only supports [control components](/docs/components/overview#what-are-control-components) for Expo native. UI components are only available for Expo web. Instead, you must build [custom flows](/docs/custom-flows/overview) using Clerk's API. The following sections demonstrate how to build [custom email/password sign-up and sign-in flows](/docs/custom-flows/email-password). If you want to use different authentication methods, such as passwordless or OAuth, see the dedicated custom flow guides. - #### Layout page + ### Layout page First, protect your sign-up and sign-in pages. @@ -228,7 +228,7 @@ description: Add authentication and user management to your Expo app with Clerk. } ``` - #### Sign-up page + ### Sign-up page 1. In the `(auth)` group, create a `sign-up.tsx` file. 1. Paste the following code. The [`useSignUp()`](/docs/references/react/use-sign-up) hook is used to create a sign-up flow. The user can sign up using their email and password and will receive an email verification code to confirm their email. @@ -336,7 +336,7 @@ description: Add authentication and user management to your Expo app with Clerk. } ``` - #### Sign-in page + ### Sign-in page 1. In the `(auth)` group, create a `sign-in.tsx` file. 1. Paste the following code. The [`useSignIn()`](/docs/references/react/use-sign-in) hook is used to create a sign-in flow. The user can sign in using email address and password, or navigate to the sign-up page. @@ -410,7 +410,7 @@ description: Add authentication and user management to your Expo app with Clerk. For more information about building these custom flows, including guided comments in the code examples, see the [Build a custom email/password authentication flow](/docs/custom-flows/email-password) guide. - ### Conditionally render content + ## Conditionally render content You can control which content signed-in and signed-out users can see with Clerk's [prebuilt control components](/docs/components/overview#what-are-control-components). For this quickstart, you'll use: @@ -459,7 +459,7 @@ description: Add authentication and user management to your Expo app with Clerk. } ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/express.mdx b/docs/quickstarts/express.mdx index dd3f092403..4ce49c5754 100644 --- a/docs/quickstarts/express.mdx +++ b/docs/quickstarts/express.mdx @@ -33,7 +33,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat Learn how to integrate Clerk into your Express backend for secure user authentication and management. This guide covers backend implementation only and requires a Clerk frontend SDK in order for any of this to work. - ### Install `@clerk/express` + ## Install `@clerk/express` Clerk's [Express SDK](/docs/references/express/overview) ships with a variety of helpers for the backend to make user authentication easier. @@ -53,7 +53,7 @@ Learn how to integrate Clerk into your Express backend for secure user authentic ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -88,7 +88,7 @@ Learn how to integrate Clerk into your Express backend for secure user authentic ``` - ### Add `clerkMiddleware()` to your application + ## Add `clerkMiddleware()` to your application The [`clerkMiddleware()`](/docs/references/express/overview#clerk-middleware) function checks the request's cookies and headers for a session JWT and, if found, attaches the [`Auth`](/docs/references/nextjs/auth-object#auth-object){{ target: '_blank' }} object to the `request` object under the `auth` key. @@ -106,7 +106,7 @@ Learn how to integrate Clerk into your Express backend for secure user authentic }) ``` - ### Protect your routes using `requireAuth()` + ## Protect your routes using `requireAuth()` To protect your routes, use the [`requireAuth()`](/docs/references/express/overview#require-auth) middleware. This middleware functions similarly to `clerkMiddleware()`, but also protects your routes by redirecting unauthenticated users to the sign-in page. diff --git a/docs/quickstarts/fastify.mdx b/docs/quickstarts/fastify.mdx index 1d760b5f72..9e146a2029 100644 --- a/docs/quickstarts/fastify.mdx +++ b/docs/quickstarts/fastify.mdx @@ -39,7 +39,7 @@ Learn how to integrate Clerk into your Fastify backend for secure user authentic > This guide uses ECMAScript Modules (ESM). To use ESM in your project, you must include `"type": "module"` in your `package.json`. - ### Install `@clerk/fastify` + ## Install `@clerk/fastify` [Clerk's Fastify SDK](https://github.com/clerk/javascript/tree/main/packages/fastify) provides a range of backend utilities to simplify user authentication and management in your application. @@ -59,7 +59,7 @@ Learn how to integrate Clerk into your Fastify backend for secure user authentic ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env.local` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -78,7 +78,7 @@ Learn how to integrate Clerk into your Fastify backend for secure user authentic CLERK_SECRET_KEY={{secret}} ``` - ### Configure `clerkPlugin` for all routes + ## Configure `clerkPlugin` for all routes The `clerkPlugin` is a Fastify plugin provided by Clerk to integrate authentication into your Fastify application. To ensure that Clerk's authentication and user management features are applied across your Fastify application, configure the `clerkPlugin` to handle all routes or limit it to specific ones. @@ -108,7 +108,7 @@ Learn how to integrate Clerk into your Fastify backend for secure user authentic start() ``` - ### Use `getAuth()` to access the auth state and protect routes + ## Use `getAuth()` to access the auth state and protect routes The following example uses [`getAuth()`](/docs/references/nextjs/get-auth){{ target: '_blank' }} to retrieve the `userId`, which is used to protect the route and is passed to [`clerkClient.users.getUser()`](/docs/references/backend/user/get-user){{ target: '_blank' }} to retrieve the current user's `User` object. @@ -150,7 +150,7 @@ Learn how to integrate Clerk into your Fastify backend for secure user authentic ``` -### Configure `clerkPlugin` for specific routes +## Configure `clerkPlugin` for specific routes If you want to use Clerk for specific pages only, you can register the plugin for specific routes. In the following example, the routes are split into protected and public routes. diff --git a/docs/quickstarts/ios.mdx b/docs/quickstarts/ios.mdx index 0cb4ffdf5a..fd19fc1cd5 100644 --- a/docs/quickstarts/ios.mdx +++ b/docs/quickstarts/ios.mdx @@ -23,17 +23,17 @@ description: Add authentication and user management to your iOS app with Clerk. - ### Create an iOS Project + ## Create an iOS Project To get started using Clerk with iOS, create a new project in Xcode. Select SwiftUI as your interface and Swift as your language. See the [Xcode documentation](https://developer.apple.com/documentation/xcode/creating-an-xcode-project-for-an-app) for more information. - ### Install the Clerk iOS SDK + ## Install the Clerk iOS SDK Follow [the Swift Package Manager instructions](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app) to install Clerk as a dependency. When prompted for the package URL, enter [https://github.com/clerk/clerk-ios](https://github.com/clerk/clerk-ios). Be sure to add the package to your target. - ### Load Clerk + ## Load Clerk To use Clerk in your app, you must first configure and load `Clerk`. @@ -69,7 +69,7 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - ### Conditionally render content + ## Conditionally render content To render content based on whether a user is authenticated or not: @@ -97,9 +97,9 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - ### Create views for sign-up and sign-in + ## Create views for sign-up and sign-in - #### `SignUpView` + ### `SignUpView` The following example creates a `SignUpView` that allows users to sign up using their email address and password, and sends an email verification code to confirm their email address. @@ -165,7 +165,7 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - #### `SignInView` + ### `SignInView` The following example creates a `SignInView` that allows users to sign in using their email address and password. @@ -205,7 +205,7 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - #### `SignUpOrSignInView` + ### `SignUpOrSignInView` Finally, create a `SignUpOrSignInView` container view that allows users to switch between sign up and sign in. @@ -238,7 +238,7 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - ### Allow users to sign up or sign in + ## Allow users to sign up or sign in Go back to your `ContentView` and render your newly created `SignUpOrSignInView` when the user isn't signed in. @@ -261,7 +261,7 @@ description: Add authentication and user management to your iOS app with Clerk. } ``` - ### Allow users to sign out + ## Allow users to sign out Finally, provide users with a way to sign out of your app: diff --git a/docs/quickstarts/javascript.mdx b/docs/quickstarts/javascript.mdx index 9feb90d979..4d917d89bc 100644 --- a/docs/quickstarts/javascript.mdx +++ b/docs/quickstarts/javascript.mdx @@ -36,7 +36,7 @@ Use the following tabs to choose your preferred method. - ### Set up a JavaScript app using Vite + ## Set up a JavaScript app using Vite To install Clerk's JavaScript SDK, you need to use a bundler like [Vite](https://vitejs.dev/) or [Webpack](https://webpack.js.org/). @@ -65,7 +65,7 @@ Use the following tabs to choose your preferred method. ``` - ### Install `@clerk/clerk-js` + ## Install `@clerk/clerk-js` Run the following command to add the JavaScript SDK to your project: @@ -83,7 +83,7 @@ Use the following tabs to choose your preferred method. ``` - ### Set your Clerk API keys + ## Set your Clerk API keys It's recommended to use environment variables to store your Clerk Publishable Key. In JavaScript projects, you can add these values in an `.env` file and load them into your app using a package like [`dotenv`](https://www.npmjs.com/package/dotenv). For Vite projects, environment variables in an `.env` file at the project root are automatically accessible through the [`import.meta.env` object](https://vitejs.dev/guide/env-and-mode.html#env-variables). @@ -109,7 +109,7 @@ Use the following tabs to choose your preferred method. const clerkPubKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY ``` - ### Initialize Clerk + ## Initialize Clerk To initialize Clerk, import the `Clerk` class and instantiate it with your Clerk Publishable Key. Then, call the `load()` method, as shown in the following example: @@ -127,7 +127,7 @@ Use the following tabs to choose your preferred method. > [!NOTE] > Calling the `load()` method initializes Clerk. For more information on the `load()` method and what options you can pass to it, see the [reference documentation](/docs/references/javascript/clerk/clerk#load). - ### Add Clerk components to your app + ## Add Clerk components to your app Clerk's [prebuilt components](/docs/components/overview) are the easiest way to add authentication and user management to your app. They come styled out-of-the-box and are customizable to fit your app's design. @@ -183,7 +183,7 @@ Use the following tabs to choose your preferred method. ``` - ### Create your first user + ## Create your first user Run your project with the following command: @@ -209,7 +209,7 @@ Use the following tabs to choose your preferred method. - ### Add the SDK using a ` ``` - ### Listen for the `load` event + ## Listen for the `load` event Below the ` tag that initializes the SDK, create another ` ``` - ### Allow users to sign in or out + ## Allow users to sign in or out Clerk's [prebuilt components](/docs/components/overview) are the easiest way to add authentication and user management to your app. They come styled out-of-the-box and are customizable to fit your app's design. @@ -295,7 +295,7 @@ Use the following tabs to choose your preferred method. -### More resources +## More resources - [Clerk class reference](/docs/references/javascript/clerk/clerk) diff --git a/docs/quickstarts/nextjs.mdx b/docs/quickstarts/nextjs.mdx index 7c6a8bcda1..1c6e51bce7 100644 --- a/docs/quickstarts/nextjs.mdx +++ b/docs/quickstarts/nextjs.mdx @@ -25,7 +25,7 @@ description: Add authentication and user management to your Next.js app with Cle - ### Install `@clerk/nextjs` + ## Install `@clerk/nextjs` Clerk's [Next.js SDK](/docs/references/nextjs/overview) gives you access to prebuilt components, React hooks, and helpers to make user authentication easier. @@ -45,7 +45,7 @@ description: Add authentication and user management to your Next.js app with Cle ``` - ### Set your Clerk API keys + ## Set your Clerk API keys @@ -70,7 +70,7 @@ description: Add authentication and user management to your Next.js app with Cle CLERK_SECRET_KEY={{secret}} ``` - ### Add `clerkMiddleware()` to your app + ## Add `clerkMiddleware()` to your app [`clerkMiddleware()`](/docs/references/nextjs/clerk-middleware#clerk-middleware) grants you access to user authentication state throughout your app, on any route or page. It also allows you to protect specific routes from unauthenticated users. To add `clerkMiddleware()` to your app, follow these steps: @@ -95,7 +95,7 @@ description: Add authentication and user management to your Next.js app with Cle ``` 1. By default, `clerkMiddleware()` will not protect any routes. All routes are public and you must opt-in to protection for routes. See the [`clerkMiddleware()` reference](/docs/references/nextjs/clerk-middleware) to learn how to require authentication for specific routes. - ### Add `` and Clerk components to your app + ## Add `` and Clerk components to your app @@ -157,7 +157,7 @@ description: Add authentication and user management to your Next.js app with Cle ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/react-router.mdx b/docs/quickstarts/react-router.mdx index cdaab7e726..4f171e5652 100644 --- a/docs/quickstarts/react-router.mdx +++ b/docs/quickstarts/react-router.mdx @@ -34,7 +34,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat Clerk's [React Router SDK](/docs/references/react-router/overview) provides prebuilt components, hooks, and stores to make it easy to integrate authentication and user management in your React Router app. This guide assumes that you're using [React Router v7 or later](https://api.reactrouter.com/v7). - ### Install `@clerk/react-router` + ## Install `@clerk/react-router` Run the following command to install the SDK: @@ -52,7 +52,7 @@ Clerk's [React Router SDK](/docs/references/react-router/overview) provides preb ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -71,7 +71,7 @@ Clerk's [React Router SDK](/docs/references/react-router/overview) provides preb CLERK_SECRET_KEY={{secret}} ``` - ### Configure `rootAuthLoader()` + ## Configure `rootAuthLoader()` The `rootAuthLoader()` function provides access to authentication state in any React Router route. @@ -153,7 +153,7 @@ Clerk's [React Router SDK](/docs/references/react-router/overview) provides preb } ``` - ### Add `` and Clerk components to your app + ## Add `` and Clerk components to your app @@ -198,7 +198,7 @@ Clerk's [React Router SDK](/docs/references/react-router/overview) provides preb // Rest of the root.tsx code ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/react.mdx b/docs/quickstarts/react.mdx index a7384e1c8d..c904071c13 100644 --- a/docs/quickstarts/react.mdx +++ b/docs/quickstarts/react.mdx @@ -28,7 +28,7 @@ description: Add authentication and user management to your React app with Clerk - ### Create a React app using Vite + ## Create a React app using Vite Run the following commands to create a new React app using [Vite](https://vitejs.dev/guide/#scaffolding-your-first-vite-project): @@ -55,7 +55,7 @@ description: Add authentication and user management to your React app with Clerk ``` - ### Install `@clerk/clerk-react` + ## Install `@clerk/clerk-react` Clerk's [React SDK](/docs/references/react/overview) gives you access to prebuilt components, hooks, and helpers to make user authentication easier. @@ -75,7 +75,7 @@ description: Add authentication and user management to your React app with Clerk ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add your Clerk Publishable Key to your `.env.local` file. It can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -93,7 +93,7 @@ description: Add authentication and user management to your React app with Clerk VITE_CLERK_PUBLISHABLE_KEY={{pub_key}} ``` - ### Import the Clerk Publishable Key + ## Import the Clerk Publishable Key In your `main.tsx` file, import your Clerk Publishable Key. You can add an `if` statement to check that it is imported and that it exists. This will prevent running the app without the Publishable Key, and will also prevent TypeScript errors. @@ -117,7 +117,7 @@ description: Add authentication and user management to your React app with Clerk ) ``` - ### Add `` to your app + ## Add `` to your app @@ -146,7 +146,7 @@ description: Add authentication and user management to your React app with Clerk ) ``` - ### Create a header with Clerk components + ## Create a header with Clerk components You can control which content signed-in and signed-out users can see with the [prebuilt control components](/docs/components/overview#what-are-control-components). The following example creates a header using the following components: @@ -172,7 +172,7 @@ description: Add authentication and user management to your React app with Clerk } ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/remix.mdx b/docs/quickstarts/remix.mdx index 419f7fa983..7b7909a905 100644 --- a/docs/quickstarts/remix.mdx +++ b/docs/quickstarts/remix.mdx @@ -38,7 +38,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user > If you are using Remix SPA mode, follow the [Remix SPA mode guide](/docs/references/remix/spa-mode). - ### Install `@clerk/remix` + ## Install `@clerk/remix` Clerk's Remix SDK gives you access to prebuilt components, hooks, and helpers to make user authentication easier. @@ -58,7 +58,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env.local` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -77,7 +77,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user CLERK_SECRET_KEY={{secret}} ``` - ### Configure `rootAuthLoader` + ## Configure `rootAuthLoader` To configure Clerk in your Remix app, you will need to update your root loader. This will enable you to have access to authentication state in any Remix routes. @@ -138,7 +138,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user // Your additional app code ``` - ### Configure `ClerkApp` + ## Configure `ClerkApp` Clerk provides a `ClerkApp` wrapper to provide the authentication state to your React tree. This helper works with Remix SSR out-of-the-box and follows the "higher-order component" paradigm. @@ -186,9 +186,9 @@ Learn how to use Clerk to quickly and easily add secure authentication and user export default ClerkApp(App) ``` - ### Protect your pages + ## Protect your pages - #### Client-side + ### Client-side To protect your pages on the client-side, Clerk's [prebuilt control components](/docs/components/overview) control the visibility of content based on the user's authentication state. @@ -228,7 +228,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user } ``` - #### Server-side + ### Server-side To protect your routes, use the [`getAuth()`](/docs/references/nextjs/get-auth) function in your loader. This function retrieves the authentication state from the request object, returning an `Auth` object that includes the `userId`, allowing you to determine if the user is authenticated. @@ -256,7 +256,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user } ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/quickstarts/setup-clerk.mdx b/docs/quickstarts/setup-clerk.mdx index c3c056b1bd..6e22ce4582 100644 --- a/docs/quickstarts/setup-clerk.mdx +++ b/docs/quickstarts/setup-clerk.mdx @@ -9,23 +9,23 @@ Before you can start integrating Clerk into your application, you need to create > If you're migrating from another platform, see the [migration guides](/docs/deployments/migrate-overview) to learn how to move your data to Clerk. - ### Sign into Clerk + ## Sign into Clerk [Create a Clerk account](https://dashboard.clerk.com/sign-up) or [sign into the Clerk Dashboard](https://dashboard.clerk.com/). - ### Create a Clerk application + ## Create a Clerk application If you've just created an account for the first time, you'll be taken directly to the interactive authentication setup form. Otherwise, you'll be redirected to the [Clerk Dashboard](https://dashboard.clerk.com/). To create a new app, select the **Create application** card. You'll be redirected to the interactive authentication setup form. - ### Select identifiers and social providers + ## Select identifiers and social providers Once you are in the interactive authentication setup form, you will be asked to build your authentication flow. Here, Clerk provides various options for setting up your sign-up and sign-in flows. You can choose to use email, phone, or username as [identifiers](/docs/authentication/configuration/sign-up-sign-in-options#identifiers), and you can enable [social authentication providers](/docs/authentication/social-connections/overview). Once the application is created, you can also customize your authentication flow by selecting different authentication strategies, verification methods, and more. [Learn more about sign-up and sign-in options](/docs/authentication/configuration/sign-up-sign-in-options). - ### Integrate Clerk into your application + ## Integrate Clerk into your application Now that your application is created in the Clerk Dashboard, you can integrate it into your codebase. To integrate Clerk into your application, use one of our [quickstarts](/docs/quickstarts/overview): diff --git a/docs/quickstarts/tanstack-start.mdx b/docs/quickstarts/tanstack-start.mdx index 909bb5bc3e..0490284dca 100644 --- a/docs/quickstarts/tanstack-start.mdx +++ b/docs/quickstarts/tanstack-start.mdx @@ -31,7 +31,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat - ### Install `@clerk/tanstack-start` + ## Install `@clerk/tanstack-start` Clerk's [TanStack Start SDK](/docs/references/tanstack-start/overview) gives you access to prebuilt components, React hooks, and helpers to make user authentication easier. @@ -51,7 +51,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat ``` - ### Set your Clerk API keys + ## Set your Clerk API keys Add the following keys to your `.env` file. These keys can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -70,7 +70,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat CLERK_SECRET_KEY={{secret}} ``` - ### Add `createClerkHandler()` + ## Add `createClerkHandler()` TanStack's [`createStartHandler()`](https://tanstack.com/router/latest/docs/framework/react/start/getting-started#the-server-entry-point) creates a server-side handler that determines which routes and loaders need to be executed when the user hits a given route. @@ -92,7 +92,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat )(defaultStreamHandler) ``` - ### Add `` to your app + ## Add `` to your app @@ -132,9 +132,9 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat } ``` - ### Protect your pages + ## Protect your pages - #### Client-side + ### Client-side To protect your pages on the client-side, you can use Clerk's [prebuilt control components](/docs/components/overview#what-are-control-components) that control the visibility of content based on the user's authentication state. @@ -177,7 +177,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat } ``` - #### Server-side + ### Server-side To protect your routes, create a [server function](https://tanstack.com/router/latest/docs/framework/react/start/server-functions) that checks the user's authentication state via the [`getAuth()`](/docs/references/tanstack-start/get-auth) method. If the user is not authenticated, they are redirected to a sign-in page. If authenticated, the user's `userId` is passed to the route, allowing access to the `` component, which welcomes the user and displays their `userId`. The [`beforeLoad()`](https://tanstack.com/router/latest/docs/framework/react/api/router/RouteOptionsType#beforeload-method) method ensures authentication is checked before loading the page, and the [`loader()`](https://tanstack.com/router/latest/docs/framework/react/api/router/RouteOptionsType#loader-method) method returns the user data for use in the component. @@ -219,7 +219,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat } ``` - ### Create your first user + ## Create your first user Run your project with the following command: diff --git a/docs/references/astro/react.mdx b/docs/references/astro/react.mdx index 38eeb6e23e..eb54d976b5 100644 --- a/docs/references/astro/react.mdx +++ b/docs/references/astro/react.mdx @@ -8,7 +8,7 @@ Astro provides an [integration](https://docs.astro.build/en/guides/integrations- If you have not set up your Astro application to work with Clerk, see the [quickstart guide](/docs/quickstarts/astro). - ### Install `@astrojs/react` + ## Install `@astrojs/react` Add the [Astro React integration](https://docs.astro.build/en/guides/integrations-guide/react/) to your project: @@ -26,7 +26,7 @@ If you have not set up your Astro application to work with Clerk, see the [quick ``` - ### Update `astro.config.mjs` + ## Update `astro.config.mjs` Add Clerk and React integrations to your Astro configuration: @@ -43,11 +43,11 @@ If you have not set up your Astro application to work with Clerk, see the [quick }) ``` - ### Use Clerk components + ## Use Clerk components You can use the [prebuilt components](/docs/components/overview) in your Astro pages or regular React components. - #### Astro pages + ### Astro pages The following example demonstrates how to use Clerk components in Astro pages. @@ -81,7 +81,7 @@ If you have not set up your Astro application to work with Clerk, see the [quick ``` - #### React components + ### React components The following example demonstrates how to use Clerk components in React components. @@ -103,7 +103,7 @@ If you have not set up your Astro application to work with Clerk, see the [quick } ``` - ### Use stores in your React components + ## Use stores in your React components Clerk Astro provides a set of useful [stores](/docs/references/astro/overview#client-side-helpers) that give you access to the [`Clerk`](/docs/references/javascript/clerk/clerk){{ target: '_blank' }} object, and helper methods for signing in and signing up. diff --git a/docs/references/chrome-extension/add-react-router.mdx b/docs/references/chrome-extension/add-react-router.mdx index f50eec3a12..f678523a09 100644 --- a/docs/references/chrome-extension/add-react-router.mdx +++ b/docs/references/chrome-extension/add-react-router.mdx @@ -32,7 +32,7 @@ description: Learn how to add React Router to your React app using their Data AP This tutorial demonstrates how to integrate React Router into your Chrome Extension application using the [Data API router](https://reactrouter.com/en/main/routers/picking-a-router#using-v64-data-apis). - ### Install `react-router-dom` + ## Install `react-router-dom` React Router is a lightweight, fully-featured routing library. To install it in your project, run the following command: @@ -43,7 +43,7 @@ This tutorial demonstrates how to integrate React Router into your Chrome Extens > [!IMPORTANT] > This guide assumes you're using Plasmo to build your Chrome Extension, so you must use `pnpm` as your package manager. - ### Create routes + ## Create routes 1. In the `src/` directory, create a `popup/` directory. 1. In the `popup/` directory, create a `routes/` directory. @@ -101,7 +101,7 @@ This tutorial demonstrates how to integrate React Router into your Chrome Extens ``` - ### Create layouts + ## Create layouts 1. Delete your `src/popup.tsx` file. 1. In your `src/popup/` directory, create a `layouts/` directory. @@ -153,7 +153,7 @@ This tutorial demonstrates how to integrate React Router into your Chrome Extens ``` - ### Configure layouts and routes with `createMemoryRouter` + ## Configure layouts and routes with `createMemoryRouter` [React Router's `createMemoryRouter`](https://reactrouter.com/en/main/routers/create-memory-router) is a router that uses memory to store the state of the router instead of the browser's history. This is useful for creating a router in a non-browser environment like a Chrome Extension. @@ -192,7 +192,7 @@ This tutorial demonstrates how to integrate React Router into your Chrome Extens } ``` - ### Test the integration + ## Test the integration 1. Run your project with the following command: ```bash {{ filename: 'terminal' }} diff --git a/docs/references/chrome-extension/sync-host.mdx b/docs/references/chrome-extension/sync-host.mdx index f00e995923..547c22ecba 100644 --- a/docs/references/chrome-extension/sync-host.mdx +++ b/docs/references/chrome-extension/sync-host.mdx @@ -12,7 +12,7 @@ Clerk allows you to sync the authentication state from your web app to your Chro > This guide assumes assumes that you have followed the [Chrome Extension Quickstart](/docs/quickstarts/chrome-extension) and then the [Add React Router](/docs/references/chrome-extension/add-react-router) guide. - ### Add `PLASMO_PUBLIC_CLERK_SYNC_HOST` to your environment variables + ## Add `PLASMO_PUBLIC_CLERK_SYNC_HOST` to your environment variables The `PLASMO_PUBLIC_CLERK_SYNC_HOST` environment variable defines the host that the Chrome Extension will sync with. @@ -42,7 +42,7 @@ Clerk allows you to sync the authentication state from your web app to your Chro - ### Add `syncHost` prop to your `` + ## Add `syncHost` prop to your `` Add the `syncHost` prop to your Chrome Extension's `` component. This prop tells the `` which host to sync with. @@ -91,7 +91,7 @@ Clerk allows you to sync the authentication state from your web app to your Chro } ``` - ### Configure `host_permissions` + ## Configure `host_permissions` `host_permissions` specifies which hosts, or websites, will have permission to sync auth state with your app. It accepts an array, allowing you to add more than one host. @@ -108,7 +108,7 @@ Clerk allows you to sync the authentication state from your web app to your Chro } ``` - ### Add the Extension's ID to your web app's `allowed_origins` + ## Add the Extension's ID to your web app's `allowed_origins` To allow your Chrome Extension to sync with your web app, you must add the extension's ID to your web app's `allowed_origins`. diff --git a/docs/references/expo/local-credentials.mdx b/docs/references/expo/local-credentials.mdx index ecd1ce0080..7c3b8f43ff 100644 --- a/docs/references/expo/local-credentials.mdx +++ b/docs/references/expo/local-credentials.mdx @@ -12,7 +12,7 @@ This guide shows you how to use the `useLocalCredentials()` hook to enhance your > Be aware that this works only for sign in attempts with the password strategy. - ### Install the necessary peer dependencies + ## Install the necessary peer dependencies These packages are required to be installed in order to use the `useLocalCredentials()` hook. @@ -30,14 +30,14 @@ This guide shows you how to use the `useLocalCredentials()` hook to enhance your ``` - ### Update `app.json` + ## Update `app.json` Update your app.json file as instructed in the Expo documentation: - [`expo-local-authentication`](https://docs.expo.dev/versions/latest/sdk/local-authentication/#configuration-in-appjsonappconfigjs) - [`expo-secure-store`](https://docs.expo.dev/versions/latest/sdk/securestore/#configuration-in-appjsonappconfigjs) - ### Securely store/access the user's credentials during sign in + ## Securely store/access the user's credentials during sign in The following example demonstrates how to use `useLocalCredentials()` in a custom flow for signing users in. @@ -113,7 +113,7 @@ This guide shows you how to use the `useLocalCredentials()` hook to enhance your } ``` - ### Delete credentials while user is logged in + ## Delete credentials while user is logged in The following example demonstrates how to use the `userOwnsCredentials` and `clearCredentials` properties of the `useLocalCredentials()` hook in order to remove the stored credentials if those belong to the signed in user. @@ -139,7 +139,7 @@ This guide shows you how to use the `useLocalCredentials()` hook to enhance your } ``` - ### Update credentials while user is logged in + ## Update credentials while user is logged in The following example demonstrates how to use `userOwnsCredentials` and `setCredentials` properties of the `useLocalCredentials()` hook in order to update the stored credentials if those belong to the signed in user. diff --git a/docs/references/expo/web-support/custom-signup-signin-pages.mdx b/docs/references/expo/web-support/custom-signup-signin-pages.mdx index 5890a38cdf..e0d47a0dd1 100644 --- a/docs/references/expo/web-support/custom-signup-signin-pages.mdx +++ b/docs/references/expo/web-support/custom-signup-signin-pages.mdx @@ -8,7 +8,7 @@ This guide shows you how to use the [``](/docs/components/authenticati This guide uses [Expo Router](https://docs.expo.dev/router/introduction/) and the [platform-specific extensions](https://docs.expo.dev/router/create-pages/#platform-specific-extensions) to build the sign-up and sign-in pages specifically for the **web** platform. - ### Build a sign-up page + ## Build a sign-up page The following example demonstrates how to render the [``](/docs/components/authentication/sign-up) component. @@ -20,7 +20,7 @@ This guide uses [Expo Router](https://docs.expo.dev/router/introduction/) and th } ``` - ### Build a sign-in page + ## Build a sign-in page The following example demonstrates how to render the [``](/docs/components/authentication/sign-in) component. @@ -32,7 +32,7 @@ This guide uses [Expo Router](https://docs.expo.dev/router/introduction/) and th } ``` - ### Visit your new pages + ## Visit your new pages To run your project, use the following command: diff --git a/docs/references/ios/sign-in-with-apple.mdx b/docs/references/ios/sign-in-with-apple.mdx index 6828cfb4cc..ae407fae2e 100644 --- a/docs/references/ios/sign-in-with-apple.mdx +++ b/docs/references/ios/sign-in-with-apple.mdx @@ -9,15 +9,15 @@ description: Learn how to use Clerk to natively Sign in with Apple. This guide will teach you how to add native Sign in with Apple to your Clerk apps on Apple platforms. - ### Configure the Apple social connection + ## Configure the Apple social connection To support native Sign in with Apple, you need to configure the Apple social connection in the Clerk Dashboard. To do so, follow the **native-specific instructions** in the [OAuth with Apple guide](/docs/authentication/social-connections/apple). - ### Add the Sign in with Apple capability to your app + ## Add the Sign in with Apple capability to your app [Add the Sign in with Apple capability to your app](https://developer.apple.com/documentation/xcode/configuring-sign-in-with-apple#Add-the-Sign-in-with-Apple-capability-to-your-app). - ### Obtain an Apple ID Credential + ## Obtain an Apple ID Credential To authenticate with Apple and Clerk, you need to obtain an [Apple ID Credential](https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidcredential). @@ -29,7 +29,7 @@ This guide will teach you how to add native Sign in with Apple to your Clerk app > [!NOTE] > You must set the nonce property of the `ASAuthorizationAppleIDRequest` when requesting an Apple ID Credential in order to authenticate with Clerk. - ### Build your sign-in flow + ## Build your sign-in flow Once you have obtained your [Apple ID Credential](https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidcredential), you can use it to authenticate with Clerk by calling [`SignIn.create(strategy:)`](https://swiftpackageindex.com/clerk/clerk-ios/main/documentation/clerksdk/signin/create\(strategy:\)) with a strategy of `.idToken` followed by `.authenticateWithIdToken()`. diff --git a/docs/references/nextjs/custom-signup-signin-pages.mdx b/docs/references/nextjs/custom-signup-signin-pages.mdx index 14a2899bb8..6b971df480 100644 --- a/docs/references/nextjs/custom-signup-signin-pages.mdx +++ b/docs/references/nextjs/custom-signup-signin-pages.mdx @@ -13,10 +13,8 @@ If the prebuilt components don't meet your specific needs or if you require more > [!NOTE] > Just getting started with Clerk and Next.js? See the [quickstart tutorial](/docs/quickstarts/nextjs)! -{/* TODO: Update these Steps once Steps component accepts other headings types. These headings should be H2s. */} - - ### Build a sign-up page + ## Build a sign-up page The following example demonstrates how to render the [``](/docs/components/authentication/sign-up) component. @@ -28,7 +26,7 @@ If the prebuilt components don't meet your specific needs or if you require more } ``` - ### Build a sign-in page + ## Build a sign-in page The following example demonstrates how to render the [``](/docs/components/authentication/sign-in) component. @@ -40,7 +38,7 @@ If the prebuilt components don't meet your specific needs or if you require more } ``` - ### Make the sign-up and sign-in routes public + ## Make the sign-up and sign-in routes public By default, `clerkMiddleware()` makes all routes public. **This step is specifically for applications that have configured `clerkMiddleware()` to make [all routes protected](/docs/references/nextjs/clerk-middleware#protect-all-routes).** If you have not configured `clerkMiddleware()` to protect all routes, you can skip this step. @@ -71,7 +69,7 @@ If the prebuilt components don't meet your specific needs or if you require more } ``` - ### Update your environment variables + ## Update your environment variables Update your environment variables to point to your custom sign-in and sign-up pages. Learn more about the available [environment variables](/docs/deployments/clerk-environment-variables). @@ -80,7 +78,7 @@ If the prebuilt components don't meet your specific needs or if you require more NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up ``` - ### Visit your new pages + ## Visit your new pages Run your project with the following command: diff --git a/docs/references/nextjs/trpc.mdx b/docs/references/nextjs/trpc.mdx index a8a7056a56..941b53f608 100644 --- a/docs/references/nextjs/trpc.mdx +++ b/docs/references/nextjs/trpc.mdx @@ -27,7 +27,7 @@ description: Learn how to integrate Clerk into your Next.js Pages Router applica - ### Create Clerk authentication context + ## Create Clerk authentication context Clerk's [`Auth`](/docs/references/nextjs/auth-object) object includes important authentication information like the current user's session ID, user ID, and organization ID. It also contains methods to check for the current user's permissions and to retrieve their session token. @@ -45,7 +45,7 @@ description: Learn how to integrate Clerk into your Next.js Pages Router applica export type Context = trpc.inferAsyncReturnType ``` - ### Create tRPC context + ## Create tRPC context Create the tRPC context to use the Clerk context in your tRPC queries. @@ -60,7 +60,7 @@ description: Learn how to integrate Clerk into your Next.js Pages Router applica }) ``` - ### Access the context data in your backend + ## Access the context data in your backend The tRPC context, or `ctx`, should now have access to the Clerk authentication context. Use `ctx` in your queries to access the context data in any procedure. @@ -78,7 +78,7 @@ description: Learn how to integrate Clerk into your Next.js Pages Router applica }) ``` - ### Create a protected procedure + ## Create a protected procedure In many applications, it's essential to restrict access to certain routes based on user authentication status. This ensures that sensitive data and functionality are only accessible to authorized users. tRPC middleware provides a powerful mechanism for implementing this protection within your application. @@ -116,7 +116,7 @@ description: Learn how to integrate Clerk into your Next.js Pages Router applica export const protectedProcedure = t.procedure.use(isAuthed) ``` - ### Use your protected procedure + ## Use your protected procedure Once you have created your procedure, you can use it in any router. diff --git a/docs/references/nextjs/usage-with-older-versions.mdx b/docs/references/nextjs/usage-with-older-versions.mdx index d5235b44c8..bb70cdf8ea 100644 --- a/docs/references/nextjs/usage-with-older-versions.mdx +++ b/docs/references/nextjs/usage-with-older-versions.mdx @@ -9,7 +9,7 @@ Clerk's [prebuilt components](/docs/components/overview) are exported from the ` > Clerk highly recommends updating your Next.js version as older versions won't receive any updates in the future. Read [their upgrade guides](https://nextjs.org/docs/pages/building-your-application/upgrading) to learn more. - ### Install `@clerk/nextjs` v4 + ## Install `@clerk/nextjs` v4 Install `^4.0.0` of `@clerk/nextjs`. Newer major versions of `@clerk/nextjs` only support Next.js 13+. @@ -27,7 +27,7 @@ Clerk's [prebuilt components](/docs/components/overview) are exported from the ` ``` - ### Change your `next.config.js` + ## Change your `next.config.js` As mentioned previously, the `@clerk/nextjs` components contain code for multiple Next.js versions, but depending on your version, only certain components will be used. Update your `next.config.js` to instruct webpack to ignore modules on code paths that won't be used. diff --git a/docs/references/react-router/custom-signup-signin-pages.mdx b/docs/references/react-router/custom-signup-signin-pages.mdx index 1bb6e01d6d..5a445e7093 100644 --- a/docs/references/react-router/custom-signup-signin-pages.mdx +++ b/docs/references/react-router/custom-signup-signin-pages.mdx @@ -8,7 +8,7 @@ This guide shows you how to use the [``](/docs/components/authenticati If the prebuilt components don't meet your specific needs or if you require more control over the logic, you can rebuild the existing Clerk flows using the Clerk API. For more information, see the [custom flow guides](/docs/custom-flows/overview). - ### Build a sign-up page + ## Build a sign-up page The following example demonstrates how to render the [``](/docs/components/authentication/sign-up) component. @@ -25,7 +25,7 @@ If the prebuilt components don't meet your specific needs or if you require more } ``` - ### Build a sign-in page + ## Build a sign-in page The following example demonstrates how to render the [``](/docs/components/authentication/sign-in) component. @@ -42,7 +42,7 @@ If the prebuilt components don't meet your specific needs or if you require more } ``` - ### Configure routes + ## Configure routes React Router expects you to define routes in [`app/routes.ts`](https://reactrouter.com/start/framework/routing). Add the previously created sign-in and sign-up pages to your route configuration. @@ -56,7 +56,7 @@ If the prebuilt components don't meet your specific needs or if you require more ] satisfies RouteConfig ``` - ### Configure redirect behavior + ## Configure redirect behavior Update your environment variables to point to your custom sign-up and sign-in pages. Learn more about the available [environment variables](/docs/deployments/clerk-environment-variables). @@ -69,7 +69,7 @@ If the prebuilt components don't meet your specific needs or if you require more These values control the behavior of the `` and `` components and when you visit the respective links at the bottom of each component. - ### Visit your new pages + ## Visit your new pages Run your project with the following command: diff --git a/docs/references/react-router/library-mode.mdx b/docs/references/react-router/library-mode.mdx index 87e57aef0f..4d04824993 100644 --- a/docs/references/react-router/library-mode.mdx +++ b/docs/references/react-router/library-mode.mdx @@ -30,7 +30,7 @@ description: Learn how to use Clerk with React Router in library mode to add aut React Router can be used as a framework or as a standalone library. This guide explains how to add React Router authentication to an existing React application using library mode. To use React Router as a framework instead, see the [React Router quickstart](/docs/quickstarts/react-router). - ### Install `@clerk/react-router` + ## Install `@clerk/react-router` Clerk's [React Router SDK](/docs/references/react-router/overview) provides prebuilt components, hooks, and stores to make it easy to integrate authentication and user management in your React Router app. @@ -50,7 +50,7 @@ React Router can be used as a framework or as a standalone library. This guide e ``` - ### Set your Clerk API keys + ## Set your Clerk API keys > [!NOTE] > You will not need the Clerk Secret Key in React Router's library mode, as it should never be used on the client-side. @@ -71,7 +71,7 @@ React Router can be used as a framework or as a standalone library. This guide e VITE_CLERK_PUBLISHABLE_KEY={{pub_key}} ``` - ### Add `` to your app + ## Add `` to your app @@ -100,7 +100,7 @@ React Router can be used as a framework or as a standalone library. This guide e ) ``` - ### Create a header with Clerk components + ## Create a header with Clerk components You can control which content signed-in and signed-out users can see with the [prebuilt control components](/docs/components/overview#what-are-control-components). The following example creates a header using the following components: diff --git a/docs/references/redwood/overview.mdx b/docs/references/redwood/overview.mdx index 02fcd94e68..7c2d5837b7 100644 --- a/docs/references/redwood/overview.mdx +++ b/docs/references/redwood/overview.mdx @@ -6,7 +6,7 @@ description: Learn how to use Clerk to quickly and easily add secure authenticat Learn how to use Clerk to quickly and easily add secure authentication and user management to your RedwoodJS application. - ### Create a RedwoodJS application + ## Create a RedwoodJS application ```bash {{ filename: 'terminal' }} @@ -22,7 +22,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user ``` - ### Set environment variables + ## Set environment variables Below is an example of an `.env.local` file. @@ -33,14 +33,14 @@ Learn how to use Clerk to quickly and easily add secure authentication and user CLERK_SECRET_KEY={{secret}} ``` - #### Update redwood.toml + ### Update redwood.toml ```toml {{ filename: 'redwood.toml' }} [web] includeEnvironmentVariables = ['CLERK_PUBLISHABLE_KEY'] ``` - ### Set up Redwood auth + ## Set up Redwood auth The next step is to run a Redwood CLI command to install the required packages and generate some boilerplate code: @@ -53,7 +53,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user You can now access Clerk functions through the Redwood `useAuth()` hook, which is exported from `src/web/auth.tsx`, or you can use the Clerk components directly. - ### Protecting your pages + ## Protecting your pages Below is an example of using the `useAuth()` hook to verify if the user is authenticated. This will open a modal for your user to sign in to their account. @@ -80,7 +80,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user export default HomePage ``` - ### Using Clerk components directly + ## Using Clerk components directly ```tsx {{ filename: 'index.tsx' }} import { SignInButton, UserButton } from '@clerk/clerk-react' @@ -105,7 +105,7 @@ Learn how to use Clerk to quickly and easily add secure authentication and user ``` -### Next steps +## Next steps Now that you have an application integrated with Clerk, you will want to read the following documentation: diff --git a/docs/references/remix/custom-signup-signin-pages.mdx b/docs/references/remix/custom-signup-signin-pages.mdx index f0a2cb40dd..3157c9702e 100644 --- a/docs/references/remix/custom-signup-signin-pages.mdx +++ b/docs/references/remix/custom-signup-signin-pages.mdx @@ -13,7 +13,7 @@ The functionality of the components are controlled by the instance settings you > Just getting started with Clerk and Remix? See the [quickstart tutorial](/docs/quickstarts/remix)! - ### Build your sign-up page + ## Build your sign-up page The following example demonstrates how to render the [``](/docs/components/authentication/sign-up) component. @@ -30,7 +30,7 @@ The functionality of the components are controlled by the instance settings you } ``` - ### Build your sign-in page + ## Build your sign-in page The following example demonstrates how to render the [``](/docs/components/authentication/sign-in) component. @@ -47,7 +47,7 @@ The functionality of the components are controlled by the instance settings you } ``` - ### Configure your sign-up and sign-in pages + ## Configure your sign-up and sign-in pages @@ -78,7 +78,7 @@ The functionality of the components are controlled by the instance settings you These values control the behavior of the components when you sign in or sign up and when you click on the respective links at the bottom of each component. - ### Visit your new pages + ## Visit your new pages Run your project with the following terminal command from the root directory of your project: diff --git a/docs/references/remix/spa-mode.mdx b/docs/references/remix/spa-mode.mdx index 3c92e3c79b..c0c6de3a04 100644 --- a/docs/references/remix/spa-mode.mdx +++ b/docs/references/remix/spa-mode.mdx @@ -25,7 +25,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. > If you are using Remix with SSR, follow the [Remix quickstart](/docs/quickstarts/remix). - ### Install `@clerk/remix` + ## Install `@clerk/remix` Once you have a Remix application ready, you need to install Clerk's Remix SDK. This gives you access to our prebuilt components and hooks for Remix applications. @@ -43,7 +43,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. ``` - ### Set your environment variables + ## Set your environment variables Add your Clerk Publishable Key to your `.env` file. It can always be retrieved from the [**API keys**](https://dashboard.clerk.com/last-active?path=api-keys) page in the Clerk Dashboard. @@ -64,7 +64,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. VITE_CLERK_PUBLISHABLE_KEY={{pub_key}} ``` - ### Configure `ClerkApp` + ## Configure `ClerkApp` Clerk provides a `ClerkApp` wrapper to provide the authentication state to your React tree. @@ -98,7 +98,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. }) ``` - ### Update your paths through ClerkApp options + ## Update your paths through ClerkApp options Next, add paths to your `ClerkApp` options to control the behavior of the components when you sign in or sign up and when you click on the respective links at the bottom of each component. @@ -110,7 +110,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. }) ``` - ### Protecting your pages + ## Protecting your pages Clerk offers [Control Components](/docs/components/overview) that allow you to protect your pages. These components are used to control the visibility of your pages based on the user's authentication state. @@ -153,7 +153,7 @@ description: Clerk supports Remix SPA mode out-of-the-box. ``` -### Next steps +## Next steps Now that you have an application integrated with Clerk, you will want to read the following documentation: diff --git a/docs/references/ruby/overview.mdx b/docs/references/ruby/overview.mdx index 71b1475fe9..fb9b3491f7 100644 --- a/docs/references/ruby/overview.mdx +++ b/docs/references/ruby/overview.mdx @@ -4,11 +4,11 @@ description: Learn how to integrate Ruby into your Clerk application. --- - ### Create a Clerk application + ## Create a Clerk application You need to create a Clerk application in the Clerk Dashboard before you can set up Clerk Ruby. For more information, see the [setup guide](/docs/quickstarts/setup-clerk). - ### Install Ruby + ## Install Ruby Once a Clerk application has been created, you can install and then start using Clerk Ruby in your application. @@ -30,7 +30,7 @@ description: Learn how to integrate Ruby into your Clerk application. $ gem install clerk-sdk-ruby ``` - ### Instantiate a `Clerk::SDK` instance + ## Instantiate a `Clerk::SDK` instance To access all [Backend API endpoints](/docs/reference/backend-api){{ target: '_blank' }}, you need to instantiate a `Clerk::SDK` instance. @@ -59,7 +59,7 @@ description: Learn how to integrate Ruby into your Clerk application. ) ``` - ### Configuration + ## Configuration The SDK can be configured in three ways: environment variables, configuration singleton and constructor arguments. The priority goes like this: @@ -67,7 +67,7 @@ description: Learn how to integrate Ruby into your Clerk application. - Configuration object - Environment variables - #### Constructor arguments + ### Constructor arguments You can customize each instance of the `Clerk::SDK` object by passing keyword arguments to the constructor: @@ -79,7 +79,7 @@ description: Learn how to integrate Ruby into your Clerk application. ) ``` - #### Configuration object + ### Configuration object If an argument is not provided, the configuration object is looked up, which falls back to the associated environment variable. Here's an example with all supported configuration settings their environment variable equivalents: @@ -94,7 +94,7 @@ description: Learn how to integrate Ruby into your Clerk application. For more information, see [Faraday's documentation](https://lostisland.github.io/faraday/#/). - #### Environment variables + ### Environment variables Here's a list of all environment variables the SDK uses: diff --git a/docs/testing/cypress/overview.mdx b/docs/testing/cypress/overview.mdx index cf29c71c31..60c43969f2 100644 --- a/docs/testing/cypress/overview.mdx +++ b/docs/testing/cypress/overview.mdx @@ -14,7 +14,7 @@ This guide will help you set up your environment for creating Clerk-authenticate > Check out the [demo repo](https://github.com/clerk/clerk-cypress-nextjs) that tests a Clerk-powered application using [Testing Tokens](/docs/testing/overview#testing-tokens). - ### Install `@clerk/testing` + ## Install `@clerk/testing` Clerk's testing package provides integration helpers for popular testing frameworks. Run the following command to install it: @@ -32,7 +32,7 @@ This guide will help you set up your environment for creating Clerk-authenticate ``` - ### Set your API keys + ## Set your API keys In your test runner, set your Publishable and Secret Keys as the `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY` environment variables, respectively. @@ -45,7 +45,7 @@ This guide will help you set up your environment for creating Clerk-authenticate > [!WARNING] > Ensure you provide the Secret Key in a secure manner, to avoid leaking it to third parties. For example, if you are using GitHub Actions, refer to [_Using secrets in GitHub Actions_](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions). - ### Global setup + ## Global setup To set up Clerk with Cypress, call the `clerkSetup()` function in your [`cypress.config.ts`](https://docs.cypress.io/guides/references/configuration) file. @@ -65,7 +65,7 @@ This guide will help you set up your environment for creating Clerk-authenticate `clerkSetup()` will retrieve a [Testing Token](/docs/testing/overview#testing-tokens) once the test suite starts, making it available for all subsequent tests. - ### Use Clerk Testing Tokens + ## Use Clerk Testing Tokens Now that Cypress is configured with Clerk, use the `setupClerkTestingToken()` function in your tests to integrate the Testing Token. See the following example: diff --git a/docs/testing/playwright/overview.mdx b/docs/testing/playwright/overview.mdx index db52bdaf37..dfa0dff650 100644 --- a/docs/testing/playwright/overview.mdx +++ b/docs/testing/playwright/overview.mdx @@ -9,7 +9,7 @@ description: Use Playwright to write end-to-end tests with Clerk. > See the [demo repo](https://github.com/clerk/clerk-playwright-nextjs) that demonstrates testing a Clerk-powered application using [Testing Tokens](/docs/testing/overview#testing-tokens). To run the tests, you'll need dev instance Clerk API keys, a test user with username and password, and have username and password authentication enabled in the Clerk Dashboard. - ### Install `@clerk/testing` + ## Install `@clerk/testing` Clerk's testing package provides integration helpers for popular testing frameworks. Run the following command to install it: @@ -27,7 +27,7 @@ description: Use Playwright to write end-to-end tests with Clerk. ``` - ### Set your API keys + ## Set your API keys In your test runner, set your Publishable and Secret Keys as the `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY` environment variables, respectively. @@ -39,7 +39,7 @@ description: Use Playwright to write end-to-end tests with Clerk. > [!WARNING] > Ensure that the Secret Key is provided securely to prevent exposure to third parties. For example, if you are using GitHub Actions, refer to [_Using secrets in GitHub Actions_](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions). - ### Configure Playwright with Clerk + ## Configure Playwright with Clerk The `clerkSetup()` function obtains a Testing Token when your test suite starts, making it available for all subsequent tests to use. This ensures that you don't have to manually generate a Testing Token for each test. @@ -60,7 +60,7 @@ description: Use Playwright to write end-to-end tests with Clerk. > [!NOTE] > You can manually set the Testing Token by using the `CLERK_TESTING_TOKEN` environment variable instead of calling `clerkSetup()`. - ### Use `setupClerkTestingToken()` + ## Use `setupClerkTestingToken()` Now that Playwright is configured with Clerk, you can use the `setupClerkTestingToken()` function to include the Testing Token in individual test cases. This function injects the Testing Token for the specific test, ensuring the test can bypass Clerk's bot detection mechanisms. See the following example: diff --git a/docs/testing/playwright/test-authenticated-flows.mdx b/docs/testing/playwright/test-authenticated-flows.mdx index b3d1af2c4b..4c3054ef64 100644 --- a/docs/testing/playwright/test-authenticated-flows.mdx +++ b/docs/testing/playwright/test-authenticated-flows.mdx @@ -11,7 +11,7 @@ This guide demonstrates how to save the auth state globally and load it in your > See the [demo repo](https://github.com/clerk/clerk-playwright-nextjs) that demonstrates testing a Clerk-powered application using [Testing Tokens](/docs/testing/overview#testing-tokens). To run the tests, you'll need dev instance Clerk API keys, a test user with username and password, and have username and password authentication enabled in the Clerk Dashboard. - ### Create a storage directory + ## Create a storage directory Create a `playwright/.clerk` directory and add it to your `.gitignore`. Once the auth state is generated, it will be stored to a file in this directory. Later on, tests will reuse this state and start already authenticated. @@ -20,7 +20,7 @@ This guide demonstrates how to save the auth state globally and load it in your echo $'\nplaywright/.clerk' >> .gitignore ``` - ### Prepare auth state for your tests + ## Prepare auth state for your tests Authenticate and save the auth state in your [global setup file](https://playwright.dev/docs/test-global-setup-teardown). @@ -66,11 +66,11 @@ This guide demonstrates how to save the auth state globally and load it in your }) ``` - ### Load the stored auth state in your tests + ## Load the stored auth state in your tests You can either load the stored auth state [in the config](#-in-the-config) or directly [in a test file](#-in-a-test-file). Loading in the config is useful if you want to authenticate once and reuse the same auth state for all tests or groups of tests. Loading in a test file is useful if you want to authenticate for a specific test case. - #### In the config + ### In the config In your `playwright.config.ts`, create a `global setup` project and declare it as a [dependency](https://playwright.dev/docs/test-projects#dependencies) for all your testing projects. This means that the `global setup` project will always run before all the tests, and because it's where you prepared auth state, it will authenticate before all the tests. All testing projects should use the authenticated state as `storageState`. @@ -103,7 +103,7 @@ This guide demonstrates how to save the auth state globally and load it in your ] ``` - #### In a test file + ### In a test file To use the stored auth state in a test file, see the following example: diff --git a/docs/webhooks/loops.mdx b/docs/webhooks/loops.mdx index eae8cb1dc3..73bffcb29f 100644 --- a/docs/webhooks/loops.mdx +++ b/docs/webhooks/loops.mdx @@ -25,7 +25,7 @@ description: Learn how to add your Clerk users to your Loops audience, and send This tutorial demonstrates how to sync your Clerk users to Loops so you can email users with Loop's email marketing tools. You will also learn how to send email sequences to new Clerk users. - ### Create a Clerk webhook endpoint in Loops + ## Create a Clerk webhook endpoint in Loops Loops' [Incoming webhooks](https://loops.so/docs/integrations/incoming-webhooks) feature lets Loops accept webhooks directly from external platforms like Clerk. @@ -34,7 +34,7 @@ This tutorial demonstrates how to sync your Clerk users to Loops so you can emai 1. Navigate to the **Clerk** settings page in the [Loops dashboard](https://app.loops.so/settings?page=clerk). 1. Save the **Endpoint URL** somewhere secure; you're going to need it for Clerk's webhook configuration. - ### Create a webhook in the Clerk Dashboard + ## Create a webhook in the Clerk Dashboard You must create a new Clerk webhook endpoint so that it can send data to Loops. Here is where you will provide the **Endpoint URL** from the last step, and then choose the events you want to listen to. @@ -45,14 +45,14 @@ This tutorial demonstrates how to sync your Clerk users to Loops so you can emai 1. Select the **Create** button. 1. You will be redirected to your endpoint's settings page. Leave this page open. - ### Add your signing secret in Loops + ## Add your signing secret in Loops To keep communication secure between the two platforms: 1. On the Clerk endpoint's settings page, copy the **Signing Secret**. It should be on the right side of the page with an eye icon next to it. 1. Back in the Loops dashboard, add the **Signing Secret**. - ### Configure Loops events + ## Configure Loops events The final step is to configure which events Loops should accept from Clerk and what Loops should do with the data. diff --git a/docs/webhooks/sync-data.mdx b/docs/webhooks/sync-data.mdx index 7f6267e2c5..a7024f6bf3 100644 --- a/docs/webhooks/sync-data.mdx +++ b/docs/webhooks/sync-data.mdx @@ -39,7 +39,7 @@ Clerk offers many events, but three key events include: These steps apply to any Clerk event. To make the setup process easier, it's recommended to keep two browser tabs open: one for your Clerk [**Webhooks**](https://dashboard.clerk.com/last-active?path=webhooks) page and one for your [ngrok dashboard](https://dashboard.ngrok.com). - ### Set up ngrok + ## Set up ngrok To test a webhook locally, you need to expose your local server to the internet. This guide uses [ngrok](https://ngrok.com/) which creates a **forwarding URL** that sends the webhook payload to your local server. @@ -51,7 +51,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec 1. Paste the command in your terminal and change the port number to match your server's port. For this guide, replace `80` with `3000`, then run the command in your terminal. It will generate a **Forwarding** URL. It should resemble `https://fawn-two-nominally.ngrok-free.app`. 1. Save your **Forwarding** URL somewhere secure. Close the panel. - ### Set up a webhook endpoint + ## Set up a webhook endpoint 1. In the Clerk Dashboard, navigate to the [**Webhooks**](https://dashboard.clerk.com/last-active?path=webhooks) page. 1. Select **Add Endpoint**. @@ -59,7 +59,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec 1. In the **Subscribe to events** section, scroll down and select `user.created`. 1. Select **Create**. You'll be redirected to your endpoint's settings page. Keep this page open. - ### Add your Signing Secret to `.env.local` + ## Add your Signing Secret to `.env.local` To verify the webhook payload, you'll need your endpoint's **Signing Secret**. Since you don't want this secret exposed in your codebase, store it as an environment variable in your `.env.local` file during local development. @@ -72,11 +72,11 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec SIGNING_SECRET=whsec_123 ``` - ### Set the webhook route as public in your Middleware + ## Set the webhook route as public in your Middleware Incoming webhook events don't contain auth information. They come from an external source and aren't signed in or out, so the route must be public to allow access. If you're using `clerkMiddleware()`, ensure that the `/api/webhooks(.*)` route is set as public. For information on configuring routes, see the [`clerkMiddleware()` guide](/docs/references/nextjs/clerk-middleware). - ### Install `svix` + ## Install `svix` Clerk uses [`svix`](https://www.npmjs.com/package/svix) to deliver webhooks, so you'll use it to verify the webhook signature. Run the following command in your terminal to install the package: @@ -94,7 +94,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec ``` - ### Create the endpoint + ## Create the endpoint Set up a Route Handler that uses `svix` to verify the incoming Clerk webhook and process the payload. @@ -239,7 +239,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec - ### Narrow to a webhook event for type inference + ## Narrow to a webhook event for type inference `WebhookEvent` encompasses all possible webhook types. Narrow down the event type for accurate typing for specific events. @@ -265,7 +265,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec - `SMSMessageJSON` - `UserJSON` - ### Test the webhook + ## Test the webhook 1. Start your Next.js server. 1. In your endpoint's settings page in the Clerk Dashboard, select the **Testing** tab. @@ -273,14 +273,14 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec 1. Select **Send Example**. 1. In the **Message Attempts** section, confirm that the event is labeled with `Succeeded`. - #### Handling failed messages + ### Handling failed messages 1. In the **Message Attempts** section, select the event labeled with `Failed`. 1. Scroll down to the **Webhook Attempts** section. 1. Toggle the arrow next to the **Status** column. 1. Review the error. Solutions vary by error type. For more information, refer to the [Debug your webhooks](/docs/webhooks/debug-your-webhooks) guide. - ### Trigger the webhook + ## Trigger the webhook To trigger the `user.created` event, you can do either one of the following: @@ -290,7 +290,7 @@ These steps apply to any Clerk event. To make the setup process easier, it's rec You should be able to see the webhook's payload logged to your terminal. You can also check the Clerk Dashboard to see the webhook attempt, the same way you did when [testing the webhook](#test-the-webhook). -### Configure your production instance +## Configure your production instance 1. When you're ready to deploy your app to production, follow [the guide on deploying your Clerk app to production](/docs/deployments/overview). 1. Create your production webhook by following the steps in the previous [Set up a webhook endpoint](#set-up-a-webhook-endpoint) section. In the **Endpoint URL** field, instead of pasting the ngrok URL, paste your production app URL. diff --git a/styleguides/SSO.STYLEGUIDE.MD b/styleguides/SSO.STYLEGUIDE.MD index d5dd940c85..24bd4998dd 100644 --- a/styleguides/SSO.STYLEGUIDE.MD +++ b/styleguides/SSO.STYLEGUIDE.MD @@ -38,7 +38,7 @@ These are the guidelines we use to write our SSO guides. - The `Test your OAuth` section should be included in the `` and formatted as follows: ```mdx - ### Test your OAuth + ## Test your OAuth The simplest way to test your OAuth is to visit your Clerk app's [Account Portal](/docs/customization/account-portal/overview), which is available for all Clerk apps out-of-the-box. From ce044c330bb2370978fdfdd3d0de680590f46736 Mon Sep 17 00:00:00 2001 From: Roy Anger Date: Thu, 12 Dec 2024 22:45:41 -0500 Subject: [PATCH 3/9] feat: Add faq section to help address some common questions (#1771) Co-authored-by: vi --- docs/references/chrome-extension/overview.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/references/chrome-extension/overview.mdx b/docs/references/chrome-extension/overview.mdx index 2f2ba6ffd8..992d897d24 100644 --- a/docs/references/chrome-extension/overview.mdx +++ b/docs/references/chrome-extension/overview.mdx @@ -52,3 +52,19 @@ See [the Chrome Extension deployment guide](/docs/deployments/deploy-chrome-exte ## Configure a consistent CRX ID A Chrome Extension can be identified by its unique CRX ID, similar to how a website can be identified by its domain. The CRX ID rotates by default, which can cause errors with the Clerk integration. [Learn how to configure a consistent CRX ID](/docs/references/chrome-extension/configure-consistent-crx-id) so that your extension will have a stable, unchanging key. + +## Frequently asked questions (FAQ) + +### Can I use Clerk in a content script? + +Unfortunately, no. Clerk has strict security restrictions on the allowed origins for requests from the application or extension to Clerk's API. Since a content script could run on any domain, there is no way to enforce origin restrictions. + +### Why can't I use OAuth, SAML, or Email Links with the extension popup or side panel? + +OAuth and SAML require a redirect back from the Identity Provider (IdP), which is not currently supported in popups or side panels. + +Email Links require the popup to remain open while the user checks their email, copies the link, and returns to paste it. Since popups close as soon as a user clicks outside of them, this flow is not possible. The sign-in status resets when the popup closes. + +### Why aren't options like Google One Tap or Web3 available in a popup or side panel? + +Chrome Extensions can't load code from remote sources. Features like Google One Tap, Web3, and some other authentication options require loading remote code to function. This functionality is removed from the Chrome Extension SDK to ensure extensions using Clerk are not rejected by the Chrome Web Store. From 93b0cd943c5aacd345e2a346090287c315d2c152 Mon Sep 17 00:00:00 2001 From: Alexis Aguilar <98043211+alexisintech@users.noreply.github.com> Date: Fri, 13 Dec 2024 11:09:39 -0500 Subject: [PATCH 4/9] (enterprise-connections/overview) remove info about pricing (#1802) --- docs/authentication/enterprise-connections/overview.mdx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/authentication/enterprise-connections/overview.mdx b/docs/authentication/enterprise-connections/overview.mdx index 5a8df7cb68..db77f71d6a 100644 --- a/docs/authentication/enterprise-connections/overview.mdx +++ b/docs/authentication/enterprise-connections/overview.mdx @@ -47,7 +47,7 @@ It is ultimately the app's responsibility to handle this unauthenticated state a ### SAML vs. EASIE -The primary security difference between EASIE SSO and SAML SSO is that EASIE depends on a multi-tenant identity provider, while SAML depends on a single-tenant identity provider. Relying on a multi-tenant provider **increases** the risk that a user from one tenant will mistakenly be granted access to the resources of another tenant. While Clerk implements [measures to address this risk](https://easie.dev/#mitigating-tenant-crossover-vulnerabilities), apps that require single-tenant IdPs should opt for SAML. +The primary security difference between EASIE SSO and SAML SSO is that EASIE depends on a multi-tenant identity provider, while SAML depends on a single-tenant identity provider. Relying on a multi-tenant provider **increases** the risk that a user from one tenant will mistakenly be granted access to the resources of another tenant. While Clerk implements [measures to address this risk](https://easie.dev/#mitigating-tenant-crossover-vulnerabilities:~:text=4.%20Mitigating%20tenant%20crossover%20vulnerabilities), apps that require single-tenant IdPs should opt for SAML. For more information, see the [EASIE docs](https://easie.dev#security). @@ -78,7 +78,3 @@ Yes, for SAML only. Clerk supports both Service Provider-initiated (SP-initiated For development instances, Enterprise connections are always free but limited to a maximum of 25. Production instances require the Pro plan and the Enhanced Authentication Add-on. Please see [pricing](/pricing){{ target: '_blank' }} for more information. - -### Can I get a bulk discount? - -Yes, [contact support](/contact/support){{ target: '_blank' }} to work out a custom plan. From 3ee5b0657c0ccacd78ea35f1bdce53d8b53510a9 Mon Sep 17 00:00:00 2001 From: Mike Wickett Date: Fri, 13 Dec 2024 11:11:34 -0500 Subject: [PATCH 5/9] remove old api-keys doc (#1804) --- docs/upgrade-guides/api-keys.mdx | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 docs/upgrade-guides/api-keys.mdx diff --git a/docs/upgrade-guides/api-keys.mdx b/docs/upgrade-guides/api-keys.mdx deleted file mode 100644 index 67bb9cb24a..0000000000 --- a/docs/upgrade-guides/api-keys.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Publishable and Secret Keys -description: Dive into Clerk's latest V3 update. ---- - -> [!NOTE] -> If your application was created after January 18, 2023, you're already using Publishable and Secret Keys. - -In early Clerk SDKs, developers were required to configure three keys: - -- Frontend API URL -- API key -- JWT key (depending on the SDK version) - -New SDKs have replaced these with two keys: - -- Publishable Key (prefixed with `pk_test_` or `pk_live_`) -- Secret Key (prefixed with `sk_test_` or `sk_live_`) - -The name and format of these keys are common among developer tools, and we adopted them to provide a more familiar developer experience. - -Although legacy keys will remain operational, we have updated our documentation and code samples to use the new Publishable Key and Secret Key format. - -> [!CAUTION] -> Legacy keys cannot be mixed with the new Publishable and Secret Keys. It is important that you replace all keys at once. - -We recommend updating at your earliest convenience. From d1f8f863acf27bc9bf93bbcee290e04cbc169d79 Mon Sep 17 00:00:00 2001 From: Brad Cornes Date: Fri, 13 Dec 2024 17:34:11 +0000 Subject: [PATCH 6/9] Callout updates (#1805) Co-authored-by: Alexis Aguilar <98043211+alexisintech@users.noreply.github.com> --- .github/media/callout-details.png | Bin 0 -> 65610 bytes .github/media/callouts.png | Bin 129094 -> 171051 bytes CONTRIBUTING.md | 27 +++++++++++++++++++++++++-- prettier-mdx.mjs | 4 ++-- 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 .github/media/callout-details.png diff --git a/.github/media/callout-details.png b/.github/media/callout-details.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0e922a6cf7dfd116ed8b554b645cdf428fb0b1 GIT binary patch literal 65610 zcmeFZXIPV4(>4q!f^-WgSU^RZH0dDK0;2R5=^(u$p+gdih>C#Hdq8>(HFP3f=|~AZ z^bP?61PFmQ?0rA)eZS9f>)wC9@7Mmr;l*0lTr;y~opa8tg&)*Z6sRefD2RxNs1=_- z)gU4wTP7kRP9?uU_|1n+X%!+O5-uC9SFW#=l_boZ9C%I5onBk;dOA20#)*g|Wjvit z&Fm~(SzcRM**HqwMb{$kve=kQ-316M^D8?)v9Pvz?(Jfs>8+w==51#tZhlurnnKc3 zf*`=b!qt?;)4|>mDB&q}_Yb)egnys?n(r>lA5&cIr0%{_R%3bM^m24H z_2h8`-a8ZVr;Mi-KrbC5*HDOSr3z<-esn0{>+`!4Z6C zBYY2e`T72Hx`n6BFQ%W3{CoP@%M!0NEPzh-ZfBpDy8BQ_i0|PaqW&1u{mt0FhqN7S z2>J^A@!Hu3B-Cs?E$nrl+BjG^0{;*z^ibq~jlTMiQ2~Adp??o+11(&hI5`mBB?#3t zbFm-@v37F3%Xj8;zJEELuzGy|clihp|2F_E90{xLLRen4)5$I(B8oDbCr{KApFCkv zb8)h?v9};1dj26gmP|`?<+9(Y&%l$%lyC3e-(`Ew?iWR;w_HC;uIMNG{tj!-NOUXx zD|M}>YPx;e9|J<~iafnK{&fTwz)jLo^Qzc?hu4|B7T4p0t`oNsK*e{-2%bVVA-x7f z--Y1MS^emVztg>Fxdb*UuR1u-CXj2t^+Fb;Y zh|^Q!XCFE{XNib{?j*Hz&ziINUhaPr_MDrT$nEO(4erSIY=^u}T(2|a-jcD4TO_oz zi`#tc|ET#;{gTpKYT|E^Bld47h*<4fR67?lSiGJ`RulvoG|e((e3%M2I^|y~8SpukQDqU=@%rGh z&L9=0)c3B{t2&{_I-Kt>iMPR zrOr!M^2k=qd9VOP$34To@Vu9p74qGW9{$ik=DtMqdaj_?^%Bv?b3_K>&0jv2WrLP~FjMUqsS$C>o?9k5XY#S`j=ldq zXVR2!Was_V=tyT9Uw#88ycym385V)3{z5E<-^ok;?C(g-(;Ujmshz({d;c-#XS#^T`Kh65 z#9CC*a?xtku2d4FhJHnlC;RT@Tw@BDk~22FsuZAY;xKYOg>1m|!cB68#*pc&Vpn?n zfipbLoCc)K?-Hjex7-eHPn<)%Q&19X`-(uO;^-9e-5ZPqNZ8=E$=ZAXN zDL+xZ3;NKUVG?7y!+$?6FiyVfewUPz%;G(Ukj&T0#VW5L_L3shwU_nZPlh;rgPYct zfJW4B(q#LWeXE{%{Kh`%d~EP|=%Y`M!fQj<+CgodGj7{(Ph(#aqxUF3zDDG1?~KzN z*_PS)X91TQgXmsNU)G`fNKQsx_%`t^xaqq32kXbK_v9}PykGl}+2TEWe^ztWhk(E! zajR-)@rDVBYK`i27r?ytLc`}M#YI*&n>&gx#vV&NwY?{Gx1K%nN1M5-3yJRIsmDck zj9F#aAu-wC^?#JjSMS&@bS@;$J9Q$|Svan9@?T|mFwYUik)&3Y%U|$ZO-RR_tCSwe z5%VBL!#7nd@2PsJI)!$J8kbg{c1@m8&L>R~oqhF1t|cxspdn{MK~9~DLy01|^oxt1 z%ZHz^0PTnBrnwopS95NvuV^r;YwJ`1Le&k6^oqQ7DuO?LWzy8uBCdGvo#YKY(pJ_F zO>5H}FVKOx>u*FJ-E>oROYv^-4m^_DgE0wFGl#l{IxuxJ^$PVTEGEn(bP8c@jDFrs zNf&5$qp?ysNty%RwrkW|)Vrkjpkm){vX5zKxPO0u!3I6tkRw&_WN3R(abPqJsABaz z_Ul?vCvq~)#|TTW9Nm_B(K@r7X6$`RObQ}J3#I{k>7;~uDx(Jp1P7i7p8HBX$uepZ zELYq3KCQ^Kc!sN4qPboE{Jk3Wynfzvm2}lMwziVC#7~K#WXgleuh_)d+}Ko=e`MXx ziqF!{^5`zMbS-l&tGBG|G6j-hv@kB1M26y^bW+r7*fXp_m%&nXQ?)jb`BelrW6Wrb zTTH!`zQwzdy$dyvAQzh%7u}b@u`Y? z)c21_fWhkrDKL1&|_2M6ClQW6wk?A8PQ*XZi=;Q3S2_HCDLm~Ca=s9Bc z)0=%4qcz{Q!;p~lkd}q2PH0g~(MnN8Q6NTn5wpk~hg!-)x4GxLuD!{wX0JJ2pPEZs zYTVD+@tm=l{;?;yEdGt(EaM@K;FPDX&xd-Zdg+ITaryBMQyfk*XkRohvjx-|Dga$- zIBMW*aBH{+rU5^|j~zce@jn?qW-cz*y{SWO$NG)a#7$O#g_B>Pn0xElXRps}RSdby5c<&~g)wLyI zWMpmNqZZ&CJ?28hWJE|LndXEBJew-hJ0m881`~fQa564*TK=(IbtP>j_$T}Ml7M$q zzVffzIMYh`4M$3}tX6h1C+||Kr{u5?+y`1Mz86#T<)`e>iyFGCE_WgGhKA+}?awKD z?E21nZ|Ccn-~EJgsT;ezN_J_J)}#e9?BPsB;6?hz_oiJd}Jh6{uX4$OV3S`u()T zu55B~G7+%^#K7oZU5mQ<>6!}#3~!FnTv5HEA5rN_FV3(r{&A9P!W)v<4qttpIh!=w zu+cc4=-%f(k3J{{{^-fSzki>;_I+(et@n$-7y9luHm7QQ>bNV`jj91&&9@7s60yEx zos&L3XMsSm@iE{dOa=o1zghu|YFQX)monGN_?&j0dq^e$Njud5s$onT8=ZpR27Bk- z%X?&-WNT|%VH>hKEnzd+Hxm@>bZcAsr-qZR@u;i=hZsfJi|_`C7|->S?Qe4%?91${ zs!Yif1J7-`oB|SbghGX~MX=>9m99_x^pyc8Y@1<6<+$64Q= z!+sI<@vWdJO3=p3F{r_(TF=URb?Ivw)0q!qL43yR=B_D-S@(r5?b!V6qJEgLu}9sM zYx9i!9E=7b;x6tkJn339>e6|rV~0K71XfBp8duGMmUaw>C)co#H{DR-4X0a;O=MEE z)wE>H7jM^tlJK7EKWeh$vJZQ&LZc;--bQwM#EQPKlMnb$#yv$e~GfoQ+Hd<<% zuuN!LQ1NM>G?U2Du~}PtiRvL#SQ-FHgRC4g;oMB@N5vfLb`wV{htd8hsEWCg()*Fu z`-2>QkFTnzT$rA`L-c){NbNIYK$VGiL&|0AqePRB-ypLqjJ_{!66Yv%&0DwFpPT0R z+O|fdwsqdbh5O^q`QqecB`eFB+-i`9>u2;k(#u4#@0rO2zsXp5XPv%8otDeS>^bcl zBOlS~UQ47w5)sJ~DL$3c@+4lLBu&!NK5gHAa`7XvyXMDK7I!lbnMGz_d*(~E55IjQ zx!Th5^l6FyZF>DiUb-l?OKX>?u3q|l0!8cgObV8H*kU(}o53_N3(L)k>g@&)n0=MI z{KscHSt8=|fAu3(k91XMZ7^Ppgq+2X=&yc=5tHn$lmDHWSLOVOK$kwplm3;+v#*|C z9wqxLMbB*E2p}Rpy2~O+`Ilx9W|Q}o(f$pSSk%rFjCv+($?$i~qD!@6{#$M(Cm0pt z*TwyJ%wm!4mHunrv-rtgA{cdzI9~Vfm?i6%0{R>4Pvn1>oGz7*M4;^NnB_+#h5O4O zIn(YL9gD2-d2>tuzcZWId;hNkm0-(97FoXr^6yd9t{Laxho3eJ~$@JQ)H)sF?;u-PSY! zt{+fa1uP`wS6S8CFC^zM=+QCWyXW^Uf-5!kc%m9;=xikCefd|cPj-RyY7*dcgIwT+ z&59k(*;vA-zeU`W^#lJHjVZWDLawDD+juZqwp1l!Y^f+3y0^9lE6B)x0gm`3krJTf zfN1kX_9SM@XunTblGi!0ZGQK%TE=$JYJcv=dAgii1S)3N?rzC*NtPwh&ymimH|5qO zN6aLvh-){$#lgkEOTY5t4qcp#adf(6ZHGFOA$>ZNi2ZYiBgysaq{QcA3<#|8QUJ8k+GdMSsDXuLv_6H{R)4N~clNzHxqo8GiIB;={L1~RKU^n{G zyeMJaS;+?tFY5%jo!LfliDL~2hUbf`IycaXw>|qs6m#*Ve$?oQ)Rx(^Ju>pDU?s5Z zRQN@@RG5Q)(jMU@B_rY$9j~&E^kgX?m2JzeB*H|0rn>~< z_RgN1;T(a)-J_e@&F%I2b%?wn^_?mp+3hI1e}~|}3PnO8;V?E<@PLGTB(c8Qa;7OL z%d|OD34gSAN$wYx&~cRd?N~-D{m`TxLvqo+x$_Ra4dh_?ZDnlS2 zUXh%w#t|ub9{}+X_=iuYopx4{Fu;?T_pQGYU<>}s&v#7BA! z4~mceI|itoJMU{$*jrmj9MW?4%z`0af*;2|#1oT{51#iYrDRA5qP$k~ELSsIMfnwL z4Dm0VnKMKp4I5sX9JZy>xlMfDHdGd`SC&=4L6BnWU*nd4JBnHQP#LqFai?ed`=Ua8 zSU%byUs>1dw}qa6)A<}ZP_xxme7}T7>M-zw%DD5EfHI2@#UnugYr&47JyO%WJ zp#c=D^D`;S#%xkLECML7Y+-x}~Q9ZLy& ztT(IKs5|pqSn0fSfymt9Ai!79mHS(7j@Sn?( zNKnFF!Z-M@_4Si|On~7l0p61sN zc`RV|8yW0s%-OB{zjI?MKXF18Usp&8A^Z79T=o2ZVT{k~P;%}ZI;h}nz%Cip)TA}j zSqk`dwEK5Zss%RexF268L_)8B{BRYH(8@bk6F6BKwMFRMJ3KkOTKH4cT?XjC_mK2|}4 zQm5+2M(}-adaKlr^KGZ|Mer3q`@$R7_B5f=)Y8AqzJKiI76O)sdzcach(&FOWTo*C zKYr7G7x0{-9V_RJHyQw+!~rPdug?7z6Do`dh){?kC3N!q@2kspj|Hzx+~WOc+aBCZ z?@F6k+N;$(MYgILubfofw@+;Nztv;Nsk0V@`a3q z4eFmxL8QGh4pGK3)iw^bn>3a|@()-A4A}yH6S)%7Le zREEAlmT;wV`E^Vll7CJt2)x~a7{=hMEC=RD)xW=gEB3v~T*+ z%ft%6D+24(+R}c*q*diJGos zc4~5(n@|N&dtJ+@6y9j|tCR0rD%SNST^WZ>A$vu(k<8h6lOx1HdzU_cud;r{h$?Dd zvTW+(TB3y8YMeO6Dv=iAiJI64LonE+75O==7mf?q>F<$!9{r%!vAet@1= zyf)V(M(}ST=DKZP*_E^Sd-+-Rm5=m*Eoaqcl*#E;*;38G3I z2*1E~u$U6=6dr&{EUXTy21E6`jviFFH+pr;caNg`eA$5mC+CzR<&`IsAaVPk9vzY$ z!8;Z9TONPul@GKvT2$KDVi@rl& z!(Z~oAvA8xApnBd4FH->)HeEE=<%T@=7%bCwM`BuF0xW$^1^)V$K=Jl<$%H?cOV zgK0J_zB&CizfVzRxNc3Oz$PY>&)B2^S5~ls^Py#Y%`~jKk$tl0;l$5;a?o%CTT_1| zU$IE$>s;owR9iW@l~Rip-~kx)Dy5v1iJ!I#P88dp7FHaOWnriAWuZ;K%adv$X9k6c zh~$4Huq}nuJuU}j7!LR30szrf4Jl%XrnG`bnYYt6C1zZ3*B@|(|u(sAh_7`z5$9b0q^3wOsbqL zA&pI>{Z-(EH?RS#Q+nlK0`>k)QWXBP(d~c#smZ6p)=f===}E|v-FIBp2HyEp!gXEn z#9EtrVt>G*lyUo&rt8@op`Y3}s%!1`YTfWv3cf81N(sNWQ!N|)K*4zSw zNp$Re;0l_4lcD#$qBav35wYP=Cuiv-1u?YmQev;C9U1XHH2XBFSGB8m;PhH(Wzj}B z0TDA~*v7z1xTj?+r9&&0>DuE8P_N%oK2HMGGYSCwfy_uz(1?7geXQtn#uk zzRd!TI)qH*_*71zmc!rvDw57ZtmR@K87PUOnSjv#m#?X9?E9YEV1n(vaF}3P!rchH zIh^WL>Fu?FXI+sH86TBA7-hLZ1hrrzBtfdved;o^5W{rcGyF9WS~tK9In8wg5UTuk zyoi{1gmVK9jE~mK77}FMCxe+B|D=xjkd-cqI5wOT0(V?vl;$p$JDGAaUZ5bgzB-fu z*!Xp6d1k?9ML(w9c=PLFgomg&*=(Bjr!OUEkUMN^>HfM?N#omh(-8rL;-KeV=ei)c zVpiZm{5?@=uA`Hpa7RI?>TO1l4g{T8R1$=f+(hzquc7K@r|b^m#|`O1vqepzTc(jG zM~<_Dux?cdKDE*-+n*U_Bac6hzhOL}gTN&4UHpHT^#5X4-&ti@??h5HpK-FwSFD)_ zUjvA0KI`oU6|E9zPR6c2N}S`S+H$!|C`4`iNq4?6Es%KE=2S^g%BZ?;y<}?2GJS}E zeY~{^x^Lp?mD7(xzgjK|OOfs+iYhxyfu;1*!7Uk;6YHCY)_%GTGZdD|^a=4!St|UM zb>n=<*BQR2i!I2mGBc=a^J<*LVh&AvLT(w@1HyT4jFu+>{(`y1>NmMRC-bb+vhvQV z;*zY%kE_-MMl0yu!BOe*q+NQ>wslEQlXOS8D8jb?T0&C-F6cxAx_x8N&cty9YY803 z;SK!^l{;y1tEAZ26)a)x-GgBJMi2<*U^%$!lenNk+3uu~#3QEcm7fn1bRHBr1@0L? zYc8#4JjAf~BPqKd0|#nFpF#&vk{(?TMBW;+gZQDp?CcO~X$FeE77)+GasgqNa#xd> z78_J7YY#|4=WQqW^4y?yzRH40j&8##*v`^*jm~(-NBjIsn|Sh-K@c!3g|HmWC z8-EE(hZnwiN_2$q$nhtE96#*l(H_Wppk=!fb_;CYf!;(PSa&QX?98O82X;5__hth< zzE4*AB4+9*mT{F*Vs~I2&v>10ib~5X} z-`pbzTlH>$T=$t=`2Sg2XTJ;q0XgUHj9(G$4EuD*) z$6_R4&JQsGdII?;_RpJIj(*{1l=xWA7ByHejYch+V6(B&%C-~;)caD|hOD&3UD#y4 zlLb4#0dYfmMOkopz(*b9NM3DvJL*;LkY|h`;6(*tIZiU$oZ$v4Qx)gVyJ() zkNw9U5CrZ!`V8MB^a-8)_wzmYdzmq|FMwF-=Q1+d#{1^8UwN9bIRvu#}LxyIFg@Eh{rC!0qkysRm8 zaF!If`$;HD*Hnd9quZ2jFBmDPa{6fVPqC9?hLog#i+2ARL9(eC=f93^wV+2UY&rApe29|371ee=Ext7A4qa3{f_w0$RrWw@i`At%iuYmSS<1AZ*LN zy}yKx&rb2~xg=x+FR9M6!hX7mS?m^^uPh&F1}>kwt-r5*+IBzfhN*%*Da5K1Mt zso!fUrAyNe7BnZMwKz>6&QJ)w0$+pWQ0VspcK%dC1IUNiRf z5?Z+zCe~tK)*aKolrdFI-FaUj?0ACe_HpqI=lL(e35AtYUynQWc2t(uO!*L&ZD8@K z;}e{gpxrPxa8O+#p<5J{F@N56t={H`0|&#%MWvMEkd=X@wgBN$DM;9Dd{8yIfh^r- zvjVwk39EMxk+$*y#@A=7H8xWGknZH0%=w}VK3teUbv%HX!^a(Olnv|IX1K zG5|1E6*5#6?;k9oU4OIE$=CL5z{o6gh;VK_$JvKos{WV^$z}8M-EMs~P;A<)VHm{4 zhYgoGx$4k4T4n|C^3D_>wlK$ms``J1UN&4$aPb|CT6j(pYbJcLwJH0{ni!*~W5D4_ zFmpFoeu2S3i`_II7`Ne(9$@ogt*8wCpf0*04yAI`W7&cgy~5_3d=ecm4vaZ;S@*I?#i!Q+R9;zsM->EzGuBb?>euY|)dJ|1B}E3EQnPh30>?L%v0@ZH>&SCbB!^-+h6d z0w&r_`A$Y@54yp9u=!o{&xrl^H$(+$(eN@G8@uBCxbX}{R3dwdZ(F@>5+&cdsblrR zyBufzj+Ox0M90z+FNivihhekeeNv&e(3kaL;f$Cd@!9u~)|034D=09|aMv)HX5%Zi zPPdMv=5+Pv0(T|dqs^-N>f_Ro%Z90|Dd4Y^oh^CXTaz9#PaD04!n7%G6E>>;u62Jw z#{docH!!{JRs$D_;`+;b3ZW14W(r*w8MEU8X~tk&AyMC*)`klcJ?zZ$Jx{fn;W;TyKwHo9uj;OSvtS6qpu=nek&FY`uY zQ`$bA{4}TN3!ZaQY6DB$IxC?4^>~W0Q?-dQ_T58-%LuvjGO^0OqUpCkJz< z2G<1piE#22;{x|BYI>nEC{TS(VLXh%dqJ9<8Z#HYUwju{QKDgNLIV1VizwVEt z$eaq2)wRPYUiRyxZ)0{dWU;mA2DFYQzT#v_roGjjRucgR0lWH>?}mLzmsdaw)~hq` zbn;Z%@9xD>AuS-($oD+@A|7-3jQVbZbg@m_qN8thoM%7fnZ?;YGXiPTYQl`9D#Nvq zcufb1lRUFWJc9ESb`G+tyd3fkhUpC?JzJA45{Y{TOpc@+5= z51qOuk9n{0C_$&B(j8rdHo~Qk3i2WsvH#Aa(R8U7K==C&2$ykK)HKgGjd|Gi=qMw3 z%9LzF+j2Ee`3V_nmca|R0f*zi_qyHR5hNuMO4cnqc{6uS1EV5*DnHKVaYM-3M6beL zJ?+#mdIT%nA*2Ft2pQU);zJy-#-y31zq8Dwr|fkd^bW7Uv+`AFoh$2q=fG7pUrSA& zq)z=#5q@gAr#n^p4D(`0Uh7KhDGt?Jq&nRedLvQ9L2t?aM9e@QWnKbbILppMI{K{z z_4|63p~5<}3i&%eg=i#7Nl0eQ&8U69wIC}+P`EWtTF^msuMpRal}R96m#MMPlzk~I z7BzY`wj74vZfD-iXH!lX*(i4vO0azwS|%(9F!H*;bo)Z-*DtT9zUv{hApxt%>WU4T z$Bku=2YO{x;RA=G8zEz~$kMet;qsvr=vryy_7{iI!M7V&nPU?$e$T^aqQE@XOu2Rg z+2vDfp0Gdv12K{yXi;H51j*j-tjfTAw0(PGYxg#9DAWyU_-Jnb6An~ls(34ZY?I(( z+r<48bIWmz^2_lSSlA_KW4xXC&Y|=VhqNZOh99n@!JwQxMYoOSQClUvv|HZcQT_)< z!|^eUA{=NtQKP*e)_LoPn8FXM1UvdAlsKQLjv+m+`- zqI+7qU6tyx5tn^83krB(1r2q<8a#5J=t+hgyWqtg65?%OA%vS$@zzyEkQzRmT&a70EHv|AP*Xy;R|*K0)fdjAnmZO?9Od-$QUPR__>C2j0|o*EgfGBwtxmI{n8CS))Tiu%mLqBSUJwneeW>y{5+;s%%% zUpa)=?Y((2>N}wP=(?Ll<)LL_T)6bfpcJ;=OuuW~EBn@EeX0%S)ys1?e2R1uwuX=& zlplc}hs^0EHBcQT4PxXc%JKYC>G|~cZk26}ImNkfFZ&iQd1Y1&Qy&W*+chB5x2k&G zWfIYtIw-=(sw-}0|I#ESvQQH_6TP zq&}&ypDMO+TlHCj(_uc{iB2@(6w=E+Jdpy6G}6|H0uXy%%>2D@X;UN58H@B(L+_va zC%ua8@q6}JdfE~DAM_pTn>U}#X~by8kK{efvrHDeZ$VYJ`!nBi>m2Pk%Z?Mhye8Yg zs8#YR#r+J(VIvuHbr!ww@iC@H=n;CNf5I0-6niI=YMDRx;tH@wn#WFUdDQCEZu7>j z$?mrTl%0&-faN))Y9`5eb;QwI@WB`Mub)bteQ!A>OWd-gIYbhBS-f8K@qLTgLJw)} zfAbGC?CYY%z#bHh3=Wx0@jR(y0M{wOdL;!19np^_krd^-XjE-e4l`)?LpA7I{l4#Z z`Xj`_rKsHc?Y0~7Wj*V9&T1p7PhbR0lfc^4qGS&4Tr;3rN~4Mnq@C&=w%<&8`07#^ zbOq#QPkC!xff-nuxFEMLnF`i|f;LGp?+Q6H=hWn8(|To6N}uZ?*;72*B#%Zkd5M_7 zxm2usck&W8-Y_c8RB218)VS4lkrvT=Dm(ooz-trtYA=33Re@>42|D&IlO*DtBci|D zvEHa$OtCPMf??7ZbBotZ3z^8D%b(aIXDcwwZV}}Tkx_zOGj@5lySU{i2N7l6}I&vmzgzwprvHZFBk5y=%{?VXr#)3RF&8ayF!lK0%+-U_$1M z(A7)eN|hPeWHY>URrO>M$lI76oV;Bx)7CV{m%EaE!(edZCa||Yu-gt+AMXM}3R|P= zvHa{Q&gJ?lhB&AC4PKAB;2=6z7;watY#bM5X6T<%6`j{1^>kvl$y5Si;A3cv8P>ly zVM1C};N5ukN&IRTti^Zv=P^<#s2*sIf_|JD!IqLCHdjAko5^UwBg?9aOX)qy;akSfU{GIypUKdM z)01H9xT)pi@(s9t{D6v-xVMoqW7>P>UG9zW=t=jcwFm;JigoW|B>;OXK(in#5qhPcf^)=V>t^2L=n6ir`u$bRN~AON z0Z=swjbE3)Q4yMKH6gnozN|Z!o1Fp-qW;<5-{85Ld-|i+B<&QRD)*!d(~DS^mgYa; z^*MQ^wsK6SoFT9zu+Vwn6VM=PVAe#z2NtizR&jM)shvJ9TgUfop5!m@vEjPXtVA*i zi#KL(NjdzlzZJ~+B&(aK7=3sj@duNAwNBFUid+yimr#A$biq4HX!9MM%?sy#<5{Ov z+pwpqD%h90R|lg)`?->~s(r#raC+A{V`+Jp>?slRdUqnL= z`rBugInfGK5YeN8pZLS9VEfNAzKLGxdcD$|Ws047Oy2;;zGjl6DYo@^z2oT2mC2-Dy2UTXwZ2QpF>FheC+g@LPNg4yK-X2_Q_Gi#7U*M zw*0KulHqGYnY+Rv24hk;-H0I+@LfsZwnN_3YbWr}SkyQZdMU-Dq*JKR<=wc(nv6-m zdyi1}4SRobFOEPXMqpk=0SS{dMmt_wPoBpPo)NLS+N{eMCqNVX1fjV&6ePlbJ+@qx z6QhxmS3ezD7yVG8Lqrrbbr?IM_c%8m2$noOn!xbIy{yH43cyg19PagraZv%0hS=)I zq+{>mHPYG@j$GeS`*bHk8Z*`9!$}_6x-}w;wRq@AZ(W$e${wi#!8-5qNH||4I6|cX znS)a?nee4&*NkWO)e$LRgr?=551cME%*lA1eMxCR{`u-F?a=h1?36i@E2e}B!@YwX zxeYwNXgDc79eiy^FM0f~0S#%1wwT54G9Q<@r=4Ws+NhO>AfZa9Ugsr`{mo=b*Qs65aPX4B&~1(4=M`9AigV!A2cnu9YqS(S4;%inumZF-WeHM*W=(vJ1L=W{I^s!XD}a}@#vWVCB2#WLkdK@0anoRe*Ld>ALp zdlkb+NbG7Ff^os{@SZuYmYfZcORQiwp($9+K+?1=6xz-V8Qa|inYC#vuin1vc!3bF z9#NNIkLd_4FryA{);BaC6P?5gB#?Ybs#)09sw|w>TGcub1n~&Zz&{?BQR4Cw+(qzJ z+m!~?jcRD4mCKaJA+c*U`a?L+ZiQaf>|}6?z7um27U?*-^x)gT#@Ej7E?tWXVSK4J zGM~gz!iZjS5BU-T$?oNv&Lq*Pfxdq^*QQ*&H0|hET_IJ$Tcf()UjL4hC>v8g?DU3B zN!FxjiP{Ji-zhPnDs18$SiL zMqa~`omI{Q04?A!iedpU1N zZi(1fy$k1{w1zyiv=3Uq2(KiFIxQv~Iv^dJt#9rXn_&J2*KY;a`YRDHP z*l5xj3p4CaXLZ?h!%(4>HA?5D4rFWu1AM9TrR+n6m{|ZOsdF?IjC3=u(c-%)g^dM+ zO}u3ZFS^)s-G9`d>kN!mxVg<&hBfl3TCB<*V;ht?p1uNzG?eQuX58Dgd2mI~-`7~* zkZ~gqKhz`=Tc~Gh)*dSAfs*=eQ3X0&5Cbrs97zKd7&XD(wly_`hEviPTW97S*tu?k z=NCvG*zSAOQMXLk*=2I3zZBk#`ruZvQ7fW!ZnKJ=!X>AzUtQtWOhPE&0yGH)CuNMP z&Y{Y=9c$>Y$?R(Nf?qsI2ac73X>6dCgvl;9aVl z(M15ZPd|0^9USe5lWz~@4a0qpR+bE9)#FtuxTh*cl}nU=tYF8$W7%5yD}H#aI}a7d z@`3*(JkKj*g_9+7jI6_&c3_(9_8Va@Atl-l!`c*c_?Qc@l9%GB&cx14`e-?Fv58VM zwAsd5a_F13Mj`VM9l%*Jo}0p(^E)gdtHV{Na3Gi&ED6sF0~^QB5dc!-vwHjIh=j{^ z2VXHtLLOnN5$C&Nb7nxD2b_zkr-CT^uO2 z00Mu0Xs;PF?wHo{pzJWv$jS<{+gQR*`RKm@M!xC1Mw8#;aH&T@&db93!4)O{dSRr& zmQ75Nr{EuA1A=iY!da$D~WEmivcUrQBW>@QluNUA0+Cki$-@<qE zyqS&VM6T^3PTU(034e1_<7R7VcZsJMm&~^nF({FnRY7ryGgr1-9loFBJE+%YK7RlG zzD07dYs&gKTBjCT?u`4WcXNy9>IA4ab=kmUyb#0{!AAW*{}({vT8*Q3s6CS5kkxRF zxAs`iLmGKdyr z&xzb(IY5K2A7?*Ss~P?=LumQCw;%j;Kh-o9F-&wV>honTUK-}99O=Sq6guSWo#ROl zu;WU~CedB7@l^Y+QuuW~vK*vE^pbJ##fhg*BkTQJA-1=kbzfOK@<^9bFmm~ExcTVR zIHKLoqGzUN7$v&pju7L7)uiOaWKl5QJcP7YqX%b$deARM_0Burn?Ha_WTC0uC*2f~ zBwzIK{nFUkm$0e;RXx^Tz}esq}IdK4&R9R-QCLNKa!a)g*>~N(XtAE03yPN}7SUI)qS67!Gbse5v%=LpGBL)OV9QMI_ zib1_$Qt+}`G*Su{fVj5-+PnpK&xMCm)UDPPSf%pY)N=Y|`^-hENVW}e8}`6?GuNh< zps|ykIVQ0^3rGVW(4fHcG@OQ*>gh>Jty2jyGiVWym2pM#QKP*(KI|Xn6+H95K&??G zs{MXQ#$#0?pP^mC)p}_d|482iORsOOiY4;~Yn!IT@FZCAByGmtTLDOoAJ{=t9{FCo zFs9&|tVYRJa~ttG@L;8|Ov^%dFf>kem4-XFyb9I|mLg#P)Oe_eb{wm^q@%QZg+m3N!7v&!MQ3!yoE@5S;IVnL^hec6QI09r!A#=%i&Oq)9rdLLA)yb$)f&P=&+%E5;F&Xo; zJo3p`zML5d6rB%$g1S-UHt^FO`6Nq#VQ?N!Ta=?SINtnVIL>#ox|B(zV|lH=UjJ$m zvQ9X;nf5ex6xcgC@pai0GMMv_@!CsVlmJi|#lVwLi?Z{gk#IH!)=;w?UftAW%2MKq z{tD2rBy9T$ll^fIzDn*L0HW2_2;1?1_lMrk(>Yb?5L=&Q%ft;$wh+j)4uH;Qqatwy zi5<(?|Av8!yuH0Sr(qFBE0cWMz|WmG#5%w)277b$y!yM02zWAWRxPpaNhBovHlUUY zAa3ZfL0_agvc=w^g{hDnEZ-v>6HZeYSwo{U6UYI8OQNG}+ZO3mnYe4hJWML=131=j zZBpaohh@oyg#}py7U`J8fN!=b6&|pZ#qalM-9pmMGWw{tR>v4tq&qT@53|{3D#CMX zgB`D>+zQ=~EA(F#>lUTYP}78Gj|C9=OxD=;Ea-EM_76~_A^>UF zQcvl_88o}`V48(hiZV|0Rb}Q#Zp3jss?4pulnlctCn$_WIUl)+ud9O7sXIw_ zO_h^(1H5JqYE;Z$NVpFfb|!mF%i>k6fyFzGY`LIggK+2|zPqczyjIx0g`7Sk}f;9SuAL=Sx-MFln|0hgq-jyOEMc z`7Sir&MOV8Vtcq~<{}2G<6_y!m&Sib7;m@4unFqynf=N5dy6IBeqG>IX`0WwG|i z&Fs!j0gy*4$5|kDsunxu9bDu-PiCIc0OcsmbyK5HUNPu`TW?`gW)0-0i-R>KQ(i3{ z1eM2@##~B_Q_3ZDN8_^?X?oozm1m`mNHvc^9o~g{V;DUdkAj@y{IDzZo;8aJon2}0 z8@YLdPpOd)27CLMsx@Y^5D(Zo^r9P8p3R=mX2TFYYo9A2MFkGC4_(la*?Qq! z^i!%K0Q16In_qV=-Et?|HEe%r@A3Y9>|ETbYp4qj|J5W-{$lnGqfTw2Cqb{G2Uokk z`8auW7WmL9E9}=G5l5?~0kskedz%9&`ZjkNt}Pk*1|}iv=SGl7HV{-`k8qyC0HT4F zFjcj0K2ks(lJxican@||oAB6U&TtkJej6=FY@LhX4avRsQaB<4S#n=H%P=h+D9 zc%(MtmQ0B(31W=yjo{Q?@Qxb97sMzBt!dF2C>~0BgZCS~s5Kk&DG7aFz9jKoMDqkN zv*Ce|_Wn)dAz*xuSA(7GLS)e7j`gkM`pg<;^`F(cK@H7UhwD&Wy|{@jY~7#t;8?Ea z+yGBY{c&Eka#5&K7#~$ql);imNS~Y-MaF^`8}?bXstxWbwzO|)Lsn1w$Zi7nWMIK^ zLr>pRns5keRmetbQ9cpokBTx~4&3yYi!d)| zDm$DyW^; zo#QD4pe-#%P%}Y1z0OO0Xd?V2S4J93PMt^bfMy}GN{c{J2m0LscP?z0QScrq_3V1B z7dMOar=IfUyYJ-kKeX~S+ea^jgweWP zoS`JiROQ11HQMvS$c*`AH+hPp$H@ zN#P=2NG#XtWVcnn^Itadf*$RUd1d*PoMt`zT%SQ2okt- zvb9}ed$Q9W;j9k-NCJV|js)M@=}T9~is?B)q!gjy6i<`A0u+JBVw*3*Rw+zZE< zOO5CFm2F1uWiNee{c>T9cf{3DO+&7pO}Qf_dLZ^$FRAVQr;3e=#?OU8bq3HqgZ!l` z-;-m({H$D@knxCeZy?3;I~z>5s9VsA&^nG8tYjlEb(0TYuP4}7-FKR6Qn%R%EjJ`F z^tMq&X2$XPrY*Tk4X}Q(?WhpTC13$thk`n>&;5ngWwEfATv|UDqOQy~xHNx!Bh?{> zDd)SIG+ZBZ;y(5!xZJ5z`v0)^o?%U_@A{~s$P!dkK$LEwHw8kkDk3HHA~m8E>Ae%G zzybu6-h=d-Adt`lf{66q2?6PZ-U11MGp@DwZ~xD^&UHSWkNabixn?r&yidEI=e}n{ z796&psC)Z&3WUc?!*t5c|L&^Lg<8(CMoZi=czUOHCtFM5Dr=1(%~PwT+?B1PDUF`M zPJk2thv5@OIVyNa@hJ|-nb#$eiwa@6RsbnZl>M{1Fh@w_7@$ad`v9MaSx5a zh?0*r!zl^}$Mr(T6DDp)<$VK)#_ef=1hWIpN*!cplCH3PUlp%ST6=)69`OR>CF_hu zq6!A|X5?TZ-;Z6k6NEym3jQGYvu-=2Z&2wn8wikZHB&!7F<&T4PuAy%V(Crd&a;B( zy;tKdAF7LS5Rx_44*z01QdaMq^u{3PIrZr@obk;SkZ`&A1_jEk=rK=fvHsuboN$$C z$D!l6jBr$*M$5U8zTMA2eTNPDbK=K~)IEovN;d;LF_@FDt*8}en(N&!hDB@>|9^v}; zoQ@Pcmx@U*iLXR;NM>Qqqb((|FTfXfXDFO}=`S;Afc@1^Htd=`$nBT1__rEn)U`Ch z$Uy(Enf5Kp0N7TTYU{}3v02wl)n<{75Q^8;{8?M|bSYAN4{@2*3CO@##Pj{Ez(Wy=TKkSWWY|Kb;W38*9m#@ zaYmt91|ZpzocNa5lFEpkvbjLm`38ct-hSkhH9vcy>byPSqj32OUGFI&BNE=2vTGy* zOqk^6{DONzdO2fQ@p`(dI+!abWFVK8v2Qa7tcTV2Gji^*w)lT7-*`ovxzMiGY3~t~ zxotZ_H&0+hLJxm?TC{;)P4Irgq0Gl*E%M4geKfDQBKh~QIfIUCQ3;Y11&tqJW$#IC z>#M$yPj(HEYvhE{qp)~NAuFk453oMYn8&{~-|wQ1xYa$E(Ga<^2SNQ~_&m2utgo=k zu;x>kwJYjg(f|!d-0`{9ZX#)|)!}WV7REWR*P6X>avp|vq{%8V{BBx`)AlJ3<*gnN@ zLr7k^r)2T5nxv>ZWYw5bhxeUr%p-$_^Y9GUnBV9LXb9!A0;l$-048B=aQ!{bqozC6 zQA2Fls-$b1R>qRQbTv(}Wo&=Ll_`G~6}>Zw8(vLYKR}CeRkWCNt@?au;%+(9ei-;@ zV&@2IIk2ak*`wP!|NUWH1K>87R<(k!(7h%BV=@?M4@ZWhJ*pBv$@7u8Ui3KcAO~*v zm>&68@%DXTx>r4&K`#H!CIh^B-{UL54AtA~w>2HSSaU9ZN4sbpd_fBuf%dkqEE!=E zr@fB9w_6Vr<%529jf=q15C>!xLy0eIO0t8A8Sel^ib!@yj&HF}LOrD;Z_d2%W7-dz zn#$bR=>rD5-wdQdW8*Q%So`g(v^%mRd`t!;abo_bF%xCbE&nbb(zslCDMSdS>-MnO z0(H^fqK<@KCLR)FdiF;-(e#Eb+0sjq-WIw zsfdhT{HgbLw#ZqEV7`v%&L8tU`|g;)x+OaPqQdse=~6A?f(Z@Jwu4nc@!X+u_F(z6 zb2+}!=F%JLmN%?br;g)d91_;L<+b{_K?BgFt!k48iHs{xhdSSFQZQq@|XH{c5>Lh53T4%{Su9{ zPm@XrIp~T*9qYok?xKq4YgOYrl~G53wdfSO7A`(3@z_TWy5H=geSO%IpI$>yeY8&a z8W0L3tGWkMX_Rl4gyqPk=uY%ocDtL#By@;KBPOkh8!B6((@)bAgZ7ET>F(5!bk#6*GZ zf|0InuO!WZj?181FKF-r&C_WYzv|o~U2xp6VVf40Vi~IcsEXNO+91Wu*M>fb5`jtM zD|My*ip!&XyWy=VN!%Qnb)gkQ0HuJ-NFS)22bW?uy^f_{Oy6ETHFdto@q6!pw^znj z)oaJ&3tbMnJ^y6-vPS`&an?~x1A;C%&0kNk0`(yD zok;PclQRD~d6Wn25Q86@u$u}&)yMB&|4nunjRUZ59}>PnY^)kOCA_Aw{XnG2DFd}8 zI~E7qvHRC%6IlzMbMyQ-H`HXDo5*$=s|xFhn{tirGwHayyu8NpsxxaFsdq^=a%JlP zGyUlwF8Kc`8=~@(tsF{!3?Tw@WEh5zpdAr;5L;pzLQPE$O(t&p+l(6+Trgh=A!*ujN0c~NFEA|+z-p_Vr3tQ{M(NeitzkT&8D8)Z_Y!Rb^=bmO1sG!#3+DOsE58? zCPXIWN}Rs+6Jc8czY#XUTrUpvEpQ6$WgZjYegZ}Yo5Ng6LTD$<-0E?{!`3yWul_#w zZ&|dP`BaoA$?E7?Tj&D%yr1SZ!jWdDvMLOg$ww2WjYZ!aetjU}>aKE0272y+vzQZf z-O_OZpOlFZWcZ3frOEBS#E+K>*D|p2aH_Dt++o_2L_BtEp z;Wf4oS7vCN3NxH&3V}HS?A11@h@=6!-gr<8~62{MdFRxhFrN8iK;U<&_*4DWf~ci>z1lhsJH-w zTF2&3at5{R=Pb{|u0Vs#$SeJWYnV}3)N|b9G!F6g#{HmQ({?GymkBnrChZB5W@Wy& z29TKryCh0fQnFf?*IwR^Fo=08kTDh)5r$C4ypY~sOW>Yp1dOC@Y*5vST`>os}>vpyfnz7izX@-sW&-y$I#kT-A}q7uikE zn|iPV;XDZ0KVqI@RKHSko(+AgvdCg%9A)!1RF_(Mx3W=e%*%F5HSnh>3~u+0vWdmI zv3U^p`?W8}flY<@!GmB*kZt2SfyE0z3qJv9p@1>6{euVp z4jDfO)KchkJL>)nbKa!Wgp8H4BaB)~&CBJIcJ-943u5eF1*9Ghj*O2}>bsfR#%rhX z%3Vma^W4k?0LDVSq_@8uQ8xDEYe}P{XzD@U)Z+ZNN+LjhC={=~WD^LqTM7 zA94Ag!c4d`4VZP%Hx}H}#Rg0npJoo27`sWRQ8vu_4ODCgpXbHNf);;jIM1k2$E%cn zoomzxoT)wbTLG}R65Y>pvU&QFP;*v&ptlj8Xf@6VvbC^FuLYGVBEu`P5I4%qnw{K< z23ZYh*7q8g8|4?A_NT1U9Z}%2mFr`$Q?0DHr+`gGp86l&$B|-A`^V!o+0^)Do6fp% zD`3V%?S#);GfuRP#S5+-v7aq-gf`*LaKu(Ly6M!>@~mWrf^N>a5Y_YdYBmYcbGss= zV>IJ~aq;H}AtMC3Fm4^_zfh*dEy$Ly9At>}F=Z-4&MHMM30@_zp4vd~GoWQm)LFw# zJR>4P7VCqUfoa7r4yRS*m2F$Oy)w*@(?Wu0ix$r;FVQ7_;H=CqtF5;Y7-U|pejOP@ zb6n6IToIQ1QahSURvxjEgrD+@<9cj>oXRK~<8z|V^m`R|n#(6I=jmU=RS#cWkiA3V z8W5wj;(C42&FfT`{<3r(q3=8AhkxOfJ!&!f#0kyKR|gt6rZAdHT-r0DgLMl8f{CW+ zYYP%Q0n8x>PSbxW&%IbP%CXdcNKIb#Gwz}rXv&ZZaon7RePh`)p?;|DYy)035i9w4 z9KG;qd1#wQIoi&5>d{AX@&rj%dgqe05b+zu=cn z_BaP<1)CK)1p~eWY+&Q6nw$wHa?37b>EduiYg>a{o_0w)*pNA*Ay8&@HoC8ila&=j zwH0XmX~G$L(5S@6d*AqzCDrQJ=hXqHy3rTRGqcdbd~0adL}GaJnQi|iQa=h=Zo*Gx znQovLG4aXHMF_AfzP9JLHe9(3qRM0t*pI6l8%-?BMzR;AK*)V7$HuMg;!928WrMkt z;iYU}vR@=QZU$!fRWN4bWBdC6*^)@!1>*8l=hUz9;3%8uwoF}90T*w z7<+UgB^$T*4%s0}8Bm@`HvEZlOfvEoZ2?*H{mZY^1~es#e0Tq_KDi8oZ)Ma(69#lD zP6`}yhKlMUC}b?SNV*nz%^l*QG`awjNWrYf+5qs!+R z=mI3q^@6#^3aJ}8G)G(!&F6)7`_9P@*B5|s{7SICthwY&tLwLTBe}Yhc;4KgPw5dm z7Ip`DBXo_xzJ{gy-FZb_-0wr|(3%ro+uT-%l1!SAT7M6MuB z*t&jk`Ps~)5TRL6%%6rWOTe0}L4wG{;XcU>l%Y--cmVH`A-w`aV9sYlaKV8?^i7EG z9-Y|K)A!PjvW?pfdF!4F67a^WS&XAe9j(FCb)QC@&nhD|j*_M;W+WCSBAYb!-yBgT zu6rM2aUf}ZWAaX0adiR_s4UkHeyzGq(w_`nY}0NfoSu!x>6ilecEDGJa=DJ7-F?eW zbpOSH!&@=q)`CIHUeR*^Xl>9}73uHhwcOEvJmcQBGpZM(QL2Ct@zmlK=c&18rLxg@ z(>|CPx%Snr&gpvRM6dQWCs~jvD66{=<2BPkzIH^cbx@ERD`k@XZ7L>V8Y+f_daY!% zIr0Qh+U744{bCGsVke#_*Q4T$nen%+vwfl}KrKj#`kpj6_X4LwjM-LngWPqUyQ?|Q zzAigJE%q|U8scz~icV;pb z)T`4lkW~c+7Eoqaxh)7|CB)lRD7SB;{XSDUh7AZZm|?j6 zIS#_cs{3>Xv|27?0nro($cL>{`;q=*Ol1lr4z0gCFfkW%&B{A(@31#hqhjkuLNV$) zXxZq`+^Z;;Oy21dj7VCon@}UZdj?l>>7fy`AIy2EMa9@qBzrPX>N^KI{FIo8#Rz_B zOJ0B0bB;*7a&`}D*453+X$!EBG~$>8{okdRzAgg9iFeWbV#c&N7rjh@vs$Qv;wryG zetY()cQRg2%sWN?spo9r^2^h?CH1)W_&?Nbq&{0gnjfS5;RB*=zcF~asK|4x$8M|) z@=Ol>vq$eh0BV$U+SJL?SO+V4g%Dy0r|6s6sTnyY2MhIn)Wxn&#iw)WU_ZK)C`PXg zy*(;Q;{{Wux7rWo`iL~x@)GmW?Ys$zd$|!1(y8p zbQ;hHN~w=uT7O{NU9$`B7JQ?5I{n23SD2GDa8>VTp5W3QF?e_w^lo9?V)Iz7iLbV^ z3FwvH!7RS4eEMz@2E9Ilhw1rQ5e}=y?}*OW)3{A!i8Y=UQmlf|JH)3MC4^L6XS137 zMh7&6w8dSL6KwR?UkO6h{wluBXYL7-`o^da+nno0*Z!8Z@TL)EodP%-H{KWAQuj5^ zSC_fa=xaNObWq3>;_h0^7dp_m01xBxTZ4@L{*|0)Q*Hz$=+LC;DgWtX)dPc*7+A=H z@)Hk(-^7mw!FRKI&}k zow0`P^`@dv_&F3gD_uX;e{cK*vz9s^3r2ka1c3$K&%yKGI^FqgMpwMQ`W}1eJL?^7 z_XfZ_x$#nRR)L~Jz5z}d`U3zYI98MqTXaQW`J*jKSD@U=ho|l6lnXwtbrUg^?J3t`85HTH)?ol~&ydY?sf6tVyWqpBj}LY+7kEto`iK3<6< znpmoD`D%yFH=(H-L55G|+`c}H$*@q_Fe$XuHfNXNfbE5D7B)jYh5Q+5EM zo~tdTgRhr3kGy^a_2vU>B3JhlL&Lan>5yaQ8?>`gh01ZQ7dz>_As~ z3$dSKs7CMo!{*A+3vCe8|EWMmNk~8dL#fTkR$DdZNezj%W)~DLq8WC{|5XPy3U}2~ z-$K3%eC6p6JM`ig?zHo!&J zFmaelQu#jkr?YLT{dJh$%zLUij;JA;Vlq9#+>Y@x(bF`~u3OjZtbDS)XqgL_OAH{a zTTi686i`PPT|ul?TL*@a`VW&FlylFfmVmqZC7zAe3{K|tJ9fq2^}={S zMBo9dFfdD?^a1HG+i#PB#4$rkgUUz!EZbz<(s1d*;?`yH$ced6jO+}eOW&39@VHJ| z+c>n^ZeQg*`V@efp8>_SPk&2))~&eY`2zD(jF*xe*KkI`MZDwPlBce!#|bI?KgH6pxnak zQIoSt7fWjOG@;`$k*@)$e;i_(th!E zr=z~2{D9kIUPdO`978Xte$lVyY`(j~0XO8;5Gs0)?n*O0CV*T{IK+kA~f{pI4KHV#d$mfB?igLqO zkPIQqYh#BB)P*sOf;3?0G%QeYr(LXyQW(D?Kso<$QTGUHJyVXRelCZfrCPx`ar{)* z?t2<|sAXHR=lsK=7Q;ihFW@HPJd}ah+FKsER?%ZyNf^+BnmV3Z<|&^^@XzTIyKX|A zVt*beeET4uEN0XR&<6)&zCt-=J`9bGCu$B$`yOr6(~&t}3B7RVE0K>pHYQa#3770E z|KTl&#!8{8GYZmA(5EX>x%v!k%bJ%{FMG|t|3kyRIoEaEH6=M%K8a1;KOOD{UhkqQV2S6+KrFUB&JANCb3=$NdPZ6Fdqg-aTwUguJ{@Zt? z?}|z7qxF`NdUy)v0-ECiQ#Aejp$Q0Mg@SH`)k^*GUc-7k@({a9Fu{xrfG+%71b@o> zQ08QzK?;2xzjuv-Trysg!qN!)t{hV66VaZ~P`FwR@sK#J`!L?H(>I!V&`M#o4uH07i*qIG0u2*@Z<37j$V z5Q}s3hRynFsR{-(`5&{(ITlV7gxYx)9;`)jGBKxNEJO3qnsx*cz1Bk#bvGpw?_|Tp zIWa#j{>0j}XU==kLCiFZSCWJ^e-#$xO7hrnPpz10OeAK-BA%h-1Hh{PofSf4qB8@g zyN0-$iL)Q({Ow*I8af?*5^9}GDWaxUQrY*_T_f4oG4%-AT7uipvt`>ojPC^OVC`C{ z?4}1YjP=Dw0wEX#fc&2cZKNL94Cn7)jA1|qiMxN)ekKkO^SSDtN5WVT|Mc|!$_KQ5 zH0T$E|HQ~PGBmZZrCFJrOhL>vvajydMueF%NGwqyf7E>OcpG{D;oAC{UDnn*@in8235UVjXlf6)sDT)#==B>fyGox9aj2#tu=3h^@lB3LUOB@x3k$ z3MITT0ROfTeN&pV)Pqv~o^bBwJ8D2$K_wmqqgGz{N*;|Shwk*6Ho{wVk@edz%6*UHie)OJdyMi(X+tk%8&yOj{#J zXGrHWcCj*muP>ww;jNd>15udpt-4eQ^-{0fwql=!8H;_!)% z_t{N`!yGEf@V*vX(?pk2%RO>&s|(@A9K|)){XMPEzKISTgkXvuGQ0G@DGxWB+zhu2 z#&RUjKf+hOC}lsj^)$k073ciI;AfrsTXGs5qAr}oARzA9N5%E24(9RF`p9Pg5v(Mt zA=9-`D`;8_TT0s5tZq~Uo$8x>E0G|U>s0fbb$fM8-s2YT-CqD^9b%2T2OF}Tf0w`u zBl?v~wGi`%F=BHoA^7x9v9<7`%=>gELzVflG+^Gy#2=C%n|D-#?y_zCv9UVLjDOhl zV{79sdD}d?Zxz}-9F1&C3QSU{*Lx7XTCngNKE1_}`Vw}qI8|zyv$~A9m4XmCWp;o} zeCU7a6$xWa`PSwFzpCF-ZmY$9qxcEZ-epAVVarP2ga_mlS4ZX;koG$u!Ddnmm6HTa zX!NU^YRGgl51^5^C2$PzokSEifU$bUQK}J7KyWZ4hMspcX_;49rZ{Y(wd4v*zmy)- zQ_^#MDfJ^L^X0)_d0=1s%2mQsIXuj+YWv9J{s46&0iabPRA=ox5Rh5vkqCAV@PKuT zb|Bi=@mrelRSYhB_=w3%u(0)8!}icOKO21Z%GU@Mx5c&ed@?u)q<181hAVJO6ntAi z^3<|J0lHsN2>KU0cqGt++5rq_@X z@KqlH9ar_hJ^3rS=gZ~5suP`N&4h;KLFmS~aS}zV$Ws`!izMC?$a^N|w|ZGnvEq24 zxHuMHcIb?Aua;{UsbAP`e1qlj`_~d?M8l7yA9s)(Qt%zzIVt?A*?kYk3evHFdStG^!MYyv zDluEKu)z~ir>rQsJtOL%dMmPQVn23Y?kd}*%YVtU36pjC?WT2f>fH{ybd^mrADbRM7hrGpP%_^sqK0tSS@+gW za9b`98wI+y<0`fezs*hD8ke=eWZK>4{_=}}z}}R}O3J?GF5(PtdHD$69gsD0a-jXj zb_?~j{inE>3q$H*RM<)7yQlt>t*ul+a)IjA)xBpvR9Q-wZnk#4Gkk=L^rkWjBeh&e z4MB|fTC^{9^MEO}>W^`Ad2u?@n@tD(R;T;RjzYo1zKgB0v7y&K=+r0oa}1@_*qWn_ zkDE<-7CgkR%SX8@pPZ^HNVUl(lx?z^J{qF92s&@Z

nweHhdTWKc_V9ng3;gp_(i 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 z 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 DT2OQ~ literal 129094 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 [!NOTE] > Callouts can be distracting when people are quickly skimming a page. So only use them if the information absolutely should not be missed! -Callout syntax is based on [GitHub's markdown "alerts"](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts). To add a callout, use a special blockquote line specifying the callout type, followed by the callout information in a standard blockquote. Five types of callouts are available: +Callout syntax is based on [GitHub's markdown "alerts"](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts). To add a callout, use a special blockquote line specifying the callout type, followed by the callout information in a standard blockquote. The following types of callouts are available: ```mdx > [!NOTE] @@ -485,11 +485,34 @@ Callout syntax is based on [GitHub's markdown "alerts"](https://docs.github.com/ > [!CAUTION] > Advises about risks or negative outcomes of certain actions. + +> [!QUIZ] +> An opportunity for users to check their understanding. ``` The image below shows what this example looks like once rendered. -![An example of each callout type: NOTE, TIP, IMPORTANT, WARNING, CAUTION](/.github/media/callouts.png) +![An example of each callout type: NOTE, TIP, IMPORTANT, WARNING, CAUTION, QUIZ](/.github/media/callouts.png) + +You can optionally specify an `id` attribute for a callout which allows for direct linking, e.g. `/docs/example#useful-info`: + +```mdx +> [!NOTE useful-info] +> Useful information that users should know, even when skimming content. +``` + +You can create a collapsible section within a callout by using a thematic break (`---`). Content following the break is hidden by default and can be toggled by the user: + +```mdx +> [!QUIZ] +> Why does handshake do a redirect? Why can’t it make a fetch request to FAPI and get a new token back that way? Not needing to redirect would be a better user experience. +> +> --- +> +> Occaecati esse ut iure in quam praesentium nesciunt nemo. Repellat aperiam eaque quia. Aperiam voluptatem consequuntur numquam tenetur. Quibusdam repellat modi qui dolor ducimus ut neque adipisci dolorem. Voluptates dolores nisi est fuga. +``` + +![An example of a collapsible section inside a quiz callout](/.github/media/callout-details.png) ### `` diff --git a/prettier-mdx.mjs b/prettier-mdx.mjs index 56323fe592..664f277b08 100644 --- a/prettier-mdx.mjs +++ b/prettier-mdx.mjs @@ -192,8 +192,8 @@ function remarkAddCalloutMarkers() { visit(tree, 'blockquote', (node) => { if (node.children[0]?.type === 'paragraph' && node.children[0].children[0]?.type === 'text') { node.children[0].children[0].value = node.children[0].children[0].value.replace( - /^\[\s*!\s*([A-Z]+)\s*\]/, - '__CALLOUT_MARKER__!$1]', + /^\[\s*!\s*([A-Z]+)(\s+[0-9a-z-]+)?\s*\]/, + (_, type, id) => `__CALLOUT_MARKER__!${type}${id ? ` ${id.trim()}` : ''}]`, ) } }) From c949131d8371e00f1b81d8b45517b71a5c9f0351 Mon Sep 17 00:00:00 2001 From: Jeff Escalante Date: Fri, 13 Dec 2024 18:24:30 -0500 Subject: [PATCH 7/9] How Clerk Works (#1735) Co-authored-by: Mike Wickett Co-authored-by: Alexis Aguilar <98043211+alexisintech@users.noreply.github.com> --- docs/how-clerk-works/cookies.mdx | 103 ++++++ docs/how-clerk-works/overview.mdx | 311 ++++++++++++++++++ docs/how-clerk-works/tokens-signatures.mdx | 84 +++++ docs/manifest.json | 20 ++ .../how-clerk-works/cookie-no-domain.png | Bin 0 -> 6918 bytes .../how-clerk-works/cookie-with-domain.png | Bin 0 -> 9046 bytes .../how-clerk-works/devtools-cookies.png | Bin 0 -> 484443 bytes .../images/how-clerk-works/hybrid-auth-2.mp4 | Bin 0 -> 97800 bytes public/images/how-clerk-works/hybrid-auth.mp4 | Bin 0 -> 200006 bytes .../images/how-clerk-works/invalidation.mp4 | Bin 0 -> 131912 bytes public/images/how-clerk-works/renewal.mp4 | Bin 0 -> 175345 bytes .../how-clerk-works/stateful-auth-2.mp4 | Bin 0 -> 145423 bytes .../images/how-clerk-works/stateful-auth.mp4 | Bin 0 -> 203450 bytes .../how-clerk-works/stateless-auth-2.mp4 | Bin 0 -> 101973 bytes .../images/how-clerk-works/stateless-auth.mp4 | Bin 0 -> 176016 bytes 15 files changed, 518 insertions(+) create mode 100644 docs/how-clerk-works/cookies.mdx create mode 100644 docs/how-clerk-works/overview.mdx create mode 100644 docs/how-clerk-works/tokens-signatures.mdx create mode 100644 public/images/how-clerk-works/cookie-no-domain.png create mode 100644 public/images/how-clerk-works/cookie-with-domain.png create mode 100644 public/images/how-clerk-works/devtools-cookies.png create mode 100644 public/images/how-clerk-works/hybrid-auth-2.mp4 create mode 100644 public/images/how-clerk-works/hybrid-auth.mp4 create mode 100644 public/images/how-clerk-works/invalidation.mp4 create mode 100644 public/images/how-clerk-works/renewal.mp4 create mode 100644 public/images/how-clerk-works/stateful-auth-2.mp4 create mode 100644 public/images/how-clerk-works/stateful-auth.mp4 create mode 100644 public/images/how-clerk-works/stateless-auth-2.mp4 create mode 100644 public/images/how-clerk-works/stateless-auth.mp4 diff --git a/docs/how-clerk-works/cookies.mdx b/docs/how-clerk-works/cookies.mdx new file mode 100644 index 0000000000..362699e007 --- /dev/null +++ b/docs/how-clerk-works/cookies.mdx @@ -0,0 +1,103 @@ +--- +title: Cookies +description: Learn how cookies enable secure authentication and manage browser-server interactions. +--- + +Cookies play a vital role in authentication, state management, and browser-server communication. By understanding their attributes, developers can ensure secure and efficient use in their applications. Clerk leverages cookies in a secure, privacy-compliant manner to facilitate seamless user authentication across domains and subdomains. + +## What are cookies? + +Cookies are small pieces of information stored in the browser and sent automatically alongside some requests coming from that browser. + +By default, HTTP requests are "stateless" and lack memory of previous interactions. Cookies change this behavior, as they are stored long term and can be sent alongside each request. + +### Setting cookies + +Cookies are typically created by the server and communicated to the browser through the [`Set-Cookie` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie). When the browser receives this header, it stores the cookie and includes it in future requests to the **same domain**. Here's an example: + +```http +HTTP/2 200 +Content-Type: text/html +Set-Cookie: session_id=sess123 + + + +

Hello, world!

+ + +``` + +This response sets a `session_id` cookie with the value `sess123`. To view cookies in your browser's developer tools, navigate to the **Application** tab. Then in the **Storage** section, select **Cookies**. Here's an example from Clerk's website: + +![cookies in browser console](/docs/images/how-clerk-works/devtools-cookies.png) + +## Cookie domains and scope + +Each cookie has a [`Domain`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_where_cookies_are_sent) that indicates **the domain from which the cookie was set**. This determines when the cookie will be included in requests. + +For example: + +- If a cookie is set by `example.com` without a `Domain` value, it will be sent only with requests _to_ `example.com`. +- If the cookie's `Domain` value is _explicitly_ set to `example.com`, it will also be sent with requests to subdomains like `sub.example.com`. +- However, cookies set by subdomains (e.g., `sub.example.com`) won't be sent with requests to the parent domain (`example.com`). + +## Tracking cookies and privacy concerns + +Historically, cookies were often used for tracking user behavior across websites. + +For example, say you [hotlink](https://developer.mozilla.org/en-US/docs/Glossary/Hotlink) an image from `facebook.com` on to your website, `example.com`, as such: + +``` + + + +

Check out this cool picture of me on vacation that I posted on FB

+ + + +``` + +To display the image, `example.com` requests the image from `facebook.com`. Let's say Facebook's web server: + +1. Retrieves the image +1. Creates an entry for you as a user in their database with a unique ID +1. Records that you visited `example.com` +1. Sets a cookie with your unique ID and [the `SameSite` value set to "none"](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value) + +The response from Facebook would look something like: + +``` +HTTP/2 200 +Set-Cookie: fb_tracker=user123; SameSite=none + +...the content of the image +``` + +Now let's say you visit another website, `foobar.com`, and that website is using a script from Facebook for tracking the effectiveness of Facebook ads. So now `foobar.com` makes a request to `facebook.com`, and Facebook gets back the cookie that it set from the image on `example.com`. But how could this happen? Let's revisit this statement one more time: + +> Cookies are typically created by the server and communicated to the browser through the [`Set-Cookie` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie). When the browser receives this header, it stores the cookie and includes it in future requests to the **same domain**. + +Despite being set on `example.com`, the cookie's domain value is `facebook.com`, since it was set _by_ Facebook. And remember that the cookie was set with the `SameSite` value set to “none”, which, according to [the docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value), means that the browser sends the cookie **with both cross-site and same-site requests.** + +So in this scenario, even if the cookie was set on a different website, the browser still sends the cookie back to Facebook, because the cookie has `facebook.com` set as its domain. Facebook then gets the cookie, is able to identify you as a user, and can identify that you also visited `foobar.com`. Any other site that you visit that loads anything from Facebook is an opportunity for Facebook to get back the cookie and use it to build a profile of your browsing habits and history. + +Clerk doesn't do any of this type of tracking. However, this example is still helpful for building a foundation around the edges of how cookies are stored and transmitted. + +## Controlling cross-site cookie behavior with `SameSite` + +The `SameSite` attribute of cookies plays a crucial role in controlling cross-site cookie behavior. Clerk uses the `SameSite=Lax` setting to ensure a secure and user-friendly experience. This setting allows cookies to be sent with top-level navigation (e.g., clicking a link) but not with other cross-site requests (e.g., loading images). + +See MDN's guide on [`SameSite`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value) for more details. + +## Sharing cookies across subdomains + +Sharing cookies across subdomains is controlled by the `Domain` attribute. + +- A cookie **explicitly** set with `Domain=example.com` will be sent with requests to both `example.com` and `sub.example.com`. +- A cookie set without a domain value will only be sent to the domain that created it (e.g., `example.com`) and not its subdomains. + +Cookies **explicitly** set with a domain appear in devtools with a leading period (e.g., `.example.com`). Cookies set without a domain value appear without the leading period (e.g., `example.com`). + +## Controlling JavaScript access with `HttpOnly` + +By default, cookies can be accessed via `document.cookie` in JavaScript. While this can be useful, it exposes cookies to risks like [Cross-Site Scripting (XSS) attacks](https://owasp.org/www-community/attacks/xss/). Setting the [`HttpOnly`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#httponly) flag prevents JavaScript from accessing the cookie, enhancing security. These cookies are still sent with HTTP requests but are inaccessible to client-side scripts. diff --git a/docs/how-clerk-works/overview.mdx b/docs/how-clerk-works/overview.mdx new file mode 100644 index 0000000000..e5b610b1e8 --- /dev/null +++ b/docs/how-clerk-works/overview.mdx @@ -0,0 +1,311 @@ +--- +title: How Clerk works +description: Learn how Clerk is architected and how it works under the hood. +--- + +This guide provides a deep dive into Clerk's architecture and internal workings. For developers who are simply looking to add authentication to their app, see the [quickstart guides](/docs/quickstarts/overview). + +## The frontend API + +When you create a new application through the [Clerk Dashboard](https://dashboard.clerk.com/), Clerk provisions a dedicated frontend API (FAPI) instance for your application. It is hosted at `https://.clerk.accounts.dev` in development environments, where `` is a unique identifier generated for your application. You can find your application's FAPI URL in the [**Domains**](https://dashboard.clerk.com/last-active?path=domains) page of the Clerk Dashboard. + +When configuring your Clerk app, you must provide a [Publishable Key](/docs/deployments/clerk-environment-variables#clerk-publishable-and-secret-keys). The Publishable Key tells your app what your FAPI URL is, enabling your app to locate and communicate with your dedicated FAPI instance. + +The Clerk Publishable Key follows a specific format: it consists of your FAPI instance URL encoded in base64, prefixed with an environment identifier (e.g. `pk_test_` for development environments, `pk_live_` for production environments), and suffixed with a `$` delimiter for future extensibility. The base64-encoded URL enables your application to locate and communicate with your dedicated FAPI instance. You can verify this structure by decoding the key yourself: + +```js +const publishableKey = 'pk_test_ZXhhbXBsZS5hY2NvdW50cy5kZXYk' +const keyWithoutPrefix = publishableKey.replace('pk_test_', '') + +atob(keyWithoutPrefix) // => example.accounts.dev$ +``` + +> [!NOTE] +> In previous versions of Clerk, the Frontend API URL was exposed directly rather than being encoded within a Publishable Key. This was a source of confusion for users, so we transitioned to encoding it as base64 and making it a key. + +FAPI manages authentication flows on a per-user basis. For instance, it handles flows for signing up a user, retrieving a user's active sessions, creating an organization on behalf of a user, or fetching a user's organization invites. You can find the complete FAPI documentation [here](https://clerk.com/docs/reference/frontend-api). + +FAPI _does not_ handle administrative actions that impact multiple users, such as listing all users, banning users, or impersonating a user. These types of tasks are handled by [the backend API](#backend-api). + +Some tasks, such as [signing up a user](https://clerk.com/docs/reference/frontend-api/tag/Sign-Ups#operation/createSignUps), don't require authentication, as that would defeat the purpose of the endpoint. However, endpoints designed for authenticated users, like [updating a user's details](https://clerk.com/docs/reference/frontend-api/tag/User#operation/patchUser), require FAPI to first identify the user making the request and then verify their authorization. This ensures that users cannot modify another user's details. Typically, this is achieved by sending a signed token with the request, either as a cookie or a header. You can [learn more about Clerk's authentication tokens later in this guide](#stateful-authentication). + +While it's possible to build complete authentication flows directly on top of the frontend API, it involves significantly more work. Most users prefer our frontend SDKs, which provide higher-level abstractions like the [`mountSignIn()`](/docs/components/authentication/sign-in#mount-sign-in) method or the [``](/docs/components/authentication/sign-in) component (for React-based SDKs). These abstractions offer a well-tested, thoughtfully designed, a11y-optimized, and customizable UI for authentication flows, handling all possible configurations of your authentication preferences out-of-the-box. + +## Levels of abstraction + +FAPI is the lowest level of abstraction that authentication flows can be built on with Clerk. However, there are several other abstraction layers that offer less work and more convenience. + +### Clerk's prebuilt components + +Clerk's [prebuilt UI components](/docs/components/overview) are Clerk's highest level of abstraction. They are "all in one" components, offering the most complete implementation of authentication with the least amount of effort. While it's strongly recommended to use these components, due to the amount of research we have put into delivering an optimal experience, it's not the only option if you feel that you need more control over your authentication flows. + +> **Customizability:** You can [modify the CSS for any part of the prebuilt components](/docs/customization/overview), but not the HTML structure or the logic/ordering of how the authentication flow works. + +### Clerk Elements + +The next level of abstraction is [Clerk Elements](/docs/customization/elements/overview), a headless UI library that provides the foundational building blocks used in Clerk's prebuilt components. Similar to established libraries like [Radix](https://www.radix-ui.com), [Reach UI](https://reach.tech), and [Headless UI](https://headlessui.com), Clerk Elements exposes a set of unstyled React components that handle complex authentication logic while giving you complete control over the presentation layer. **Clerk Elements is still in beta**, and only supports sign-up and sign-in flows, with more components planned for future releases. + +> **Customizability:** You have full control over both the CSS and the HTML structure of the components, but you can't change the logic/ordering of how the authentication flow works. + +### Custom flows + +Finally, if you need complete control over the authentication flow, Clerk provides low-level primitives that directly wrap our API endpoints. These primitives enable you to build fully custom authentication flows from scratch. Clerk refers to these as ["custom flows"](/docs/custom-flows/overview). While this approach offers maximum flexibility, it also requires significant development effort to implement and maintain. Custom flows should only be considered when you have specific requirements that cannot be met using the prebuilt components or Clerk Elements, as you'll need to handle all authentication logic, error states, and edge cases yourself. + +> **Customizability:** You have full control over every part of the authentication flow, including HTML structure, CSS, and the logic/ordering of how the authentication flow works. + +## The backend API + +The frontend API (FAPI) is designed for use primarily from the frontend of your application. Its methods focus on signing in users and managing user-related resources and data once they are authenticated. However, as an application developer, you might also need to perform administrative tasks, such as modifying multiple user or organization details, retrieving a list of all users, banning or impersonating a user, and more. + +To maintain security, these administrative tasks should only be executed on the server side using a secret key inaccessible to your users or the browser. These operations are handled by a separate API known as the backend API (BAPI). You can find the BAPI documentation [here](https://clerk.com/docs/reference/backend-api). + +Although the administrative features of BAPI are useful for many applications, it's most commonly used to verify a user's authentication state when processing requests from your app's frontend. For instance, if a user submits a request to update some data associated with their account, **your server must ensure the user is authenticated and authorized to make this change.** Without proper validation, malicious actors could potentially take over user accounts. + +Like FAPI, while you can interact directly with BAPI, most developers opt to use Clerk's SDKs for smoother integration with their preferred language or framework. Documentation for Clerk's SDKs is available in [the left sidebar of the docs](https://clerk.com/docs). That being said, FAPI is an much more complex and nuanced API that relies on more custom logic outside of its endpoints to create a functional SDK on top of it. As such, **interacting directly with FAPI is not recommended**, whereas interacting directly with BAPI is generally reasonable. + +## Stateful authentication + +To understand how authentication works in Clerk, it's important to first understand how the most common implementation of authentication logic works: the traditional "stateful authentication" model, also known as "session token authentication". + +A user's process of signing in would work as follows. This example assumes that the user already signed up and their credentials are stored in a database. + +1. The user initiates authentication by navigating to `example.com/sign-in`, entering their credentials (e.g. username/password), and submitting the form, usually by clicking a "submit" button. This makes a request to the server with the credentials. +1. The server validates the credentials against a database. This is normally done by [hashing](https://clerk.com/glossary#hash) the password and comparing it with a stored password hash. Upon successful validation, it creates a new [session](https://clerk.com/glossary#session) in the database associated with the user. +1. The server responds to the browser's request by setting the session ID in a [`Set-Cookie`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) header in the response, which sets a cookie with this value in the browser. This cookie will be automatically included in future requests from the browser in order to authenticate the user. +
.. +``` + +Here's an example of a JWT: + +```plaintext +eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.Eci61G6w4zh_u9oOCk_v1M_sKcgk0svOmW4ZsL-rt4ojGUH2QY110bQTYNwbEVlowW7phCg7vluX_MCKVwJkxJT6tMk2Ij3Plad96Jf2G2mMsKbxkC-prvjvQkBFYWrYnKWClPBRCyIcG0dVfBvqZ8Mro3t5bX59IKwQ3WZ7AtGBYz5BSiBlrKkp6J1UmP_bFV3eEzIHEFgzRa3pbr4ol4TK6SnAoF88rLr2NhEz9vpdHglUMlOBQiqcZwqrI-Z4XDyDzvnrpujIToiepq9bCimPgVkP54VoZzy-mMSGbthYpLqsL_4MQXaI1Uf_wKFAUuAtzVn4-ebgsKOpvKNzVA +``` + +Let's decode and break down each part: + +**Header**: The header specifies metadata about the token, such as the hashing algorithm used for the signature. There are several different hashing algorithms that can be used to digitally sign a JWT. This example's header tells us that the signature's hash was created using the `RS256` algorithm: + +```json +{ + "alg": "RS256", + "typ": "JWT" +} +``` + +**Payload**: The payload contains the actual information that you want to send. In Clerk's case, this includes information about the authenticated user. [Read more about Clerk's session JWT payload](/docs/backend-requests/resources/session-tokens). + +```json +{ + "sub": "user_123", + "iat": 1516239022 +} +``` + +**Signature**: The signature is created by hashing the header and payload, and then encrypting the hash with the private key. + +``` +Error: The string is not correctly encoded +``` + +When decoding the signature from base64, an error is thrown because the signature is not base64-encoded. This is expected behavior. The recipient must use the JWT issuer's public key and the algorithm specified in the header (e.g., RS256) to verify the signature. Clerk's SDKs all ship with a method for verifying the signature of a Clerk JWT: [`authenticateRequest()`](/docs/references/backend/authenticate-request). But if you'd like to verify the signature yourself, see the [guide on manual JWT verification](/docs/backend-requests/handling/manual-jwt). + +### How Clerk uses JWTs + +To learn more about how Clerk uses JWTs, read the [guide on how Clerk works](/docs/how-clerk-works/overview). diff --git a/docs/manifest.json b/docs/manifest.json index 4973d041a6..e64bec3ffd 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -1483,6 +1483,26 @@ "title": "Advanced", "items": [ [ + { + "title": "How Clerk works", + "collapse": true, + "items": [ + [ + { + "title": "Overview", + "href": "/docs/how-clerk-works/overview" + }, + { + "title": "Cookies", + "href": "/docs/how-clerk-works/cookies" + }, + { + "title": "Tokens & signatures", + "href": "/docs/how-clerk-works/tokens-signatures" + } + ] + ] + }, { "title": "Integrations", "collapse": true, diff --git a/public/images/how-clerk-works/cookie-no-domain.png b/public/images/how-clerk-works/cookie-no-domain.png new file mode 100644 index 0000000000000000000000000000000000000000..300fa087f41799b6a6d24f8fe753d2c9506d8311 GIT binary patch literal 6918 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 bgx+DHf9Vnp@%Qw9iw^eW+2is@uY&#uUz+Lj literal 0 HcmV?d00001 diff --git a/public/images/how-clerk-works/cookie-with-domain.png b/public/images/how-clerk-works/cookie-with-domain.png new file mode 100644 index 0000000000000000000000000000000000000000..68388a867de6de1d99b6e1b940ba5be55370f2a1 GIT binary patch literal 9046 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�= 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%0AyL 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