feat(core): avoid popup window being blocked (#6451)

This commit is contained in:
liuyi
2024-04-03 16:50:09 +08:00
committed by GitHub
parent 3e9e2ce93b
commit 6fa4b7da54
14 changed files with 78 additions and 28 deletions

View File

@@ -0,0 +1,43 @@
import { type LoaderFunction, Navigate, useLoaderData } from 'react-router-dom';
const trustedDomain = [
'stripe.com',
'github.com',
'twitter.com',
'discord.gg',
'youtube.com',
't.me',
'reddit.com',
];
export const loader: LoaderFunction = async ({ request }) => {
const url = new URL(request.url);
const searchParams = url.searchParams;
const redirectUri = searchParams.get('redirect_uri');
if (!redirectUri) {
return { allow: false };
}
const target = new URL(redirectUri);
if (
trustedDomain.some(domain =>
new RegExp(`.?${domain}$`).test(target.hostname)
)
) {
location.href = redirectUri;
}
return { allow: true };
};
export const Component = () => {
const { allow } = useLoaderData() as { allow: boolean };
if (allow) {
return null;
}
return <Navigate to="/404" />;
};