diff --git a/bin/xo-server-recover-account b/bin/xo-server-recover-account new file mode 100755 index 000000000..eb43519a5 --- /dev/null +++ b/bin/xo-server-recover-account @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('exec-promise')(require('../dist/recover-account-cli').default) diff --git a/package.json b/package.json index c8ce930c4..7bb9ada95 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "promise-toolbox": "^0.8.2", "proxy-agent": "^2.0.0", "pug": "^2.0.0-beta11", + "pw": "^0.0.4", "redis": "^2.7.1", "schema-inspector": "^1.6.8", "semver": "^5.3.0", diff --git a/src/recover-account-cli.js b/src/recover-account-cli.js new file mode 100644 index 000000000..9474a4f3f --- /dev/null +++ b/src/recover-account-cli.js @@ -0,0 +1,38 @@ +import appConf from 'app-conf' +import pw from 'pw' + +import Xo from './xo' + +const recoverAccount = async ([ name ]) => { + if ( + name === undefined || + name === '--help' || + name === '-h' + ) { + return ` +xo-server-recover-account + + If the user does not exist, it is created, if it exists, updates + its password and resets its permission to Admin. +` + } + + const password = await new Promise(resolve => { + process.stdout.write('Password: ') + pw(resolve) + }) + + const xo = new Xo(await appConf.load('xo-server', { + ignoreUnknownFormats: true + })) + + const user = await xo.getUserByName(name, true) + if (user !== null) { + await xo.updateUser(user.id, { password, permission: 'admin' }) + console.log(`user ${name} has been successfully updated`) + } else { + await xo.createUser({ name, password, permission: 'admin' }) + console.log(`user ${name} has been successfully created`) + } +} +export { recoverAccount as default } diff --git a/yarn.lock b/yarn.lock index ff9408bb1..f1f808a2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5354,7 +5354,7 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -pw@0.0.4: +pw@0.0.4, pw@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/pw/-/pw-0.0.4.tgz#8015982ef8bebfd9d8eb8c795e751774871fde46"