import React, { ComponentType } from 'react';
import Auth0Context, { Auth0ContextInterface } from './auth0-context';
/**
* Components wrapped in `withAuth0` will have an additional `auth0` prop
*/
export interface WithAuth0Props {
auth0: Auth0ContextInterface;
}
/**
* ```jsx
* class MyComponent extends Component {
* render() {
* // Access the auth context from the `auth0` prop
* const { user } = this.props.auth0;
* return
Hello {user.name}!
* }
* }
* // Wrap your class component in withAuth0
* export default withAuth0(MyComponent);
* ```
*
* Wrap your class components in this Higher Order Component to give them access to the Auth0Context.
*
* Providing a context as the second argument allows you to configure the Auth0Provider the Auth0Context
* should come from f you have multiple within your application.
*/
const withAuth0 = (
Component: ComponentType
,
context = Auth0Context
): ComponentType> => {
return function WithAuth(props): React.JSX.Element {
return (
{(auth: Auth0ContextInterface): React.JSX.Element => (
)}
);
};
};
export default withAuth0;