React Step-Up quickstart
Prerequisites
Prerequisites
If you haven't integrated Frontegg login into your application, the minimal SDK version that is required for this quickstart is @frontegg/react@6.0.20
Frontegg's step-up SDK for React provides an option to integrate with step-up in two ways:
- By hooks -
useIsSteppedUp&useStepUp - By a HOC -
SteppedUpContent
The useIsSteppedUp hook
The useIsSteppedUp is used to check for a user’s step-up state. The hook returns either a true or false value depending on the user's stepped up state.
// Example #1
const isSteppedUp = useIsSteppedUp(); // no max-age
// Example #2
const isSteppedUp = useIsSteppedUp({ maxAge: 60 * 60 }); // 1 hourThe useStepUp Hook
To trigger the user's step-up flow, use theuseStepup hook. The hook will return the stepUp function which will enroll the user to Step Up.
// Example #1
const stepUp = useStepUp();
stepUp(); // no max-age
// Example #2
const stepUp = useStepUp();
stepUp({ maxAge: 60 * 60 }); // 1 hourmaxAge parameter
maxAge parameter
For both useStepUp and useIsSteppedUp, You can pass a maxAge parameter (value stated in seconds). If maxAge won't be provided, the JWT's age won't get checked. Note that users need to be authenticated before they are stepped-up. If you set a max_age parameter, users will need to re-authenticate if they pass this timeframe (calculated from the JWT's auth_time claim).
Full Step-Up flow (hooks)
The complete flow via hooks would be as follows:
import React from 'react';
import { useStepUp, useIsSteppedUp } from '@frontegg/react';
const MAX_AGE = 60 * 60; // 1 hour
const Page = () => {
const stepUp = useStepUp();
const isSteppedUp = useIsSteppedUp({ maxAge: MAX_AGE });
return (
<>
{ isSteppedUp ? (
<div>
You are STEPPED UP!
</div>
) : (
<button onClick={() => {
stepUp({ maxAge: MAX_AGE });
}}>
Step me up
</button>
)}
</>
);
};SteppedUpContent
Use the SteppedUpContent HOC to render content that should be displayed only when the user is stepped up.
If the user is not stepped up, the component will trigger the step-up flow unless you disable it by props.
Passing HOC Component Properties
Passing HOC Component Properties
You can pass the following component properties in the HOC: - maxAge - value indicated in seconds. If maxAge won't be provided— the JWT's age won't be checked. - preventSteppingUp - prevent triggering the step-up operation when the user isn’t stepped up. Default to false.
When multiple HOCs are rendered in the same render cycle, you SHOULD allow up to one of them to trigger the step-up flow. That means that you should pass preventSteppingUp = false to all of them except for one.
Full example - by HOC
The complete examples by HOC are as follows:
import { SteppedUpContent } from '@frontegg/react';
// Example #1
<SteppedUpContent maxAge={60 * 60}>
You are STEPPED UP!
</SteppedUpContent>
// Example #2 - prevent stepping up when the user isn't stepped up
<SteppedUpContent maxAge={60 * 60} preventSteppingUp={true}>
You are STEPPED UP!
</SteppedUpContent>
// Example #3 - Using a render props
<SteppedUpContent
maxAge={60 * 60}
render={isSteppedUp => isSteppedUp && <div>You are STEPPED UP!</div>}
/>