36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
'use server'
|
||
|
||
import { revalidatePath } from 'next/cache'
|
||
import { redirect } from 'next/navigation'
|
||
import { auth } from '@/lib/auth'
|
||
import { supabaseAdmin } from '@/lib/supabaseAdmin'
|
||
|
||
async function requireAdmin() {
|
||
const session = await auth()
|
||
if (!session || (session.user as any)?.role !== 'ADMIN') {
|
||
throw new Error('Yetkisiz erişim')
|
||
}
|
||
}
|
||
|
||
export async function updateSettingsAction(formData: FormData) {
|
||
await requireAdmin()
|
||
|
||
const trialDaysRaw = String(formData.get('trial_days') || '').trim()
|
||
const trialDays = parseInt(trialDaysRaw, 10)
|
||
if (!trialDaysRaw || isNaN(trialDays) || trialDays < 1) {
|
||
redirect('/admin/settings?error=' + encodeURIComponent('Deneme süresi 1 veya daha büyük bir tam sayı olmalı'))
|
||
}
|
||
|
||
const { error } = await supabaseAdmin
|
||
.from('app_settings')
|
||
.update({ trial_days: trialDays, updated_at: new Date().toISOString() })
|
||
.eq('id', true)
|
||
|
||
if (error) {
|
||
redirect('/admin/settings?error=' + encodeURIComponent(error.message))
|
||
}
|
||
|
||
revalidatePath('/admin/settings')
|
||
redirect('/admin/settings?success=1')
|
||
}
|