From 7aefc341dbed1d4078bb299b992eb53835e2f88e Mon Sep 17 00:00:00 2001 From: Bernd Storath <32197462+kaaax0815@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:47:56 +0100 Subject: [PATCH] refactor dialog (#1665) --- .../components/ClientCard/OneTimeLinkBtn.vue | 1 + src/app/components/ClientCard/QRCode.vue | 17 +- src/app/components/Clients/CreateDialog.vue | 177 +++++------------- src/app/components/Clients/DeleteDialog.vue | 53 ++---- src/app/components/Clients/Empty.vue | 21 +-- src/app/components/Clients/New.vue | 20 +- src/app/components/Clients/QRCodeDialog.vue | 30 ++- src/app/components/Clients/Sort.vue | 1 + src/app/components/admin/CidrDialog.vue | 55 ++---- src/app/components/base/Button.vue | 2 +- src/app/components/base/Dialog.vue | 31 +++ src/app/middleware/auth.global.ts | 3 +- src/app/pages/admin/config.vue | 4 +- src/app/pages/index.vue | 3 - src/app/stores/modal.ts | 30 --- 15 files changed, 164 insertions(+), 284 deletions(-) create mode 100644 src/app/components/base/Dialog.vue delete mode 100644 src/app/stores/modal.ts diff --git a/src/app/components/ClientCard/OneTimeLinkBtn.vue b/src/app/components/ClientCard/OneTimeLinkBtn.vue index 9979a025..314a48a6 100644 --- a/src/app/components/ClientCard/OneTimeLinkBtn.vue +++ b/src/app/components/ClientCard/OneTimeLinkBtn.vue @@ -22,6 +22,7 @@ diff --git a/src/app/components/Clients/CreateDialog.vue b/src/app/components/Clients/CreateDialog.vue index 653671bc..c5d2aa0e 100644 --- a/src/app/components/Clients/CreateDialog.vue +++ b/src/app/components/Clients/CreateDialog.vue @@ -1,132 +1,59 @@ - - - - - - - +const name = ref(''); +const expiresAt = ref(null); +const toast = useToast(); +const clientsStore = useClientsStore(); - diff --git a/src/app/components/Clients/DeleteDialog.vue b/src/app/components/Clients/DeleteDialog.vue index c02bf5d3..21fec0b6 100644 --- a/src/app/components/Clients/DeleteDialog.vue +++ b/src/app/components/Clients/DeleteDialog.vue @@ -1,38 +1,23 @@ diff --git a/src/app/components/Clients/New.vue b/src/app/components/Clients/New.vue index f839d376..7f28eea8 100644 --- a/src/app/components/Clients/New.vue +++ b/src/app/components/Clients/New.vue @@ -1,16 +1,8 @@ - - diff --git a/src/app/components/Clients/QRCodeDialog.vue b/src/app/components/Clients/QRCodeDialog.vue index b4dd1c5b..8623abbe 100644 --- a/src/app/components/Clients/QRCodeDialog.vue +++ b/src/app/components/Clients/QRCodeDialog.vue @@ -1,21 +1,19 @@ diff --git a/src/app/components/Clients/Sort.vue b/src/app/components/Clients/Sort.vue index 027622df..1b73546d 100644 --- a/src/app/components/Clients/Sort.vue +++ b/src/app/components/Clients/Sort.vue @@ -46,6 +46,7 @@ diff --git a/src/app/middleware/auth.global.ts b/src/app/middleware/auth.global.ts index 0c32e7ba..70a37e86 100644 --- a/src/app/middleware/auth.global.ts +++ b/src/app/middleware/auth.global.ts @@ -14,6 +14,7 @@ export default defineNuxtRouteMiddleware(async (to) => { } return; } + // Require auth for every page other than Login if (!userData?.username) { return navigateTo('/login', { redirectCode: 302 }); @@ -21,7 +22,7 @@ export default defineNuxtRouteMiddleware(async (to) => { // Check for admin access if (to.path.startsWith('/admin')) { - if (userData && hasPermissions(userData, 'admin', 'any')) { + if (!hasPermissions(userData, 'admin', 'any')) { return abortNavigation('Not allowed to access Admin Panel'); } } diff --git a/src/app/pages/admin/config.vue b/src/app/pages/admin/config.vue index c66d2b5b..42428367 100644 --- a/src/app/pages/admin/config.vue +++ b/src/app/pages/admin/config.vue @@ -62,7 +62,8 @@ async function submit() { if (!res.success) { throw new Error('Failed to save'); } - await refreshNuxtData(); + // TODO: avoid refreshNuxtData + await revert(); } catch (e) { if (e instanceof Error) { toast.showToast({ @@ -71,6 +72,7 @@ async function submit() { message: e.message, }); } + await revert(); } } diff --git a/src/app/pages/index.vue b/src/app/pages/index.vue index ae61eb14..06a9befa 100644 --- a/src/app/pages/index.vue +++ b/src/app/pages/index.vue @@ -24,9 +24,6 @@ - - - diff --git a/src/app/stores/modal.ts b/src/app/stores/modal.ts deleted file mode 100644 index 0e6a1c5a..00000000 --- a/src/app/stores/modal.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { defineStore } from 'pinia'; - -export const useModalStore = defineStore('Modal', () => { - const clientsStore = useClientsStore(); - const clientCreate = ref(null); - const clientCreateName = ref(''); - const clientExpireDate = ref(''); - const qrcode = ref(null); - - function createClient() { - const name = clientCreateName.value; - const expiresAt = clientExpireDate.value || null; - if (!name) return; - - $fetch('/api/client', { - method: 'post', - body: { name, expiresAt }, - }) - .catch((err) => alert(err.message || err.toString())) - .finally(() => clientsStore.refresh().catch(console.error)); - } - - return { - clientCreate, - clientCreateName, - clientExpireDate, - qrcode, - createClient, - }; -});