@aaronpowell/react-static-web-apps-auth

A library to help creating authenticated React apps on Azure Static Web Apps

Usage no npm install needed!

<script type="module">
  import aaronpowellReactStaticWebAppsAuth from 'https://cdn.skypack.dev/@aaronpowell/react-static-web-apps-auth';
</script>

README

Static Web App Auth tools for React

Node.js CI | npm version

This package is a series of helper tools for working with Azure Static Web Apps Authentication and Authorization from React.

Installation

You can install a stable release from npm:

npm install @aaronpowell/react-static-web-apps-auth

Or you can install the latest build from GitHub packages.

Usage

The package contains some components that wrap the functionality for you.

<StaticWebAppsAuthLogins />

const Login = () => {
  return (
    <div>
      <h2>Login to our site</h2>
      <StaticWebAppsAuthLogins aad={true} twitter={false} customProviders={[ id: "okta", name: "Okta" ]} />
    </div>
  );
};

This component will display all the auth providers you want to use on your application and links for the user. Custom OIDC providers can be registered using the customProviders prop and provide the id of the provider and the name you want displayed to the user.

By default, only managed auth providers will display, but they can be turned off by setting their corresponding prop to false. All providers available as configurable options can be enabled using props.

To redirect to a specific URL post-login, provide that path in the postLoginRedirect prop.

The default label is Sign in using ${name}, but can be overridden with the label prop, which takes a function that receives the name of the provider and returns the label string.

<ClientPrincipalContextProvider>

const App = () => {
  return (
    <ClientPrincipalContextProvider>
      <MySite />
    </ClientPrincipalContextProvider>
  );
};

This component provides React Context for the current user (or a series of undefined values when you're not logged in), aligning with the information available in the Client Principal.

Additionally, a useContext React Hook is available, useClientPrincipal, for use within the application.

<Logout />

This component provides the logout function through Static Web Apps.

To redirect to a specific URL post-logout, provide the path in the postLogoutRedirect prop.

<UserPurge />

This component provides the user with the ability to remove their identifying information from Static Web Apps. By default it'll only purge them from the current domain, but set the globally prop to true if you with to give them the ability to completely remove themselves from Static Web Apps.

Styling

Each of the components generates minimal HTML (a single <a> tag) to make it easier to style within an application. The DOM elements have the class azure-swa-auth, defined in ./constants as StaticWebAppsClassName, on them, along with the component type, login, logout or purge.

Additionally, the login components have the provider as a class, so providers can be styled individually.

License

MIT