(null);
useEffect(() => {
if (mindSpacePreview) return;
setUnauthorizedHandler(() => {
setAuthed(false);
setUser(null);
if (window.location.pathname !== '/') {
navigate('/', { replace: true });
}
});
void checkAuth().then((status) => {
if (status.mode === 'unavailable') {
setAuthUnavailable(status.message ?? '用户认证服务暂时不可用,请稍后刷新');
setAuthed(false);
return;
}
setAuthUnavailable(null);
setLegacyMode(status.mode === 'legacy');
setAuthed(status.authenticated);
setUser(status.user ?? null);
setCapabilities(status.capabilities);
setGrantedSkills(status.grantedSkills);
if (status.authenticated) void loadBlockedWords();
});
return () => setUnauthorizedHandler(null);
}, [mindSpacePreview, navigate]);
if (mindSpacePreview) {
return (
{
window.location.href = '/';
}}
onLogout={() => {
window.location.href = '/';
}}
/>
);
}
if (authed === null) {
return 正在验证登录状态…
;
}
if (authUnavailable) {
return (
{authUnavailable}
);
}
if (!authed) {
return (
{
const params = new URLSearchParams(window.location.search);
const returnTo = params.get('return_to') ?? null;
if (returnTo) {
try {
const url = new URL(returnTo, window.location.origin);
if (url.origin === window.location.origin) {
window.location.href = url.toString();
return;
}
} catch {
// ignore invalid URLs
}
}
setAuthed(true);
setUser(nextUser ?? null);
setCapabilities(nextCapabilities);
setGrantedSkills(nextSkills);
}}
/>
);
}
return (
{
clearAllStoredSessionIds();
setAuthed(false);
setUser(null);
}}
/>
);
}