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 @@ - - - - - - + + + + + + {{ $t('newClient') }} + + + + + + + + + {{ $t('cancel') }} + + + {{ $t('create') }} + + + + - - - - - - - - - - - - {{ $t('newClient') }} - - - - - - - - - - {{ $t('ExpireDate') }} - - - - - - - - - - {{ $t('create') }} - - - {{ $t('create') }} - - - {{ $t('cancel') }} - - - - - - +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 @@ - - - - - - - {{ $t('deleteClient') }} - - - {{ $t('deleteDialog1') }} - {{ 'test' }}? {{ $t('deleteDialog2') }} - - - - {{ $t('cancel') }} - - - {{ - $t('deleteClient') - }} - - - - - + + + {{ $t('deleteClient') }} + + {{ $t('deleteDialog1') }} + {{ 'test' }}? {{ $t('deleteDialog2') }} + + + + {{ $t('cancel') }} + + + {{ + $t('deleteClient') + }} + + + 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 @@ - - - {{ $t('new') }} - + + + + {{ $t('new') }} + + - - 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 @@ - - - - - - - - - - + + + + + + + + + + {{ $t('cancel') }} + + + 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, - }; -});
- -
- - {{ $t('ExpireDate') }} - - -