Files
Rocketmc/apps/frontend/src/middleware/auth.ts
2024-07-20 00:24:35 +00:00

34 lines
780 B
TypeScript

const whitelistedParams = ["flow", "error"];
export default defineNuxtRouteMiddleware(async (_to, from) => {
const config = useRuntimeConfig();
const auth = await useAuth();
if (auth.value.user) return;
const fullPath = from.fullPath;
const url = new URL(fullPath, config.public.apiBaseUrl);
const extractedParams = Object.create(null) as Record<string, string>;
for (const param of whitelistedParams) {
const val = url.searchParams.get(param);
if (val != null) {
extractedParams[param] = val;
url.searchParams.delete(param);
}
}
return await navigateTo(
{
path: "/auth/sign-in",
query: {
redirect: `${url.pathname}${url.search}`,
...extractedParams,
},
},
{ replace: true },
);
});