Files
AstralRinth/apps/frontend/src/middleware/auth.js
2024-07-04 21:46:29 -07:00

36 lines
830 B
JavaScript

const whitelistedParams = ['flow', 'error']
export default defineNuxtRouteMiddleware(async (_to, from) => {
const config = useRuntimeConfig()
const auth = await useAuth()
if (!auth.value.user) {
const fullPath = from.fullPath
const url = new URL(fullPath, config.public.apiBaseUrl)
const extractedParams = whitelistedParams.reduce((acc, param) => {
if (url.searchParams.has(param)) {
acc[param] = url.searchParams.get(param)
url.searchParams.delete(param)
}
return acc
}, {})
const redirectPath = encodeURIComponent(url.pathname + url.search)
return await navigateTo(
{
path: '/auth/sign-in',
query: {
redirect: redirectPath,
...extractedParams,
},
},
{
replace: true,
}
)
}
})