1.0.5 • Published 8 months ago

@itcase/storybook-addon-auth v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Storybook Addon Authorization

Storybook Addon Authorization can be used to getting data from REST API

Installation

npm i -D @itcase/storybook-addon-auth

Configuration

Then, add following content to .storybook/main.ts:

export default {
  addons: ['@itcase/storybook-addon-auth'],
};

Add @itcase/storybook-addon-auth options .storybook/preview.jsx

import type { Preview } from '@storybook/react'

import axios from 'axios'
import { axiosInstanceITCase } from '@itcase/common'

import { RootStoreProvider } from '../src/providers/RootStoreProvider'
import rootStore from '../src/stores/RootStore'

import { USERS } from './config/users'

axios.defaults.headers.post['Content-Type'] = 'application/json'
axios.defaults.headers.post.Accept = 'application/json'
axios.defaults.headers.common.Authorization = `Token ${process.env.AUTH_TOKEN}`
axiosInstanceITCase.defaults.headers.post['Content-Type'] = 'application/json'
axiosInstanceITCase.defaults.headers.post.Accept = 'application/json'

const preview: Preview = {
  parameters: {
    authorization: {
      options: {
        values: USERS,
        signInUrl: `${process.env.REST_BASE_URL}/rest/sign-in/`,
        profileUrl: `${process.env.REST_BASE_URL}/rest/profile/`,
      },
    },
  },
  decorators: [
    (Story: FC, storybookState) => {
      return (
        <RootStoreProvider>
          <Story />
        </RootStoreProvider>
      )
    },
  ],
  loaders: [
    async (storybookState) => {
      const authToken = storybookState.globals.authorization?.token
      if (rootStore.userStore.token !== authToken) {
        rootStore.userStore.update({ token: authToken })
      }
    },
  ],
}

Create user list config/users.ts

import { DEFAULT_USERS } from '@itcase/storybook-addon-auth/defaults'

const USERS = {
  user: {
    name: 'User',
    // 👇 User Token from env
    token: process.env.USER_AUTH_TOKEN,
    color: '#777777'
  },
  manager: {
    name: 'Manager',
    // 👇 User Token from env
    token: process.env.MANAGER_AUTH_TOKEN,
    color: '#D80E4F'
  },
  admin: {
    name: 'Admin',
    // 👇 User Token from env
    token: process.env.ADMIN_AUTH_TOKEN,
    color: '#1EA5FC'
  },
  ...DEFAULT_USERS,
}

export { USERS }

Usage

By default, the authorization toolbar includes a unregistred user.

Use via Authorization tab

You can use the login form to get any user token.

Tab

Use via tool

Use a predefined list of users with tokens in config/users.ts

Tool

1.0.5

8 months ago

1.0.4

9 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

11 months ago

1.0.0

11 months ago