/home/techb158/balavpn.abdallabala.com/scripts
Edit: /home/techb158/balavpn.abdallabala.com/scripts/create-users.js (1728B)
const { PrismaClient } = require("@prisma/client");
const bcrypt = require("bcryptjs");
const prisma = new PrismaClient();
const USERS = [
{ email: "admin@cosmic.local", displayName: "COSMIC Admin", password: "admin123", roleCode: "admin" },
{ email: "pm@cosmic.local", displayName: "Project Manager", password: "pm123", roleCode: "project_manager" },
{ email: "risk-owner@cosmic.local", displayName: "Risk Owner", password: "risk123", roleCode: "risk_owner" },
{ email: "viewer@cosmic.local", displayName: "Read-Only Viewer", password: "view123", roleCode: "viewer" },
];
async function main() {
const org = await prisma.organization.findFirst();
if (!org) { console.error("No organization found. Run seed first."); process.exit(1); }
for (const u of USERS) {
const passwordHash = await bcrypt.hash(u.password, 12);
const user = await prisma.user.upsert({
where: { email: u.email },
update: { displayName: u.displayName, passwordHash },
create: {
email: u.email,
displayName: u.displayName,
passwordHash,
emailVerifiedAt: new Date(),
},
});
const role = await prisma.role.findUnique({ where: { code: u.roleCode } });
if (role) {
await prisma.membership.upsert({
where: { organizationId_userId: { organizationId: org.id, userId: user.id } },
update: { roleId: role.id, status: "ACTIVE" },
create: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" },
});
}
console.log(` ${u.email} / ${u.password} → ${u.displayName} (${u.roleCode})`);
}
console.log("Done.");
await prisma.$disconnect();
}
main().catch(e => { console.error(e); process.exit(1); });