{"version":3,"file":"static/js/593.076421fc.js","mappings":"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","sources":["components/Auth/PrivateRoute.tsx","components/Auth/RoleRoute.tsx"],"sourcesContent":["/**\n * 检查用户是否已登录\n */\nimport React, { useLayoutEffect, useState } from 'react';\nimport { message } from '@byte-design/ui';\nimport { useTranslation } from 'react-i18next';\nimport { observer } from 'mobx-react';\nimport { Outlet } from 'react-router-dom';\nimport { globalInfoStore } from '@/models/global';\nimport { goToLogin } from '@/utils';\n\nconst usePrivateRoute = (fetchingUserInfo: boolean, alreadyLoggedIn: boolean) => {\n const [t] = useTranslation();\n const [loggedIn, setLoggedIn] = useState(false);\n\n useLayoutEffect(() => {\n if (!alreadyLoggedIn) {\n // 用户信息接口调用还没结束\n if (fetchingUserInfo) {\n return;\n }\n\n message.error(t('not_login_error') || 'You have not logged in');\n // 未登录跳转到登录页面,默认以当前地址为回调地址\n goToLogin();\n return;\n }\n\n setLoggedIn(true);\n }, [fetchingUserInfo, alreadyLoggedIn]);\n\n return loggedIn;\n};\n\nconst PrivateRoute = ({ children }: { children: React.ReactNode }) => {\n const loggedIn = usePrivateRoute(globalInfoStore.loading, globalInfoStore.loggedIn);\n\n return <>{loggedIn ? children : null};\n};\n\nexport const PrivateOutlet = observer(() => {\n const loggedIn = usePrivateRoute(globalInfoStore.loading, globalInfoStore.loggedIn);\n\n return <>{loggedIn ? : null};\n});\n\nexport default observer(PrivateRoute);\n","import React, { useContext, useEffect, useState } from 'react';\nimport qs from 'query-string';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { message, notification } from '@byte-design/ui';\nimport { observer } from 'mobx-react';\nimport { getBaseName, goPage } from '@/utils';\nimport { globalInfoStoreContext, UserRoleEnum, MockModeEnum } from '@/models/global';\nimport PrivateRoute from '@/components/Auth/PrivateRoute';\nimport { usePersistFn } from '@/utils/hooks/common';\nimport Loading from '../Loading';\n\nconst RoleRoute = ({\n checkRoleAccess,\n children,\n needSignCheck = true\n}: {\n checkRoleAccess?: boolean;\n children: React.ReactNode;\n needSignCheck?: boolean;\n}) => {\n const { pathname } = useLocation();\n const globalInfoStore = useContext(globalInfoStoreContext);\n const { t } = useTranslation();\n const [loading, setLoading] = useState(true);\n const navigate = useNavigate();\n\n async function handleUserRoleLogic() {\n let canAccess = false;\n if (globalInfoStore.currentUserRole === UserRoleEnum.Partner) {\n canAccess = globalInfoStore.userRoles.includes(UserRoleEnum.Partner);\n }\n\n if (globalInfoStore.currentUserRole === UserRoleEnum.Advertiser) {\n canAccess = !!globalInfoStore.currentAccount.canSubmitOrder;\n if (canAccess && globalInfoStore.referralInfo?.isUnsupportedRegion) {\n goPage({\n spaName: globalInfoStore.userRolePage,\n subPath: '/project/list'\n });\n }\n }\n\n // 不匹配或无权限跳转提示页面\n if (!canAccess) {\n goPage({\n spaName: globalInfoStore.userRolePage,\n subPath: 'forbidden',\n query: {\n redirectUrl: encodeURI(window.location.href)\n }\n });\n }\n return canAccess;\n }\n\n const handleSignLogic = usePersistFn((signed: boolean) => {\n if (!signed && needSignCheck && pathname !== '/agreement') {\n message.error(t('need_sign_agreement_hint') || '');\n const redirectUrl = encodeURI(window.location.href);\n const baseName = getBaseName(globalInfoStore.userRolePage);\n if (window.location.pathname.includes(baseName)) {\n navigate({\n pathname: '/agreement',\n search: qs.stringify({ redirectUrl })\n });\n return;\n }\n goPage({\n spaName: globalInfoStore.userRolePage,\n subPath: 'agreement',\n query: { redirectUrl }\n });\n }\n });\n\n const checkSignedLogic = usePersistFn(async () => {\n // 如果未获取signed信息\n if (!globalInfoStore.signedTerms.has(globalInfoStore.currentUserRole!)) {\n const signed = await globalInfoStore.checkProtocolSign(globalInfoStore.currentUserRole!);\n // if (globalInfoStore.currentAccount.region === UserRegionEnum.NA || globalInfoStore.currentAccount?.isWhitelisted) {\n // handleSignLogic(signed!);\n // }\n handleSignLogic(signed!);\n } else {\n handleSignLogic(globalInfoStore.signedTerms.get(globalInfoStore.currentUserRole!)!);\n }\n });\n\n useEffect(() => {\n if (globalInfoStore?.impersonateInfo?.useMock) {\n notification.close('ttcx_mock');\n notification.open({\n key: 'ttcx_mock',\n message: `You are impersonating now (coreUserID: ${globalInfoStore?.impersonateInfo?.coreUserId})`,\n description: t(\n 'you_can_view_only__if_you_want_to_cancel_impersonating__you_can_inactive_the_tog',\n 'You can view only. If you want to cancel impersonating, you can inactive the toggle in impersonate page or close the impersonate page directly!'\n ),\n duration: 10000000\n });\n setLoading(false);\n return;\n }\n (async () => {\n setLoading(true);\n if (checkRoleAccess) {\n const hasAuth = await handleUserRoleLogic();\n if (hasAuth) {\n await checkSignedLogic();\n setLoading(false);\n }\n } else {\n await checkSignedLogic();\n setLoading(false);\n }\n })();\n }, [globalInfoStore?.impersonateInfo]);\n\n useEffect(() => {\n if (globalInfoStore?.impersonateData?.mock) {\n notification.close('ttcx_mock');\n const mockAccess =\n globalInfoStore?.impersonateData?.type === MockModeEnum.Edit ? 'edit and view' : 'view only';\n notification.open({\n key: 'ttcx_mock',\n message: `You are impersonating now (User: ${globalInfoStore?.impersonateData?.mock})`,\n description: `You can ${mockAccess}. If you want to cancel impersonating, you can log out to close the impersonate page directly!`,\n duration: 10000000\n });\n setLoading(false);\n return;\n }\n (async () => {\n setLoading(true);\n if (checkRoleAccess) {\n const hasAuth = await handleUserRoleLogic();\n if (hasAuth) {\n await checkSignedLogic();\n setLoading(false);\n }\n } else {\n await checkSignedLogic();\n setLoading(false);\n }\n })();\n }, [globalInfoStore?.impersonateData, pathname]);\n\n return {loading ? Loading : children};\n};\n\nexport default observer(RoleRoute);\n"],"names":["PrivateOutlet","usePrivateRoute","fetchingUserInfo","alreadyLoggedIn","t","useTranslation","useState","loggedIn","setLoggedIn","useLayoutEffect","message","error","goToLogin","observer","globalInfoStore","loading","Outlet","children","checkRoleAccess","needSignCheck","useLocation","pathname","useContext","globalInfoStoreContext","setLoading","navigate","useNavigate","handleUserRoleLogic","canAccess","currentUserRole","UserRoleEnum","Partner","userRoles","includes","Advertiser","currentAccount","canSubmitOrder","referralInfo","isUnsupportedRegion","goPage","spaName","userRolePage","subPath","query","redirectUrl","encodeURI","window","location","href","handleSignLogic","usePersistFn","signed","baseName","getBaseName","search","qs","stringify","checkSignedLogic","signedTerms","has","checkProtocolSign","get","useEffect","impersonateInfo","useMock","notification","close","open","key","coreUserId","description","duration","hasAuth","impersonateData","mock","mockAccess","type","MockModeEnum","Edit","PrivateRoute","Loading"],"sourceRoot":""}