Files
loot-hunt/src/setup-admin.js
Mike Johnston 4255d95c68
Some checks failed
Build Images and Deploy / Update-PROD-Stack (push) Failing after 14s
first commit
2026-02-28 00:01:41 -05:00

56 lines
1.6 KiB
JavaScript

/**
* Admin Setup Script
*
* Run this to create the first admin user (or promote an existing one).
* Usage: node src/setup-admin.js <username> <password>
* node src/setup-admin.js <username> (promote existing user)
*/
// Load env
const path = require('path');
const fs = require('fs');
try {
const envFile = fs.readFileSync(path.join(__dirname, '..', '.env'), 'utf8');
envFile.split('\n').forEach(line => {
const match = line.match(/^([^#=]+)=(.*)$/);
if (match) process.env[match[1].trim()] = match[2].trim();
});
} catch (e) {}
const db = require('./config/database');
async function main() {
await db.ready;
const { Users } = require('./models');
const username = process.argv[2];
const password = process.argv[3];
if (!username) {
console.log('Usage:');
console.log(' Create new admin: node src/setup-admin.js <username> <password>');
console.log(' Promote existing: node src/setup-admin.js <username>');
process.exit(1);
}
const existing = Users.findByUsername(username);
if (existing) {
Users.makeAdmin(existing.id);
console.log(`✅ User "${username}" has been promoted to admin.`);
} else if (password) {
const userId = Users.create(username, password);
Users.makeAdmin(userId);
console.log(`✅ Admin user "${username}" created successfully (ID: ${userId}).`);
} else {
console.log(`❌ User "${username}" not found. Provide a password to create a new admin.`);
process.exit(1);
}
db.forceSave();
process.exit(0);
}
main().catch(err => { console.error(err); process.exit(1); });