forked from wangziqi/gongxue-base
fix: guard H5 direct routes and refine legacy UI
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import Taro from '@tarojs/taro';
|
||||
import Taro, { useRouter } from '@tarojs/taro';
|
||||
import { Button, Text, View } from '@tarojs/components';
|
||||
import { appEnv, assertFrontendSecretsAreAbsent, ensureRuntimeConfigLoaded, isH5Runtime } from '@/env';
|
||||
import { resolveTenant } from '@/services/api';
|
||||
import { landingPath, requirePlatformAdmin, requireTenantAdmin } from '@/services/routeGuard';
|
||||
import { landingPath, requirePlatformAdmin, requireSignedIn, requireTenantAdmin, safeRedirectPath } from '@/services/routeGuard';
|
||||
import './index.css';
|
||||
|
||||
function hostFromRuntime() {
|
||||
@@ -12,23 +12,25 @@ function hostFromRuntime() {
|
||||
}
|
||||
|
||||
export default function BootstrapPage() {
|
||||
const router = useRouter();
|
||||
const [status, setStatus] = useState('正在解析租户');
|
||||
const [error, setError] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
const redirectPath = safeRedirectPath(router.params?.redirect ? decodeURIComponent(router.params.redirect) : landingPath());
|
||||
assertFrontendSecretsAreAbsent();
|
||||
ensureRuntimeConfigLoaded()
|
||||
.then(() => resolveTenant({ host: hostFromRuntime() }))
|
||||
.then(async () => {
|
||||
if (appEnv.portal === 'student') return null;
|
||||
setStatus('正在校验登录状态');
|
||||
if (appEnv.portal === 'platform-admin') return requirePlatformAdmin(landingPath());
|
||||
return requireTenantAdmin(landingPath());
|
||||
if (appEnv.portal === 'student') return requireSignedIn(redirectPath);
|
||||
if (appEnv.portal === 'platform-admin') return requirePlatformAdmin(redirectPath);
|
||||
return requireTenantAdmin(redirectPath);
|
||||
})
|
||||
.then(authPayload => {
|
||||
if (appEnv.portal !== 'student' && !authPayload) return;
|
||||
if (!authPayload) return;
|
||||
setStatus('租户解析完成');
|
||||
Taro.redirectTo({ url: landingPath() });
|
||||
Taro.redirectTo({ url: redirectPath });
|
||||
})
|
||||
.catch((nextError: Error) => {
|
||||
setError(nextError.message);
|
||||
|
||||
Reference in New Issue
Block a user