diff --git a/packages/console/src/pages/Callback/index.tsx b/packages/console/src/pages/Callback/index.tsx index d13670e0f..efd548f30 100644 --- a/packages/console/src/pages/Callback/index.tsx +++ b/packages/console/src/pages/Callback/index.tsx @@ -1,12 +1,24 @@ import { LogtoError, OidcError, useHandleSignInCallback } from '@logto/react'; -import React from 'react'; +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; import AppError from '@/components/AppError'; import LogtoLoading from '@/components/LogtoLoading'; import { getBasename } from '@/utilities/app'; const Callback = () => { - const { error } = useHandleSignInCallback(getBasename()); + const { error, isAuthenticated } = useHandleSignInCallback(getBasename()); + const navigate = useNavigate(); + + /** + * Redirect back to the home page if the user is already authenticated. + * Corner case when user mistakenly navigate to `/callback` route after a successful authentication. + */ + useEffect(() => { + if (isAuthenticated) { + navigate('/'); + } + }, [isAuthenticated, navigate]); if (error) { const errorCode =