fix(edge-fn): replace getClaims with adminClient.auth.getUser(token)
fix(edge-fn): use user.id instead of claims.sub; fixes 500s and false cert_required fix(migrations): drop broad reservations SELECT policy; add reservation_slots view with security_invoker=false fix(tests): correct weekSlot() keys from start/end to start_time/end_time fix(tests): spread overlap test slots across separate ISO weeks fix(tests): update e2e assertion to match actual authenticated home text fix(app): hide IonMenu before user is authenticated feat(dx): add test:all script running unit, integration, and e2e in sequence docs(claude-md): document SELinux fix, Edge Function auth pattern, security_invoker behaviour
This commit is contained in:
19
app/app.vue
19
app/app.vue
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<IonApp>
|
||||
<IonMenu content-id="main-content" menu-id="main-menu">
|
||||
<IonSplitPane content-id="main-content">
|
||||
<IonMenu v-if="authStore.user" content-id="main-content" menu-id="main-menu">
|
||||
<IonHeader>
|
||||
<IonToolbar color="primary">
|
||||
<IonTitle>OYS Borrow a Boat</IonTitle>
|
||||
@@ -35,9 +36,13 @@
|
||||
<IonItemDivider>
|
||||
<IonLabel>Management</IonLabel>
|
||||
</IonItemDivider>
|
||||
<IonItem button router-link="/schedule/manage" router-direction="root" @click="closeMenu">
|
||||
<IonItem button router-link="/admin/intervals" router-direction="root" @click="closeMenu">
|
||||
<IonIcon slot="start" :icon="calendarNumberOutline" />
|
||||
<IonLabel>Manage Schedule</IonLabel>
|
||||
<IonLabel>Manage Slots</IonLabel>
|
||||
</IonItem>
|
||||
<IonItem button router-link="/admin/templates" router-direction="root" @click="closeMenu">
|
||||
<IonIcon slot="start" :icon="layersOutline" />
|
||||
<IonLabel>Templates</IonLabel>
|
||||
</IonItem>
|
||||
</template>
|
||||
|
||||
@@ -51,6 +56,10 @@
|
||||
<IonIcon slot="start" :icon="constructOutline" />
|
||||
<IonLabel>Manage Boats</IonLabel>
|
||||
</IonItem>
|
||||
<IonItem button router-link="/admin/config" router-direction="root" @click="closeMenu">
|
||||
<IonIcon slot="start" :icon="settingsOutline" />
|
||||
<IonLabel>Booking Rules</IonLabel>
|
||||
</IonItem>
|
||||
</template>
|
||||
|
||||
<!-- Sign out -->
|
||||
@@ -65,18 +74,20 @@
|
||||
</IonMenu>
|
||||
|
||||
<IonRouterOutlet id="main-content" />
|
||||
</IonSplitPane>
|
||||
</IonApp>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {
|
||||
IonApp, IonMenu, IonHeader, IonToolbar, IonTitle,
|
||||
IonApp, IonSplitPane, IonMenu, IonHeader, IonToolbar, IonTitle,
|
||||
IonContent, IonList, IonItem, IonItemDivider, IonIcon, IonLabel, IonNote,
|
||||
IonRouterOutlet, menuController,
|
||||
} from '@ionic/vue'
|
||||
import {
|
||||
homeOutline, calendarOutline, boatOutline, personOutline,
|
||||
bookOutline, calendarNumberOutline, peopleOutline, constructOutline, logOutOutline,
|
||||
layersOutline, settingsOutline,
|
||||
} from 'ionicons/icons'
|
||||
import { useAuthStore } from '~/stores/auth'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user