From 540812d0605e31247d6bd07a7727449842a28f98 Mon Sep 17 00:00:00 2001 From: Charles Zhao Date: Sun, 29 May 2022 22:34:08 +0800 Subject: [PATCH] refactor(console): handle user navigates to 'callback' after authenticated --- packages/console/src/pages/Callback/index.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 =