// src/middleware.ts
import { defineMiddleware } from 'astro:middleware';
import { authService } from './lib/authService';

export const onRequest = defineMiddleware(async (context, next) => {
    // 1. Создаем клиент PocketBase и загружаем данные из куки запроса.
    // Это делает пользователя доступным на КАЖДОМ запросе.
    const pb = authService.createClientFromRequest(context.request);

    // 2. (Опционально, но рекомендуется) Проверяем валидность токена.
    // Если токен просрочен, это вызовет ошибку.
    try {
        if (pb.authStore.isValid) {
            await pb.collection('users').authRefresh();
        }
    } catch (_) {
        // Если обновление не удалось, очищаем хранилище.
        pb.authStore.clear();
    }

    // 3. Делаем экземпляр pb и модель пользователя доступными
    // во всех страницах и API-роутах через `context.locals`.
    context.locals.pb = pb;
    context.locals.user = pb.authStore.model;

    // 4. Выполняем запрос и получаем ответ от страницы/API-роута.
    const response = await next();

    // 5. Больше ничего не делаем. API-роут сам отвечает за установку куки.
    return response;
});