import type { APIContext } from 'astro';
import { authService } from '@/lib/authService';
import type { AuthClient } from '@/lib/authService';

export async function POST({ request, locals }: APIContext) {
  try {
    // Если middleware уже создал клиент, используем его, чтобы очистить состояние везде
    const pb: AuthClient = ('pb' in locals && locals.pb) ? locals.pb as AuthClient : authService.createClientFromRequest(request);

    // Очищаем аутентификацию
    pb.authStore.clear();

    // Возвращаем редирект на страницу входа после выхода
    const response = new Response(null, {
      status: 302,
      headers: {
        "Location": "/auth/login"
      }
    });

    // Добавляем заголовки с очищенными куки
    const authHeaders = authService.createAuthHeaders(pb);
    Object.entries(authHeaders).forEach(([key, value]) => {
      response.headers.set(key, value);
    });

    return response;
  } catch (error) {
    // В случае ошибки редиректим на страницу входа
    return new Response(null, {
      status: 302,
      headers: {
        "Location": "/auth/login"
      }
    });
  }
}