From ce867de7bc2f5695a2a22bab5ff21be4e0168842 Mon Sep 17 00:00:00 2001 From: Ryderjj89 Date: Wed, 1 Oct 2025 19:55:49 -0400 Subject: [PATCH] feat: Implement dedicated login page and authentication middleware --- components/LoginModal.vue | 118 -------------------------------------- middleware/auth.ts | 21 +++++++ pages/admin.vue | 4 ++ pages/index.vue | 14 +---- pages/login.vue | 89 ++++++++++++++++++++++++++++ 5 files changed, 115 insertions(+), 131 deletions(-) delete mode 100644 components/LoginModal.vue create mode 100644 middleware/auth.ts create mode 100644 pages/login.vue diff --git a/components/LoginModal.vue b/components/LoginModal.vue deleted file mode 100644 index bcdc910..0000000 --- a/components/LoginModal.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - diff --git a/middleware/auth.ts b/middleware/auth.ts new file mode 100644 index 0000000..4eafd33 --- /dev/null +++ b/middleware/auth.ts @@ -0,0 +1,21 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + const token = useCookie('auth_token') + + if (!token.value && to.path === '/admin') { + // Redirect to login page if not authenticated and trying to access admin + return navigateTo('/login') + } + + if (token.value) { + try { + // Verify token with server + await $fetch('/api/auth/verify') + } catch { + // If token is invalid, clear it and redirect to login + token.value = '' + if (to.path === '/admin') { + return navigateTo('/login') + } + } + } +}) diff --git a/pages/admin.vue b/pages/admin.vue index 5277306..8f28cf6 100644 --- a/pages/admin.vue +++ b/pages/admin.vue @@ -159,6 +159,10 @@ diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..643fffd --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,89 @@ + + +