From 92280d3dbd3555221f7d7469556e1f5859d10b8b Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Tue, 13 Jan 2026 09:38:28 +0100 Subject: [PATCH] refactor session handling --- .vscode/extensions.json | 2 +- .vscode/settings.json | 10 +++++----- src/app/middleware/auth.global.ts | 14 ++++++++++---- src/app/pages/admin.vue | 3 --- src/app/pages/clients/[id].vue | 2 -- src/app/pages/index.vue | 3 --- src/app/pages/login.vue | 3 --- src/app/pages/me.vue | 1 - src/app/stores/auth.ts | 19 +++++++++++++------ src/server/api/session.get.ts | 9 +++++++-- src/shared/utils/permissions.ts | 5 +++++ 11 files changed, 41 insertions(+), 30 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 8d9063c1..819c8328 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,7 +3,7 @@ "aaron-bond.better-comments", "dbaeumer.vscode-eslint", "antfu.goto-alias", - "esbenp.prettier-vscode", + "prettier.prettier-vscode", "yoavbls.pretty-ts-errors", "bradlc.vscode-tailwindcss", "vue.volar", diff --git a/.vscode/settings.json b/.vscode/settings.json index f62f2c98..791e9e0a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,22 +1,22 @@ { "editor.tabSize": 2, "editor.useTabStops": false, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "prettier.prettier-vscode", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "always" }, "[vue]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "prettier.prettier-vscode" }, "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "prettier.prettier-vscode" }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "prettier.prettier-vscode" }, "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "prettier.prettier-vscode", "editor.tabSize": 4, "editor.useTabStops": false }, diff --git a/src/app/middleware/auth.global.ts b/src/app/middleware/auth.global.ts index 70a37e86..f8a5249e 100644 --- a/src/app/middleware/auth.global.ts +++ b/src/app/middleware/auth.global.ts @@ -1,28 +1,34 @@ +import type { SharedPublicUser } from '~~/shared/utils/permissions'; + export default defineNuxtRouteMiddleware(async (to) => { // api & setup handled server side if (to.path.startsWith('/api/') || to.path.startsWith('/setup')) { return; } + const event = useRequestEvent(); + + const userData = useState('user-data'); + const authStore = useAuthStore(); - const userData = await authStore.getSession(); + userData.value = await authStore.getSession(event); // skip login if already logged in if (to.path === '/login') { - if (userData?.username) { + if (userData.value?.username) { return navigateTo('/', { redirectCode: 302 }); } return; } // Require auth for every page other than Login - if (!userData?.username) { + if (!userData.value?.username) { return navigateTo('/login', { redirectCode: 302 }); } // Check for admin access if (to.path.startsWith('/admin')) { - if (!hasPermissions(userData, 'admin', 'any')) { + if (!hasPermissions(userData.value, 'admin', 'any')) { return abortNavigation('Not allowed to access Admin Panel'); } } diff --git a/src/app/pages/admin.vue b/src/app/pages/admin.vue index f4e70de7..48f30f21 100644 --- a/src/app/pages/admin.vue +++ b/src/app/pages/admin.vue @@ -38,9 +38,6 @@