12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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<SSOReq & {to?: string}>() ?? {}
- 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 (<EmptyLoading />)
- }
- return children
- }
|