2025-06-20 07:29:50 +00:00
|
|
|
'use server'
|
|
|
|
import prisma from '@/lib/prisma'
|
|
|
|
import { revalidatePath } from 'next/cache'
|
|
|
|
import bcrypt from 'bcryptjs'
|
2025-06-20 12:26:28 +00:00
|
|
|
import type { User } from '@/generated/client'
|
2025-06-20 07:29:50 +00:00
|
|
|
|
2025-06-20 12:26:28 +00:00
|
|
|
export async function createAdmin(data: Omit<User, 'id'|'createdAt'|'updatedAt'> & { password?: string }) {
|
2025-06-20 07:29:50 +00:00
|
|
|
let password = data.password
|
|
|
|
if (password) {
|
|
|
|
password = await bcrypt.hash(password, 10)
|
|
|
|
}
|
|
|
|
await prisma.user.create({ data: { ...data, password, role: 'ADMIN' } })
|
|
|
|
revalidatePath('/usermanagement/admin')
|
|
|
|
}
|
|
|
|
|
2025-06-20 12:26:28 +00:00
|
|
|
export async function updateAdmin(id: string, data: Partial<Omit<User, 'id'|'createdAt'|'updatedAt'>>) {
|
2025-06-21 03:23:52 +00:00
|
|
|
let updateData = { ...data }
|
|
|
|
|
|
|
|
// 如果包含密码字段且不为空,则进行加密
|
|
|
|
if (data.password && data.password.trim() !== '') {
|
|
|
|
updateData.password = await bcrypt.hash(data.password, 10)
|
|
|
|
} else {
|
|
|
|
// 如果密码为空,则从更新数据中移除密码字段,保持原密码不变
|
|
|
|
delete updateData.password
|
|
|
|
}
|
|
|
|
|
|
|
|
await prisma.user.update({ where: { id }, data: updateData })
|
2025-06-20 07:29:50 +00:00
|
|
|
revalidatePath('/usermanagement/admin')
|
|
|
|
}
|
|
|
|
|
2025-06-20 12:26:28 +00:00
|
|
|
export async function deleteAdmin(id: string) {
|
2025-06-20 07:29:50 +00:00
|
|
|
await prisma.user.delete({ where: { id } })
|
|
|
|
revalidatePath('/usermanagement/admin')
|
|
|
|
}
|