77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
// API route for getting and updating SMTP settings (protected by admin check)
|
|
import { NextResponse } from 'next/server';
|
|
import { verifyAdmin } from '@/lib/actions/auth';
|
|
import { createAdminClient } from '@/lib/supabase/admin';
|
|
import { createClient } from '@/lib/supabase/server';
|
|
|
|
export async function GET() {
|
|
try {
|
|
await verifyAdmin();
|
|
} catch (err: any) {
|
|
return NextResponse.json({ error: err.message || 'Not authenticated' }, { status: 401 });
|
|
}
|
|
|
|
try {
|
|
let client: any;
|
|
try {
|
|
client = createAdminClient();
|
|
} catch {
|
|
client = await createClient();
|
|
}
|
|
|
|
const { data, error } = await client
|
|
.from('settings')
|
|
.select('*')
|
|
.eq('id', 'smtp')
|
|
.maybeSingle();
|
|
|
|
if (error) {
|
|
console.error('Error fetching SMTP settings:', error);
|
|
return NextResponse.json({
|
|
settings: { host: '', port: 587, secure: false, user: '', pass: '' }
|
|
});
|
|
}
|
|
|
|
return NextResponse.json({
|
|
settings: data || { host: '', port: 587, secure: false, user: '', pass: '' }
|
|
});
|
|
} catch (err: any) {
|
|
console.error('SMTP settings GET error:', err);
|
|
return NextResponse.json({
|
|
settings: { host: '', port: 587, secure: false, user: '', pass: '' }
|
|
});
|
|
}
|
|
}
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
await verifyAdmin();
|
|
} catch (err: any) {
|
|
return NextResponse.json({ error: err.message || 'Not authenticated' }, { status: 401 });
|
|
}
|
|
|
|
try {
|
|
let client: any;
|
|
try {
|
|
client = createAdminClient();
|
|
} catch {
|
|
client = await createClient();
|
|
}
|
|
|
|
const payload = await request.json();
|
|
const { error } = await client
|
|
.from('settings')
|
|
.upsert({ id: 'smtp', ...payload });
|
|
|
|
if (error) {
|
|
console.error('Error saving SMTP settings:', error);
|
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
|
}
|
|
|
|
return NextResponse.json({ message: 'SMTP settings saved' });
|
|
} catch (err: any) {
|
|
console.error('SMTP settings POST error:', err);
|
|
return NextResponse.json({ error: err.message || 'Fehler beim Speichern' }, { status: 500 });
|
|
}
|
|
}
|