npm.io
1.2.0 • Published 12 months ago

@recidiviz/auth

Licence
GPL-3.0-only
Version
1.2.0
Deps
4
Size
103 kB
Vulns
0
Weekly
0

Recidiviz Authentication Module

Auth0-powered authentication module for use within the web applications that make up the Recidiviz web platform.

Usage

This module contains two components:

Component Description
AuthStore a mobX data store (Defining data stores) that handles Auth0 authentication, authentication states, logout and token retrieval functionality
AuthWall a React functional component that wraps around any component that requires authentication before rendering - it accepts (as props) and displays the provided loading component, unauthorized page and email verification page based on authentication status and app state

AuthStore

Initialize the AuthStore by providing it with { authSettings } (see Auth0ClientOptions):

const authStore = new AuthStore({ authSettings });

AuthWall

<AuthWall 
  authStore
  loading
  unauthorizedPage
  emailVerificationPage
  handleTargetUrl
>
  <ProtectedComponent />
</AuthWall>
Required Props Description
authStore initialized AuthStore
loading contents to render for loading page/state
unauthorizedPage contents to render for an unauthorized user logging in
emailVerificationPage contents to render for a user who has not verified their email address

            Optional Props Description
handleTargetUrl handleTargetUrl: ((targetUrl: string) => void) | undefined
runs a callback function, if provided, that will handle the Auth0 appState target URL

Local Development

The component library can be developed directly alongside dependent projects via yalc.

Running yarn watch will rebuild the application bundle and publish it to yalc whenever you make changes. In the dependent project(s), there is a one-time step of running yalc add --link @recidiviz/auth (and yarn install) before starting the development server for that application; once this is done, your changes here should be picked up automatically and trigger a reload. Run yalc remove @recidiviz/auth to restore the project's dependencies to their previous state.

Module Scope

The package's main entrypoint is at src/index.ts.