'use server' import prisma from '@/lib/prisma' import bcrypt from 'bcryptjs' import { revalidatePath } from 'next/cache' export async function createUser(_prevState: unknown, formData: FormData) { const username = (formData.get('username') as string)?.trim() const password = formData.get('password') as string const role = (formData.get('role') as string) || 'admin' if (!username || !password) { return { error: 'Kullanıcı adı ve şifre zorunludur.' } } if (password.length < 6) { return { error: 'Şifre en az 6 karakter olmalıdır.' } } try { const existing = await prisma.users.findUnique({ where: { username } }) if (existing) { return { error: 'Bu kullanıcı adı zaten kullanılıyor.' } } const password_hash = await bcrypt.hash(password, 12) await prisma.users.create({ data: { username, password_hash, role } }) revalidatePath('/admin/users') return { success: true } } catch (error) { console.error('Create user error:', error) return { error: 'Kullanıcı oluşturulurken hata oluştu.' } } } export async function changePassword(userId: number, _prevState: unknown, formData: FormData) { const newPassword = formData.get('new_password') as string const confirmPassword = formData.get('confirm_password') as string if (!newPassword || newPassword.length < 6) { return { error: 'Şifre en az 6 karakter olmalıdır.' } } if (newPassword !== confirmPassword) { return { error: 'Şifreler eşleşmiyor.' } } try { const password_hash = await bcrypt.hash(newPassword, 12) await prisma.users.update({ where: { id: userId }, data: { password_hash } }) revalidatePath('/admin/users') return { success: true, message: 'Şifre güncellendi.' } } catch (error) { console.error('Change password error:', error) return { error: 'Şifre güncellenirken hata oluştu.' } } } export async function deleteUser(userId: number) { try { // Count total users — don't allow deleting the last admin const count = await prisma.users.count() if (count <= 1) { return { error: 'Son yönetici kullanıcı silinemez.' } } await prisma.users.delete({ where: { id: userId } }) revalidatePath('/admin/users') return { success: true } } catch (error) { console.error('Delete user error:', error) return { error: 'Kullanıcı silinirken hata oluştu.' } } }