55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
// backend/prisma/seed.ts
|
|
import { PrismaClient } from "@prisma/client";
|
|
import * as bcrypt from "bcrypt";
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
const defaultAdminEmail = process.env.DEFAULT_ADMIN_EMAIL || "admin@imk.com";
|
|
const defaultAdminPassword =
|
|
process.env.DEFAULT_ADMIN_PASSWORD || "admin123456";
|
|
const defaultAdminName = process.env.DEFAULT_ADMIN_NAME || "System Admin";
|
|
|
|
try {
|
|
// Check if admin already exists
|
|
const existingAdmin = await prisma.user.findUnique({
|
|
where: { email: defaultAdminEmail },
|
|
});
|
|
|
|
if (!existingAdmin) {
|
|
// Hash the password
|
|
const hashedPassword = await bcrypt.hash(defaultAdminPassword, 10);
|
|
|
|
// Create the admin user
|
|
const admin = await prisma.user.create({
|
|
data: {
|
|
email: defaultAdminEmail,
|
|
name: defaultAdminName,
|
|
password: hashedPassword,
|
|
isAdmin: true,
|
|
},
|
|
});
|
|
|
|
console.log("Default admin user created:", {
|
|
id: admin.id,
|
|
email: admin.email,
|
|
name: admin.name,
|
|
});
|
|
} else {
|
|
console.log("Default admin user already exists");
|
|
}
|
|
} catch (error) {
|
|
console.error("Error creating default admin:", error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|