import type { APIRoute } from 'astro'; import { invalidateUserCaches } from '@/middleware'; export const prerender = false; export const POST: APIRoute = async ({ locals, params }) => { if (locals.profile?.rol !== 'admin') { return Response.json({ error: 'No autorizado' }, { status: 403 }); } const id = Number(params.id); if (!Number.isInteger(id) || id <= 0) { return Response.json({ error: 'ID inválido' }, { status: 400 }); } const { data, error } = await locals.supabase .from('baneos') .update({ unbanned_at: new Date().toISOString(), unbanned_by: locals.user!.id }) .eq('id', id) .is('unbanned_at', null) .select('id, profile_id'); if (error) { return Response.json({ error: 'No se pudo desbanear' }, { status: 500 }); } if (!data || data.length === 0) { return Response.json({ error: 'Baneo no encontrado o ya inactivo' }, { status: 404 }); } if (data[0]?.profile_id) invalidateUserCaches(data[0].profile_id); return Response.json({ ok: true }); };