From ac4ea4b265ffe414b18c405564c02c6ed30e45fe Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Thu, 1 Jul 2021 13:55:04 -0400 Subject: [PATCH] reset_admin_password - add option for specifying initial password --- db/reset_admin_password.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/db/reset_admin_password.js b/db/reset_admin_password.js index 94a24d8..dc9fa1d 100755 --- a/db/reset_admin_password.js +++ b/db/reset_admin_password.js @@ -1,5 +1,4 @@ #!/usr/bin/env node -console.log('reset_admin_password'); const {promisePool} = require('../lib/db'); const uuidv4 = require('uuid/v4'); const {generateHashedPassword} = require('../lib/utils/password-utils'); @@ -7,18 +6,22 @@ const sqlInsert = `INSERT into users (user_sid, name, email, hashed_password, force_change, provider, email_validated) values (?, ?, ?, ?, ?, ?, ?) `; -const sqlChangeAdminToken = `UPDATE api_keys set token = ? -WHERE account_sid IS NULL -AND service_provider_sid IS NULL`; -const sqlQueryAccount = 'SELECT * from accounts LIMIT 1'; -const sqlAddAccountAdminToken = `INSERT into api_keys (api_key_sid, token, account_sid) +const sqlInsertAdminToken = `INSERT into api_keys +(api_key_sid, token) +values (?, ?)`; +const sqlQueryAccount = 'SELECT * from accounts LEFT JOIN api_keys ON api_keys.account_sid = accounts.account_sid'; +const sqlAddAccountToken = `INSERT into api_keys (api_key_sid, token, account_sid) VALUES (?, ?, ?)`; +const password = process.env.JAMBONES_ADMIN_INITIAL_PASSWORD || 'admin'; +console.log(`reset_admin_password, initial admin password is ${password}`); + const doIt = async() => { - const passwordHash = await generateHashedPassword('admin'); + const passwordHash = await generateHashedPassword(password); const sid = uuidv4(); await promisePool.execute('DELETE from users where name = "admin"'); - await promisePool.execute(sqlInsert, + await promisePool.execute('DELETE from api_keys where account_sid is null and service_provider_sid is null'); + await promisePool.execute(sqlInsert, [ sid, 'admin', @@ -29,17 +32,15 @@ const doIt = async() => { 1 ] ); - - /* reset admin token */ - const uuid = uuidv4(); - await promisePool.query(sqlChangeAdminToken, [uuid]); + await promisePool.execute(sqlInsertAdminToken, [uuidv4(), uuidv4()]); /* create admin token for single account */ - const api_key_sid = uuidv4(); - const token = uuidv4(); - const [r] = await promisePool.query(sqlQueryAccount); - if (r.length > 0) { - await promisePool.execute(sqlAddAccountAdminToken, [api_key_sid, token, r[0].account_sid]); + const [r] = await promisePool.query({sql: sqlQueryAccount, nestTables: true}); + if (1 === r.length && r[0].api_keys.api_key_sid === null) { + const api_key_sid = uuidv4(); + const token = uuidv4(); + const {account_sid} = r[0].accounts; + await promisePool.execute(sqlAddAccountToken, [api_key_sid, token, account_sid]); } process.exit(0);