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 @@ - - - - - - Admin Login - - - - - - - - - - - - - {{ error }} - - - - - Cancel - - - Login - - - - - - - - - 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 @@ + + + + + + + Admin Login + + + + + + + + + + + + + + {{ error }} + + + + Login + + + + + + +