From 01c0c152abc4873cdb30c37e9e9d26f0138b524a Mon Sep 17 00:00:00 2001 From: Bernd Storath <999999bst@gmail.com> Date: Wed, 11 Sep 2024 08:17:35 +0200 Subject: [PATCH] basic user menu and admin page --- src/app/components/ui/UserMenu.vue | 90 ++++++++++++++++++++++++++++++ src/app/layouts/Header.vue | 23 +------- src/app/pages/admin/index.vue | 5 +- src/app/pages/index.vue | 2 + src/app/stores/auth.ts | 11 +++- src/server/api/session.get.ts | 1 + src/server/middleware/session.ts | 4 +- 7 files changed, 109 insertions(+), 27 deletions(-) create mode 100644 src/app/components/ui/UserMenu.vue diff --git a/src/app/components/ui/UserMenu.vue b/src/app/components/ui/UserMenu.vue new file mode 100644 index 00000000..debecc0a --- /dev/null +++ b/src/app/components/ui/UserMenu.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/app/layouts/Header.vue b/src/app/layouts/Header.vue index d1e5827b..50625aad 100644 --- a/src/app/layouts/Header.vue +++ b/src/app/layouts/Header.vue @@ -51,14 +51,7 @@ class="w-5 h-5 peer fill-gray-400 peer-checked:fill-gray-600 dark:fill-neutral-600 peer-checked:dark:fill-neutral-400 group-hover:dark:fill-neutral-500 transition" /> - - {{ $t('logout') }} - - +
@@ -86,7 +79,6 @@ diff --git a/src/app/pages/admin/index.vue b/src/app/pages/admin/index.vue index 041fe622..3cbcfd8a 100644 --- a/src/app/pages/admin/index.vue +++ b/src/app/pages/admin/index.vue @@ -2,4 +2,7 @@
Admin Area
- + diff --git a/src/app/pages/index.vue b/src/app/pages/index.vue index 3f8ef5e2..ca079a0e 100644 --- a/src/app/pages/index.vue +++ b/src/app/pages/index.vue @@ -54,6 +54,8 @@ const intervalId = ref(null); clientsStore.refresh(); onMounted(() => { + // to avoid console spam + return; // TODO?: replace with websocket or similar intervalId.value = setInterval(() => { clientsStore diff --git a/src/app/stores/auth.ts b/src/app/stores/auth.ts index e9bf3a31..ad359c0b 100644 --- a/src/app/stores/auth.ts +++ b/src/app/stores/auth.ts @@ -1,4 +1,10 @@ export const useAuthStore = defineStore('Auth', () => { + const userData = ref(); + /** * @throws if unsuccessful */ @@ -25,8 +31,9 @@ export const useAuthStore = defineStore('Auth', () => { async function update() { // store role etc - await api.getSession(); + const { data: response } = await api.getSession(); + userData.value = response.value; } - return { login, logout, update, signup }; + return { userData, login, logout, update, signup }; }); diff --git a/src/server/api/session.get.ts b/src/server/api/session.get.ts index 7a97cc73..9f559c08 100644 --- a/src/server/api/session.get.ts +++ b/src/server/api/session.get.ts @@ -18,5 +18,6 @@ export default defineEventHandler(async (event) => { return { role: user.role, username: user.username, + name: user.name, }; }); diff --git a/src/server/middleware/session.ts b/src/server/middleware/session.ts index 3611aaae..5a8c063c 100644 --- a/src/server/middleware/session.ts +++ b/src/server/middleware/session.ts @@ -12,8 +12,8 @@ export default defineEventHandler(async (event) => { } const system = await Database.system.get(); - const session = await getSession(event, system.sessionConfig); - if (session.id && session.data.authenticated) { + const session = await getSession(event, system.sessionConfig); + if (session.id && session.data.userId) { return; }