Add redirect after login
This commit is contained in:
@@ -5,6 +5,7 @@ const AuthRoute = () => {
|
|||||||
const matches = useMatches()
|
const matches = useMatches()
|
||||||
const lastMatch = matches.reduce((_, second) => second)
|
const lastMatch = matches.reduce((_, second) => second)
|
||||||
const handle = lastMatch.handle as RouteHandle
|
const handle = lastMatch.handle as RouteHandle
|
||||||
|
const location = useLocation()
|
||||||
const outlet = useOutlet()
|
const outlet = useOutlet()
|
||||||
const isLogin = getLoginStatus()
|
const isLogin = getLoginStatus()
|
||||||
|
|
||||||
@@ -13,7 +14,13 @@ const AuthRoute = () => {
|
|||||||
handle?.title ? handle?.title : PRODUCTION_NAME
|
handle?.title ? handle?.title : PRODUCTION_NAME
|
||||||
}${handle?.titlePostfix ?? ''}`
|
}${handle?.titlePostfix ?? ''}`
|
||||||
if (handle?.auth && !isLogin) {
|
if (handle?.auth && !isLogin) {
|
||||||
return <Navigate to="/login" />
|
return (
|
||||||
|
<Navigate
|
||||||
|
to={`/login${
|
||||||
|
'?redirect=' + encodeURIComponent(lastMatch.pathname + location.search)
|
||||||
|
}`}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
if (isLogin && lastMatch.pathname === '/login') {
|
if (isLogin && lastMatch.pathname === '/login') {
|
||||||
return <Navigate to="/" />
|
return <Navigate to="/" />
|
||||||
@@ -26,6 +33,7 @@ const AuthRoute = () => {
|
|||||||
handle?.titlePrefix,
|
handle?.titlePrefix,
|
||||||
isLogin,
|
isLogin,
|
||||||
lastMatch.pathname,
|
lastMatch.pathname,
|
||||||
|
location.search,
|
||||||
outlet
|
outlet
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import '@/assets/css/pages/login.scss'
|
|||||||
const Login: React.FC = () => {
|
const Login: React.FC = () => {
|
||||||
const [messageApi, contextHolder] = message.useMessage()
|
const [messageApi, contextHolder] = message.useMessage()
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
|
const [searchParams] = useSearchParams()
|
||||||
const [isLoggingIn, setIsLoggingIn] = useState(false)
|
const [isLoggingIn, setIsLoggingIn] = useState(false)
|
||||||
|
|
||||||
const onFinish = (values: LoginForm) => {
|
const onFinish = (values: LoginForm) => {
|
||||||
@@ -25,7 +26,11 @@ const Login: React.FC = () => {
|
|||||||
setToken(data?.token ?? '')
|
setToken(data?.token ?? '')
|
||||||
void messageApi.success('登录成功')
|
void messageApi.success('登录成功')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
if (searchParams.has('redirect')) {
|
||||||
|
navigate(searchParams.get('redirect') ?? '/')
|
||||||
|
} else {
|
||||||
navigate('/')
|
navigate('/')
|
||||||
|
}
|
||||||
}, 1500)
|
}, 1500)
|
||||||
break
|
break
|
||||||
case SYSTEM_USERNAME_NOT_FOUND:
|
case SYSTEM_USERNAME_NOT_FOUND:
|
||||||
|
|||||||
Reference in New Issue
Block a user