fix: auth race condition on refresh, section edit dialog, time slot duplicate, autocomplete disable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-10 11:16:22 +02:00
parent 03545c570c
commit 37fecf7181
15 changed files with 733 additions and 168 deletions

View File

@@ -0,0 +1,84 @@
<script setup lang="ts">
import { VNodeRenderer } from '@layouts/components/VNodeRenderer'
import { themeConfig } from '@themeConfig'
import { useAuthStore } from '@/stores/useAuthStore'
import { useOrganisationStore } from '@/stores/useOrganisationStore'
definePage({
meta: {
layout: 'blank',
},
})
const router = useRouter()
const route = useRoute()
const authStore = useAuthStore()
const orgStore = useOrganisationStore()
function selectOrganisation(orgId: string) {
orgStore.setActiveOrganisation(orgId)
const redirectTo = route.query.to ? String(route.query.to) : '/dashboard'
router.replace(redirectTo)
}
// Auto-select if user has exactly one organisation
if (authStore.organisations.length === 1) {
selectOrganisation(authStore.organisations[0].id)
}
</script>
<template>
<div class="auth-wrapper bg-surface d-flex align-center justify-center" style="min-height: 100vh;">
<VCard
:max-width="500"
class="pa-6"
width="100%"
>
<VCardText class="text-center">
<VNodeRenderer :nodes="themeConfig.app.logo" />
<h4 class="text-h4 mt-4 mb-1">
Kies je organisatie
</h4>
<p class="text-body-1 mb-0">
Selecteer de organisatie waarmee je wilt werken.
</p>
</VCardText>
<VCardText v-if="authStore.organisations.length === 0">
<VAlert
type="info"
variant="tonal"
>
Je bent nog niet gekoppeld aan een organisatie. Neem contact op met je beheerder.
</VAlert>
</VCardText>
<VCardText v-else>
<VList>
<VListItem
v-for="org in authStore.organisations"
:key="org.id"
:title="org.name"
:subtitle="org.role"
rounded
class="mb-2"
@click="selectOrganisation(org.id)"
>
<template #prepend>
<VAvatar
color="primary"
variant="tonal"
size="40"
>
<span class="text-h6">{{ org.name.charAt(0).toUpperCase() }}</span>
</VAvatar>
</template>
<template #append>
<VIcon icon="tabler-chevron-right" />
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</div>
</template>