Using npm
npm install loginradius-react
Configure the SDK by wrapping your application in LRAuthProvider
:
// src/index.jsimport React from "react";import ReactDOM from "react-dom";import App from "./App";import { LRAuthProvider } from "loginradius-react";
ReactDOM.render( <React.StrictMode> <LRAuthProvider appName="YOUR_LOGINRADIUS_APPNAME" apiKey="YOUR_LOGINRADIUS_APIKEY" redirectUri={window.location.origin} > <App /> </LRAuthProvider> </React.StrictMode>, document.getElementById("root"));
Use the useLRAuth
hook in your components to access authentication state (isLoading
, isAuthenticated
and user
) and authentication methods (loginWithRedirect
and logout
):
// src/App.jsimport React from "react";import { useLRAuth } from "loginradius-react";
function App() { const { isLoading, isAuthenticated, error, user, loginWithRedirect, logout } = useLRAuth();
if (isLoading) { return <div>Loading...</div>; } if (error) { return <div>Oops... {error.message}</div>; }
if (isAuthenticated) { return ( <div> Hello {user.name}{" "} <button onClick={() => logout({ returnTo: window.location.origin })}> Log out </button> </div> ); } else { return <button onClick={() => loginWithRedirect()}>Log in</button>; }}
export default App;
Protect a route component using the withAuthenticationRequired
higher order component. Visits to this route when unauthenticated will redirect the user to the login page and back to this page after login:
import React from "react";import { withAuthenticationRequired } from "loginradius-react";
const PrivateRoute = () => <div>Private</div>;
export default withAuthenticationRequired(PrivateRoute, { // Show a message while the user waits to be redirected to the login page. onRedirecting: () => <div>Redirecting you to the login page...</div>,});
Call a protected API with an Access Token:
import React, { useEffect, useState } from "react";import { useLRAuth } from "loginradius-react";
const CallAPI = () => { const { getAccessTokenSilently } = useLRAuth(); const [resp setResp] = useState(null);
useEffect(() => { (async () => { try { const token = await getAccessTokenSilently(); const response = await fetch( `https://api.loginradius.com/identity/v2/auth/access_token/validate?access_token=${token}&apiKey=${process.env.REACT_APP_API_KEY}`, {} ); setResp(await response.json()); } catch (e) { console.error(e); } })(); }, [getAccessTokenSilently]);
if (!resp) { return <div>Loading...</div>; }
return ( <span>{JSON.stringify(state.apiMessage, null, 2)}</span> );};
export default CallAPI;
To implement loginWithPopup
functionality in your app you need to perform following steps:
Identity Experience Framework (IDX) -> Themes -> Customize -> Switch to Advance Editor
.Custom JS
, expand and select Add New
.Url
tab - https://hosted-pages.lrinternal.com/Themes/sdk/default-auth-react-sdk.js and click ConfirmloginWithPopup
method in your application.We appreciate feedback and contribution to this repo! Before you get started, please see the following:
For support or to provide feedback, please raise an issue on our issue tracker.
This project is licensed under the MIT license. See the LICENSE file for more info.