espace-paie-odentas/app/api/staff/email-logs/[id]/content/route.ts
2025-10-12 17:05:46 +02:00

76 lines
No EOL
2.1 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { createSbServer, createSbServiceRole } from '@/lib/supabaseServer';
export const dynamic = 'force-dynamic';
export async function GET(
request: NextRequest,
{ params }: { params: { id: string } }
) {
try {
const { id } = params;
if (!id) {
return NextResponse.json(
{ error: 'ID du log manquant' },
{ status: 400 }
);
}
// Vérifier l'authentification et les permissions staff
const supabaseServer = createSbServer();
const { data: { user }, error: authError } = await supabaseServer.auth.getUser();
if (authError || !user) {
return NextResponse.json(
{ error: 'Non authentifié' },
{ status: 401 }
);
}
// Vérifier si l'utilisateur est staff
const { data: staffData, error: staffError } = await supabaseServer
.from('staff_users')
.select('is_staff')
.eq('user_id', user.id)
.single();
if (staffError || !staffData?.is_staff) {
return NextResponse.json(
{ error: 'Accès refusé - permissions staff requises' },
{ status: 403 }
);
}
// Utiliser le service role pour récupérer le contenu de l'email
const supabaseServiceRole = createSbServiceRole();
const { data: emailLog, error: logError } = await supabaseServiceRole
.from('email_logs')
.select('html_content, email_type, template_name, subject')
.eq('id', id)
.single();
if (logError) {
console.error('Erreur lors de la récupération du log:', logError);
return NextResponse.json(
{ error: 'Log non trouvé' },
{ status: 404 }
);
}
return NextResponse.json({
html_content: emailLog.html_content,
email_type: emailLog.email_type,
template_name: emailLog.template_name,
subject: emailLog.subject
});
} catch (error) {
console.error('Erreur lors de la récupération du contenu de l\'email:', error);
return NextResponse.json(
{ error: 'Erreur interne du serveur' },
{ status: 500 }
);
}
}