UNPKG

@slashid/docusaurus-theme-slashid

Version:
179 lines (132 loc) 6.67 kB
<h1 align="center">Docusaurus SlashID Theme</h1> <div align="center"> SlashID theme to add authentication to Docusaurus. [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/slashid/docusaurus-slashid-login/blob/HEAD/LICENSE) [![npm latest package](https://img.shields.io/npm/v/@slashid/docusaurus-theme-slashid/latest.svg)](https://www.npmjs.com/package/@slashid/docusaurus-theme-slashid) [![npm downloads](https://img.shields.io/npm/dm/@slashid/docusaurus-theme-slashid.svg)](https://www.npmjs.com/package/@slashid/docusaurus-theme-slashid) <br/> [![prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/slashid/docusaurus-slashid-login/blob/HEAD/CONTRIBUTING.md#pull-requests) <br /> </div> <p align="center"> </p> --- ## Overview The `@slashid/docusaurus-theme-slashid` package extends [@docusaurus/preset-classic](https://docusaurus.io/docs/using-plugins#docusauruspreset-classic) to add authentication to websites generated using Docusaurus. Key Features: - **Compatible:** Supports Magic Links, Passkeys, OTP via sms and SSO. - **Personalization:** Allows to load per-user configuration data into docusaurus. ## Documentation For detailed setup & usage instructions, please check the [documentation in our developer portal](https://developer.slashid.dev/docs/access/integrations/docusaurus-login). Below you'll find a short summary of steps required to get started quickly. ## Installation Theme: ```bash # npm npm install @slashid/docusaurus-theme-slashid # yarn yarn add @slashid/docusaurus-theme-slashid ``` ## Configuring `docusaurus.config.js` After installing the app and [signing up with SlashID](https://console.slashid.dev/signup) go through the following steps in order. ### Adding the styles Include the login form styles: ```js // under presets { theme: { customCss: [ require.resolve("@slashid/react/style.css"), // add this line ], } } ``` ### Adding the Auth button You can render a button in the navbar to allow customers to log in. To do so, add this item to the `navbar.items` field in the `themeConfig`: ```js { // ... themeConfig: ({ // ... navbar: { // ... items: [ // ... { type: "custom-AuthButton", position: "right", className: "button button--secondary button--lg", }, ], }, }); } ``` ### Configure the theme Add the following to the `themeConfig` in `docusaurus.config.js`: ```js // docusaurus.config.js { ... themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ ... slashID: { orgID: "your slash id org id", forceLogin: "boolean flag to determine if login is required", baseURL: "optional base API URL for the SDK, defaults to the production environment", sdkURL: "optional base SDK page URL for the SDK, defaults to the production environment", privatePaths: [ { path: "a glob or a regex specifiying the path to protect", groups: ["optional list of groups that can access the path"], } ], formConfiguration: { // authentication methods presented to end users factors: [{ method: "email_link" }], // logo you want to display on the login form logo: "<YOUR_LOGO_URL>", // customisable text content text: { "initial.title": "/id Docusaurus login theme", }, }, }, themes: ["@slashid/docusaurus-theme-slashid"], } } ``` The configuration options are explained in the following section. ## Theme Configuration Options The `docusaurus-theme-slashid` theme can be configured with the following options: | Name | Type | Default | Description | | --------------------------- | --------------------- | ----------- | ---------------------------------------------------------------------- | | `slashID.orgID` | `string` | `null` | The SlashID organization ID. | | `slashID.forceLogin` | `boolean` | `false` | Make login required. | | `slashID.baseURL` | `boolean` | `false` | Base API URL for the SDK, defaults to the production environment. | | `slashID.sdkURL` | `boolean` | `false` | Base SDK page URL for the SDK, defaults to the production environment. | | `slashID.uxMode` | `redirect` or `modal` | `redirect` | Behaviour when accessing a private path when unauthenticated. | | `slashID.privatePaths` | `PrivatePath[]` | `undefined` | Optional set of private paths. | | `slashID.formConfiguration` | `object` | `undefined` | Optional form configuration | ### Form configuration As mentioned in the above table, it is possible to customise the login form by passing in the `slashID.formConfiguration` object. The values sent here are the same ones that can be passed to the [`<ConfigurationProvider>`](https://developer.slashid.dev/docs/access/react-sdk/reference/components/react-sdk-reference-configurationprovider#props). This lets you specify the authentication methods displayed to your users, customise the UI by swapping the text constants and the logo. ### Interface: `PrivatePath` A private path is a path that requires authentication to access. The `slashID.privatePaths` option is an array of `PrivatePath` objects. ```ts interface PrivatePath { path: string; // a glob or a regex specifiying the path to protect groups?: string[]; // optional list of groups that can access the path } ``` ## Page level configuration The theme can be configured at the page level using front matter to pass `sidebar_custom_props`. ```yaml sidebar_custom_props: slashid: auth: true groups: - member ``` The above configuration will require the user to be authenticated and belong to the `member` group to view the page. `groups` property is optional and if not specified, the user only needs to be authenticated to view the page. ## Support Please read [SUPPORT.md](https://github.com/slashid/docusaurus-slashid-login/blob/main/SUPPORT.md) for details on how to get support for this project.