diff --git a/front/src/env.d.ts b/front/src/env.d.ts
index 0a69926..d858407 100644
--- a/front/src/env.d.ts
+++ b/front/src/env.d.ts
@@ -1,11 +1,25 @@
+///
+///
+import PocketBase from 'pocketbase'
export interface ImportMetaEnv {
NODE_ENV: string
APP_URL: string
POCKETBASE_URL: string
+
+ GOOGLE_API_KEY: string
}
interface ImportMeta {
readonly env: ImportMetaEnv
}
+
+
+// eslint-disable-next-line @typescript-eslint/no-namespace
+declare namespace App {
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
+ export interface Locals {
+ pb: PocketBase
+ }
+}
diff --git a/front/src/middleware/index.ts b/front/src/middleware/index.ts
new file mode 100644
index 0000000..89e6322
--- /dev/null
+++ b/front/src/middleware/index.ts
@@ -0,0 +1,27 @@
+import PocketBase from 'pocketbase'
+
+import { defineMiddleware } from 'astro/middleware'
+import { getEnv } from 'libs/Env'
+
+export const onRequest = defineMiddleware(async ({ locals, request }: any, next: () => any) => {
+ locals.pb = new PocketBase(getEnv('POCKETBASE_URL','http://localhost:8080'))
+
+ // load the store data from the request cookie string
+ locals.pb.authStore.loadFromCookie(request.headers.get('cookie') || '')
+
+ try {
+ // get an up-to-date auth store state by verifying and refreshing the loaded auth model (if any)
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
+ locals.pb.authStore.isValid && await locals.pb.collection('users').authRefresh()
+ } catch (_) {
+ // clear the auth store on failed refresh
+ locals.pb.authStore.clear()
+ }
+
+ const response = await next()
+
+ // send back the default 'pb_auth' cookie to the client with the latest store state
+ response.headers.append('set-cookie', locals.pb.authStore.exportToCookie())
+
+ return response
+})