mirror of
https://github.com/hay-kot/homebox.git
synced 2025-08-05 09:10:26 +00:00
use auth middleware
This commit is contained in:
parent
85acaacda3
commit
d88494af24
11 changed files with 87 additions and 88 deletions
|
@ -1,10 +1,70 @@
|
||||||
<script setup lang="ts"></script>
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<AppToast />
|
<AppToast />
|
||||||
<AppHeader />
|
<AppHeader />
|
||||||
<main class="p-8 dark:bg-gray-800 dark:text-white bg-white text-gray-800 min-h-screen">
|
<main>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { useItemStore } from "~~/stores/items";
|
||||||
|
import { useLabelStore } from "~~/stores/labels";
|
||||||
|
import { useLocationStore } from "~~/stores/locations";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store Provider Initialization
|
||||||
|
*/
|
||||||
|
|
||||||
|
const labelStore = useLabelStore();
|
||||||
|
const reLabel = /\/api\/v1\/labels\/.*/gm;
|
||||||
|
const rmLabelStoreObserver = defineObserver("labelStore", {
|
||||||
|
handler: r => {
|
||||||
|
if (r.status === 201 || r.url.match(reLabel)) {
|
||||||
|
labelStore.refresh();
|
||||||
|
}
|
||||||
|
console.debug("labelStore handler called by observer");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const locationStore = useLocationStore();
|
||||||
|
const reLocation = /\/api\/v1\/locations\/.*/gm;
|
||||||
|
const rmLocationStoreObserver = defineObserver("locationStore", {
|
||||||
|
handler: r => {
|
||||||
|
if (r.status === 201 || r.url.match(reLocation)) {
|
||||||
|
locationStore.refresh();
|
||||||
|
}
|
||||||
|
console.debug("locationStore handler called by observer");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const itemStore = useItemStore();
|
||||||
|
const reItem = /\/api\/v1\/items\/.*/gm;
|
||||||
|
const rmItemStoreObserver = defineObserver("itemStore", {
|
||||||
|
handler: r => {
|
||||||
|
if (r.status === 201 || r.url.match(reItem)) {
|
||||||
|
itemStore.refresh();
|
||||||
|
}
|
||||||
|
console.debug("itemStore handler called by observer");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const eventBus = useEventBus();
|
||||||
|
eventBus.on(
|
||||||
|
EventTypes.ClearStores,
|
||||||
|
() => {
|
||||||
|
labelStore.refresh();
|
||||||
|
itemStore.refresh();
|
||||||
|
locationStore.refresh();
|
||||||
|
},
|
||||||
|
"stores"
|
||||||
|
);
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
rmLabelStoreObserver();
|
||||||
|
rmLocationStoreObserver();
|
||||||
|
rmItemStoreObserver();
|
||||||
|
eventBus.off(EventTypes.ClearStores, "stores");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<AppToast />
|
|
||||||
<AppHeader />
|
|
||||||
<main>
|
|
||||||
<slot></slot>
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { useItemStore } from "~~/stores/items";
|
|
||||||
import { useLabelStore } from "~~/stores/labels";
|
|
||||||
import { useLocationStore } from "~~/stores/locations";
|
|
||||||
/**
|
|
||||||
* Store Provider Initialization
|
|
||||||
*/
|
|
||||||
|
|
||||||
const labelStore = useLabelStore();
|
|
||||||
const reLabel = /\/api\/v1\/labels\/.*/gm;
|
|
||||||
const rmLabelStoreObserver = defineObserver("labelStore", {
|
|
||||||
handler: r => {
|
|
||||||
if (r.status === 201 || r.url.match(reLabel)) {
|
|
||||||
labelStore.refresh();
|
|
||||||
}
|
|
||||||
console.debug("labelStore handler called by observer");
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const locationStore = useLocationStore();
|
|
||||||
const reLocation = /\/api\/v1\/locations\/.*/gm;
|
|
||||||
const rmLocationStoreObserver = defineObserver("locationStore", {
|
|
||||||
handler: r => {
|
|
||||||
if (r.status === 201 || r.url.match(reLocation)) {
|
|
||||||
locationStore.refresh();
|
|
||||||
}
|
|
||||||
console.debug("locationStore handler called by observer");
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const itemStore = useItemStore();
|
|
||||||
const reItem = /\/api\/v1\/items\/.*/gm;
|
|
||||||
const rmItemStoreObserver = defineObserver("itemStore", {
|
|
||||||
handler: r => {
|
|
||||||
if (r.status === 201 || r.url.match(reItem)) {
|
|
||||||
itemStore.refresh();
|
|
||||||
}
|
|
||||||
console.debug("itemStore handler called by observer");
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const eventBus = useEventBus();
|
|
||||||
eventBus.on(
|
|
||||||
EventTypes.ClearStores,
|
|
||||||
() => {
|
|
||||||
labelStore.refresh();
|
|
||||||
itemStore.refresh();
|
|
||||||
locationStore.refresh();
|
|
||||||
},
|
|
||||||
"stores"
|
|
||||||
);
|
|
||||||
|
|
||||||
onUnmounted(() => {
|
|
||||||
rmLabelStoreObserver();
|
|
||||||
rmLocationStoreObserver();
|
|
||||||
rmItemStoreObserver();
|
|
||||||
eventBus.off(EventTypes.ClearStores, "stores");
|
|
||||||
});
|
|
||||||
</script>
|
|
15
frontend/middleware/auth.ts
Normal file
15
frontend/middleware/auth.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { useAuthStore } from "~~/stores/auth";
|
||||||
|
|
||||||
|
export default defineNuxtRouteMiddleware(async () => {
|
||||||
|
const auth = useAuthStore();
|
||||||
|
const api = useUserApi();
|
||||||
|
|
||||||
|
if (!auth.self) {
|
||||||
|
const { data, error } = await api.user.self();
|
||||||
|
if (error) {
|
||||||
|
navigateTo("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
auth.$patch({ self: data.item });
|
||||||
|
}
|
||||||
|
});
|
|
@ -5,8 +5,9 @@
|
||||||
import { useLocationStore } from "~~/stores/locations";
|
import { useLocationStore } from "~~/stores/locations";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: "Homebox | Home",
|
title: "Homebox | Home",
|
||||||
});
|
});
|
||||||
|
@ -15,15 +16,6 @@
|
||||||
|
|
||||||
const auth = useAuthStore();
|
const auth = useAuthStore();
|
||||||
|
|
||||||
if (auth.self === null) {
|
|
||||||
const { data, error } = await api.user.self();
|
|
||||||
if (error) {
|
|
||||||
navigateTo("/");
|
|
||||||
}
|
|
||||||
|
|
||||||
auth.$patch({ self: data.item });
|
|
||||||
}
|
|
||||||
|
|
||||||
const itemsStore = useItemStore();
|
const itemsStore = useItemStore();
|
||||||
const items = computed(() => itemsStore.items);
|
const items = computed(() => itemsStore.items);
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import { capitalize } from "~~/lib/strings";
|
import { capitalize } from "~~/lib/strings";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import { ItemAttachment } from "~~/lib/api/types/data-contracts";
|
import { ItemAttachment } from "~~/lib/api/types/data-contracts";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
const show = reactive({
|
const show = reactive({
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
import { useLocationStore } from "~~/stores/locations";
|
import { useLocationStore } from "~~/stores/locations";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: "Homebox | Home",
|
title: "Homebox | Home",
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import type { DateDetail, Detail } from "~~/components/global/DetailsSection/types";
|
import type { DateDetail, Detail } from "~~/components/global/DetailsSection/types";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
import { Detail, DateDetail } from "~~/components/global/DetailsSection/types";
|
import { Detail, DateDetail } from "~~/components/global/DetailsSection/types";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
import { currencies, Currency } from "~~/lib/data/currency";
|
import { currencies, Currency } from "~~/lib/data/currency";
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "home",
|
middleware: ["auth"],
|
||||||
});
|
});
|
||||||
useHead({
|
useHead({
|
||||||
title: "Homebox | Profile",
|
title: "Homebox | Profile",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue