28 lines
693 B
JavaScript
28 lines
693 B
JavaScript
import { hash } from "bcryptjs";
|
|
import { PrismaClient } from "@prisma/client";
|
|
|
|
const email = process.env.ADMIN_EMAIL?.trim().toLowerCase();
|
|
const password = process.env.ADMIN_PASSWORD;
|
|
|
|
if (!email || !password) {
|
|
throw new Error("ADMIN_EMAIL and ADMIN_PASSWORD are required to seed the admin user.");
|
|
}
|
|
|
|
if (password.length < 12) {
|
|
throw new Error("ADMIN_PASSWORD must be at least 12 characters long.");
|
|
}
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
try {
|
|
const passwordHash = await hash(password, 12);
|
|
|
|
await prisma.user.upsert({
|
|
where: { email },
|
|
update: { password: passwordHash },
|
|
create: { email, password: passwordHash },
|
|
});
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|