react-use-auth0
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

useAuth0

This library hides all the boilerplate code required to authenticate a React SPA using Auth0. Most of the code is borrowed from the official Auth0 tutorial, but also adds some nice-to-have utilities for common use-cases.

Installation

to install the library, do as usual:

npm install --save react-use-auth0

Usage

As the name implies, it uses react hooks. Here's a snippet of how to use the useAuth0 and the Auth0Setup HoC that provides the context for the children:

import React from "react";
import * as ReactDOM from "react-dom";
import { Auth0Setup, useAuth0, useAuth0Token, useAuth0User } from "../index";

function PrivateData() {
    const user = useAuth0User();
    const token = useAuth0Token();
    return (
        <div>
            {user.result && <span>your user is: {JSON.stringify(user.result)}</span>}
            {token.result && <button onClick={() => console.log(token.result)}>log token</button>}
        </div>
    );
}

function LogoutButton() {
    const auth = useAuth0();
    return <button onClick={() => auth.logout()}>Logout</button>
}

function LoginButton() {
    const auth = useAuth0();
    return <button onClick={() => auth.loginWithRedirect({ appState: { button: "button_1" } })}>Login</button>
}

function App() {
    const auth = useAuth0();
    return (
        <>
            {auth.isAuthenticated && <PrivateData />}
            {!auth.isAuthenticated ? <LoginButton /> : <LogoutButton />}
        </>
    );
}

// A function that routes the user to the right place
// after login
const onRedirectCallback = (appState: any) => {
    window.history.replaceState({}, document.title, window.location.pathname);
    const button = appState && appState.button;
    console.log(`logged in from button: ${button}`);
};

ReactDOM.render(
    <Auth0Setup
        domain="my-tenant.auth0.com"
        clientId="client-id-provided-by-auth0"
        redirectUri="http://localhost:3001"
        onRedirectCallback={onRedirectCallback}
        scope="openid"
    >
        <App />
    </Auth0Setup>,
    document.getElementById("root")
);

Demo

You can find a very basic example in the /demo folder. To run it, first change your tenant and client id inside demo.tsx and then start the server by running npm run start

Readme

Keywords

Package Sidebar

Install

npm i react-use-auth0

Weekly Downloads

1

Version

1.1.2

License

MIT

Unpacked Size

21.5 kB

Total Files

6

Last publish

Collaborators

  • scarmuega