76 lines
No EOL
2.1 KiB
TypeScript
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 }
|
|
);
|
|
}
|
|
} |