Temp-Email-Service/scripts/update_admin_password.js
2025-01-27 20:42:47 -05:00

41 lines
1.0 KiB
JavaScript

const User = require('../src/db/models/User');
const { Model } = require('objection');
const Knex = require('knex');
const knexConfig = require('../src/config/database');
const knex = Knex(knexConfig.development);
Model.knex(knex);
const crypto = require('crypto');
const email = process.argv[2];
let password = process.argv[3];
if (!email && !password) {
console.error('Usage: node update_admin_password.js <email> [password]');
process.exit(1);
}
async function main() {
const user = await User.query().where('email', email).first();
if (!user) {
console.error('User not found');
process.exit(1);
}
if (!user.is_admin) {
console.error('User is not an admin');
process.exit(1);
}
if (!password) {
password = crypto.randomBytes(16).toString('hex');
}
user.password = password;
await user.$query().patch();
console.log(`User password updated: ${user.email}`);
console.log(`New password: ${password}`);
process.exit(0);
}
main();