screentinker/server/create_admin.js
2026-07-26 14:06:26 +01:00

37 lines
1.6 KiB
JavaScript

const { db } = require('./db/database');
const bcrypt = require('bcryptjs');
const crypto = require('crypto');
const email = 'ivandro.work@gmail.com';
const password = '#whatever';
const name = 'Ivandro Alves';
const hash = bcrypt.hashSync(password, 10);
const userId = crypto.randomUUID();
try {
db.prepare('INSERT INTO users (id, email, password_hash, name, role) VALUES (?, ?, ?, ?, ?)').run(userId, email, hash, name, 'platform_admin');
// also create an organization and workspace for them
const orgId = crypto.randomUUID();
const workspaceId = crypto.randomUUID();
db.prepare('INSERT INTO organizations (id, name, owner_id) VALUES (?, ?, ?)').run(orgId, name + " Org", userId);
db.prepare('INSERT INTO workspaces (id, name, organization_id) VALUES (?, ?, ?)').run(workspaceId, 'Default Workspace', orgId);
db.prepare('INSERT INTO organization_members (organization_id, user_id, role) VALUES (?, ?, ?)').run(orgId, userId, 'admin');
db.prepare('INSERT INTO workspace_members (workspace_id, user_id, role) VALUES (?, ?, ?)').run(workspaceId, userId, 'admin');
const d = require('./db/database').dbOptions;
if (d.syncUrl) db.sync();
console.log('Admin created successfully.');
} catch (e) {
if (e.message.includes('UNIQUE constraint failed')) {
console.log('User already exists, updating password and role.');
db.prepare('UPDATE users SET password_hash = ?, role = ? WHERE email = ?').run(hash, 'platform_admin', email);
const d = require('./db/database').dbOptions;
if (d.syncUrl) db.sync();
} else {
console.error(e);
}
}