changes bootstrap mechanism

This commit is contained in:
Christian Beutel
2024-03-13 00:28:11 +01:00
parent 2e3c3abbe4
commit eecd78aba1
12 changed files with 232 additions and 205 deletions

2
web/src/app.d.ts vendored
View File

@@ -1,3 +1,4 @@
import type MeiliSearch from 'meilisearch';
import PocketBase from 'pocketbase';
@@ -12,6 +13,7 @@ declare global {
// interface Platform {}
interface Locals {
pb: PocketBase
ms: MeiliSearch
user: AuthModel | null
}
}

View File

@@ -1,7 +1,8 @@
import { regenerateInstance } from '$lib/meilisearch'
import { env } from '$env/dynamic/private'
import { pb } from '$lib/pocketbase'
import { isRouteProtected } from '$lib/util/authorization_util'
import { redirect, type Handle } from '@sveltejs/kit'
import { MeiliSearch } from 'meilisearch'
import { locale } from 'svelte-i18n'
export const handle: Handle = async ({ event, resolve }) => {
@@ -12,13 +13,11 @@ export const handle: Handle = async ({ event, resolve }) => {
// validate the user existence and if the path is acceesible
if (!pb.authStore.model && isRouteProtected(url.pathname)) {
throw redirect(302, '/login?r='+url.pathname);
throw redirect(302, '/login?r=' + url.pathname);
} else if (pb.authStore.model && url.pathname === "/login") {
throw redirect(302, '/');
}
regenerateInstance();
try {
// get an up-to-date auth store state by verifying and refreshing the loaded auth model (if any)
if (pb.authStore.isValid) {
@@ -29,6 +28,17 @@ export const handle: Handle = async ({ event, resolve }) => {
pb.authStore.clear()
}
let meiliApiKey: string = "";
if (pb.authStore.model) {
meiliApiKey = pb.authStore.model.token
} else {
const r = await event.fetch(pb.buildUrl("/public/search/token"));
const response = await r.json();
meiliApiKey = response.token;
}
const ms = new MeiliSearch({ host: env.MEILI_URL, apiKey: meiliApiKey });
event.locals.ms = ms
event.locals.pb = pb
event.locals.user = pb.authStore.model

View File

@@ -1,17 +0,0 @@
import { env } from '$env/dynamic/private'
import { MeiliSearch } from 'meilisearch'
import { pb } from './pocketbase'
export function createInstance() {
if (pb.authStore.model) {
return new MeiliSearch({ host: env.MEILI_URL, apiKey: pb.authStore.model.token })
}
return new MeiliSearch({ host: env.MEILI_URL, apiKey: env.MEILI_API_TOKEN })
}
export function regenerateInstance() {
ms = createInstance();
}
export let ms = createInstance()

View File

@@ -1,11 +1,10 @@
import { ms } from "$lib/meilisearch";
import { error, json, type RequestEvent } from "@sveltejs/kit";
export async function POST(event: RequestEvent) {
const data = await event.request.json()
try {
const r = await ms.index(event.params.index as string).search(data.q, data.options);
const r = await event.locals.ms.index(event.params.index as string).search(data.q, data.options);
return json(r);
} catch (e: any) {
console.log(e);

View File

@@ -1,11 +1,10 @@
import { ms } from "$lib/meilisearch";
import { error, json, type RequestEvent } from "@sveltejs/kit";
export async function POST(event: RequestEvent) {
const data = await event.request.json()
try {
const r = await ms.multiSearch({
const r = await event.locals.ms.multiSearch({
queries: data.queries
});
return json(r);