import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import React, { useEffect, useState } from 'react'; import { showError } from 'utils/common'; import useLogin from 'hooks/useLogin'; // material-ui import { useTheme } from '@mui/material/styles'; import { Grid, Stack, Typography, useMediaQuery, CircularProgress } from '@mui/material'; // project imports import AuthWrapper from '../AuthWrapper'; import AuthCardWrapper from '../AuthCardWrapper'; import Logo from 'ui-component/Logo'; // assets // ================================|| AUTH3 - LOGIN ||================================ // const OidcOAuth = () => { const theme = useTheme(); const matchDownSM = useMediaQuery(theme.breakpoints.down('md')); const [searchParams] = useSearchParams(); const [prompt, setPrompt] = useState('处理中...'); const { oidcLogin } = useLogin(); let navigate = useNavigate(); const sendCode = async (code, state, count) => { const { success, message } = await oidcLogin(code, state); if (!success) { if (message) { showError(message); } if (count === 0) { setPrompt(`操作失败,重定向至登录界面中...`); await new Promise((resolve) => setTimeout(resolve, 2000)); navigate('/login'); return; } count++; setPrompt(`出现错误,第 ${count} 次重试中...`); await new Promise((resolve) => setTimeout(resolve, 2000)); await sendCode(code, state, count); } }; useEffect(() => { let code = searchParams.get('code'); let state = searchParams.get('state'); sendCode(code, state, 0).then(); }, []); return ( OIDC 登录 {prompt} ); }; export default OidcOAuth;