/home/techb158/cosmic-risk.abdallabala.com/scripts
NameSizeModeActions
auto-deploy.sh21450644editdlrm
backup-db.sh11030644editdlrm
check-config.js10810644editdlrm
create-users.js17280644editdlrm
deploy-prod.sh27090644editdlrm
monitor-health.sh14850644editdlrm
run-scheduled-reports.js17240644editdlrm
setup-backup-cron.sh11890644editdlrm
setup-monitoring-cron.sh5920644editdlrm
setup-supabase.sh12800644editdlrm
Edit: /home/techb158/cosmic-risk.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); });