From ce4250281fe6561f6d1c3730675b179b3b8e4b4b Mon Sep 17 00:00:00 2001 From: Sasha Sorokin <10401817+brawaru@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:02:00 +0200 Subject: [PATCH] Refactor auth middleware (#1279) - Switch to TypeScript - Use early return - Switch to regular for loop Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com> --- apps/frontend/src/middleware/auth.js | 35 ---------------------------- apps/frontend/src/middleware/auth.ts | 35 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 35 deletions(-) delete mode 100644 apps/frontend/src/middleware/auth.js create mode 100644 apps/frontend/src/middleware/auth.ts diff --git a/apps/frontend/src/middleware/auth.js b/apps/frontend/src/middleware/auth.js deleted file mode 100644 index 6244ee721..000000000 --- a/apps/frontend/src/middleware/auth.js +++ /dev/null @@ -1,35 +0,0 @@ -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, - }, - ); - } -}); diff --git a/apps/frontend/src/middleware/auth.ts b/apps/frontend/src/middleware/auth.ts new file mode 100644 index 000000000..5cc782611 --- /dev/null +++ b/apps/frontend/src/middleware/auth.ts @@ -0,0 +1,35 @@ +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; + + for (const param of whitelistedParams) { + const val = url.searchParams.get(param); + if (val != null) { + extractedParams[param] = val; + url.searchParams.delete(param); + } + } + + const redirect = encodeURIComponent(url.pathname + url.search); + + return await navigateTo( + { + path: "/auth/sign-in", + query: { + redirect, + ...extractedParams, + }, + }, + { replace: true }, + ); +});