From f41d12c6885c68c0d4b7b5a74c9b6d4d8442fdee Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sat, 16 Feb 2019 11:03:46 -0700 Subject: [PATCH] + oputil user rename --- core/oputil/oputil_help.js | 2 ++ core/oputil/oputil_user.js | 48 ++++++++++++++++++++++++++++++++++--- docs/admin/oputil.md | 3 +++ misc/menu_template.in.hjson | 3 --- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/core/oputil/oputil_help.js b/core/oputil/oputil_help.js index f8a0d42c..6f485f0a 100644 --- a/core/oputil/oputil_help.js +++ b/core/oputil/oputil_help.js @@ -30,6 +30,8 @@ actions: aliases: password, passwd rm USERNAME permanently removes user from system aliases: remove, delete, del + rename USERNAME NEWNAME rename a user + aliases: mv activate USERNAME set status to active deactivate USERNAME set status to inactive disable USERNAME set status to disabled diff --git a/core/oputil/oputil_user.js b/core/oputil/oputil_user.js index a52facfb..33327d1d 100644 --- a/core/oputil/oputil_user.js +++ b/core/oputil/oputil_user.js @@ -227,6 +227,41 @@ function removeUser(user) { ); } +function renameUser(user) { + if(argv._.length < 3) { + return printUsageAndSetExitCode(getHelpFor('User'), ExitCodes.ERROR); + } + + const newUserName = argv._[argv._.length - 1]; + + async.series( + [ + (callback) => { + const { validateUserNameAvail } = require('../../core/system_view_validate.js'); + return validateUserNameAvail(newUserName, callback); + }, + (callback) => { + const userDb = require('../../core/database.js').dbs.user; + userDb.run( + `UPDATE user + SET user_name = ? + WHERE id = ?;`, + [ newUserName, user.userId, ], + err => { + return callback(err); + } + ); + } + ], + err => { + if(err) { + return console.error(err.reason ? err.reason : err.message); + } + return console.info(`User "${user.username}" renamed to "${newUserName}"`); + } + ); +} + function modUserGroups(user) { if(argv._.length < 3) { return printUsageAndSetExitCode(getHelpFor('User'), ExitCodes.ERROR); @@ -317,9 +352,13 @@ function handleUserCommand() { return errUsage(); } - const action = argv._[1]; - const usernameIdx = [ 'pw', 'pass', 'passwd', 'password', 'group' ].includes(action) ? argv._.length - 2 : argv._.length - 1; - const userName = argv._[usernameIdx]; + const action = argv._[1]; + const usernameIdx = [ + 'pw', 'pass', 'passwd', 'password', + 'group', + 'mv', 'rename' + ].includes(action) ? argv._.length - 2 : argv._.length - 1; + const userName = argv._[usernameIdx]; if(!userName) { return errUsage(); @@ -341,6 +380,9 @@ function handleUserCommand() { del : removeUser, delete : removeUser, + mv : renameUser, + rename : renameUser, + activate : setAccountStatus, deactivate : setAccountStatus, disable : setAccountStatus, diff --git a/docs/admin/oputil.md b/docs/admin/oputil.md index bb6dcacf..e1164540 100644 --- a/docs/admin/oputil.md +++ b/docs/admin/oputil.md @@ -49,6 +49,8 @@ actions: aliases: password, passwd rm USERNAME permanently removes user from system aliases: remove, delete, del + rename USERNAME NEWNAME rename a user + aliases: mv activate USERNAME set status to active deactivate USERNAME set status to inactive disable USERNAME set status to disabled @@ -61,6 +63,7 @@ actions: | `info` | Display user information| `./oputil.js user info joeuser` | N/A | | `pw` | Set password | `./oputil.js user pw joeuser s3cr37` | `passwd`, `password` | | `rm` | Removes user | `./oputil.js user del joeuser` | `remove`, `del`, `delete` | +| `rename` | Renames a user | `./oputil.js user rename joeuser joe` | `mv` | | `activate` | Activates user | `./oputil.js user activate joeuser` | N/A | | `deactivate` | Deactivates user | `./oputil.js user deactivate joeuser` | N/A | | `disable` | Disables user (user will not be able to login) | `./oputil.js user disable joeuser` | N/A | diff --git a/misc/menu_template.in.hjson b/misc/menu_template.in.hjson index ac51397f..9aac86f3 100644 --- a/misc/menu_template.in.hjson +++ b/misc/menu_template.in.hjson @@ -1985,9 +1985,6 @@ submit: true argName: message } - TL6: { - // theme me! - } } submit: { *: [