Files
frontend-app-authn/src/common-components/UnAuthOnlyRoute.jsx
2023-08-15 17:23:34 +05:00

43 lines
1.0 KiB
JavaScript

import { useEffect, useState } from 'react';
import { getConfig } from '@edx/frontend-platform';
import { fetchAuthenticatedUser, getAuthenticatedUser } from '@edx/frontend-platform/auth';
import PropTypes from 'prop-types';
import {
DEFAULT_REDIRECT_URL,
} from '../data/constants';
/**
* This wrapper redirects the requester to our default redirect url if they are
* already authenticated.
*/
const UnAuthOnlyRoute = ({ children }) => {
const [authUser, setAuthUser] = useState({});
const [isReady, setIsReady] = useState(false);
useEffect(() => {
fetchAuthenticatedUser({ forceRefresh: !!getAuthenticatedUser() }).then((authenticatedUser) => {
setAuthUser(authenticatedUser);
setIsReady(true);
});
}, []);
if (isReady) {
if (authUser && authUser.username) {
global.location.href = getConfig().LMS_BASE_URL.concat(DEFAULT_REDIRECT_URL);
return null;
}
return children;
}
return null;
};
UnAuthOnlyRoute.propTypes = {
children: PropTypes.node.isRequired,
};
export default UnAuthOnlyRoute;