'use server' import { revalidatePath } from 'next/cache' import prisma from '@/lib/prisma' import { auth } from '@/auth' import { sendEmail } from '@/lib/mail' async function checkAdmin() { const session = await auth() if (!session?.user?.id || (session.user as any).role !== 'ADMIN') { throw new Error('Unauthorized: Admin access required') } return session } export async function testSMTP() { const session = await checkAdmin() const email = session.user?.email if (!email) throw new Error("No admin email found") const result = await sendEmail({ to: email, subject: "Memento SMTP Test", html: "

This is a test email from your Memento instance. SMTP is working!

" }) return result } export async function getSystemConfig() { await checkAdmin() const configs = await prisma.systemConfig.findMany() return configs.reduce((acc, conf) => { acc[conf.key] = conf.value return acc }, {} as Record) } export async function updateSystemConfig(data: Record) { await checkAdmin() try { const operations = Object.entries(data).map(([key, value]) => prisma.systemConfig.upsert({ where: { key }, update: { value }, create: { key, value } }) ) await prisma.$transaction(operations) revalidatePath('/admin/settings') return { success: true } } catch (error) { console.error('Failed to update settings:', error) return { error: 'Failed to update settings' } } }