import {LoginApis, SSOReq} from "../../api/user.ts"; import {useEffect, useState} from "react"; import {Message} from "auto-antd"; import {getFirst, getLastTo, parseQuery} from "../../utils"; import {EmptyLoading} from "../../components/empty"; /** * 对接SSO登录 * @param children * @constructor */ export const SSOWrapper = ({children}: any)=>{ const [loading,setLoading] = useState(true) const onSSOCallback = ()=>{ const { query, url} = parseQuery() ?? {} if (!query?.code){ setLoading(false) return } Object.keys(query).forEach(k=>{ query[k] = getFirst(query[k]) }) setLoading(true); LoginApis.oauth2Callback(query) .then(({data})=>{ if (data.code === 0){ Message.success(data.msg); }else { Message.warning(data.msg); } }) .catch(e=>{ console.log('oauth2Callback error',e) Message.error('登录失败,请重新登录!'); }) .finally(()=>{ const lastTo = getLastTo(); window.location.href = `${url}#${lastTo}`; setLoading(false) }) } useEffect(()=>{ onSSOCallback() },[]) if (loading){ return () } return children }