bunker-admin 2fa50b001c Merge changemaker-control-panel into v2 monorepo
Absorbs the separate control-panel git repo as a subdirectory.
Instances and backups directories excluded via .gitignore.

Bunker Admin
2026-02-21 11:51:45 -07:00

50 lines
1.3 KiB
TypeScript

import 'dotenv/config';
import { PrismaClient } from '@prisma/client';
import bcrypt from 'bcryptjs';
const prisma = new PrismaClient();
async function main() {
const email = process.env.INITIAL_ADMIN_EMAIL || 'admin@example.com';
const password = process.env.INITIAL_ADMIN_PASSWORD || 'ChangeMe2025!!';
// Create initial admin user
const existing = await prisma.ccpUser.findUnique({ where: { email } });
if (!existing) {
const hashedPassword = await bcrypt.hash(password, 12);
await prisma.ccpUser.create({
data: {
email,
password: hashedPassword,
name: 'Admin',
role: 'SUPER_ADMIN',
},
});
console.log(`Created initial admin user: ${email}`);
} else {
console.log(`Admin user already exists: ${email}`);
}
// Create default settings
const defaults: Record<string, unknown> = {
defaultGitBranch: 'v2',
instancesBasePath: process.env.INSTANCES_BASE_PATH || 'instances',
};
for (const [key, value] of Object.entries(defaults)) {
await prisma.ccpSetting.upsert({
where: { key },
update: {},
create: { key, value: value as string },
});
}
console.log('Default settings seeded');
}
main()
.catch((e) => {
console.error('Seed error:', e);
process.exit(1);
})
.finally(() => prisma.$disconnect());