1.0.1 • Published 1 year ago

@recidiviz/auth v1.0.1

Weekly downloads
-
License
GPL-3.0-only
Repository
-
Last release
1 year ago

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:

ComponentDescription
AuthStorea mobX data store (Defining data stores) that handles Auth0 authentication, authentication states, logout and token retrieval functionality
AuthWalla 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 });

FunctionsDescription
auth0Clientasynchronously creates the Auth0Client instance
authenticateinitializes Auth0Client, handles redirect, sets the user object and authentication state
logoutclears the Auth0 session and performs a redirect to /v2/logout
getTokenSilentlycalls Auth0's getTokenSilently function to fetch a new access token with no interaction
          PropertiesDescription
emailVerifiedindicates whether the user has verified their email address
isAuthorizedindicates whether the user has successfully authenticated
isLoadingindicates whether there is an active loading state
errorstores active error
userstores information about the logged-in user

AuthWall

<AuthWall 
  authStore
  loading
  unauthorizedPage
  emailVerificationPage
  handleTargetUrl
>
  <ProtectedComponent />
</AuthWall>
Required PropsDescription
authStoreinitialized AuthStore
loadingcontents to render for loading page/state
unauthorizedPagecontents to render for an unauthorized user logging in
emailVerificationPagecontents to render for a user who has not verified their email address
            Optional PropsDescription
handleTargetUrlhandleTargetUrl: ((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.