/* * This file is part of the authRXBN single sign-on package. * * (c) Ruben Meyer */ module.exports = { 'command': 'user [pass] [mail] [group] [data...]', 'description': 'add, get, update or remove an user', 'actionDependencies': ['vorpal'], 'action': (actionDependencies) => { let vorpal = actionDependencies.vorpal; return (args, cb) => { if(typeof args.action !== 'undefined') { let action = args.action.toLowerCase(); let profile = { user: args.nick, pass: (args.pass) ? global['app'].modules.auth.generateHash(args.pass) : "-", mail: null, group: 0 }; if(!args.mail) profile.mail = profile.user; if(args.mail) profile.mail = args.mail; if(args.group) profile.group = args.group; if(action === 'add') { global['app'].modules.database.getUser([profile.user, profile.mail], (err, rep) => { if(err) vorpal.log("ERR: While finding user"); else { if (!rep) { global['app'].modules.database.addUser(profile.user, profile.mail, profile.pass, profile.group, (errAdd, repAdd) => { if(errAdd) vorpal.log("ERR: While adding user"); else vorpal.log("Reply: "+rep); }); } else { vorpal.log("User exists: "); vorpal.log(rep); } } }); } else if(action === 'get') { global['app'].modules.database.getUser([profile.user, profile.mail], (err, rep) => { if(rep) { vorpal.log("User exists: "); vorpal.log(rep); } else { vorpal.log("User "+profile.user+" / "+profile.mail+" doesn't exist."); } }); } else if(action === 'update') { if(args.data.length < 2) vorpal.log("No data supplied."); else { let field = args.data[0]; let param = args.data[1]; vorpal.log("Field: "+field+"; Param: "+param); } } else if(action === 'remove' || action === 'delete') { global['app'].modules.database.getUser([profile.user, profile.mail], (err, rep) => { if(rep) { vorpal.log("User exists. Deleting him."); vorpal.log(rep); global['app'].modules.database.delUser(rep.email, (errDel, repDel) => { if(repDel) vorpal.log("Deleted user."); else vorpal.log("ERR: While deleting user."); }); } }); } else if(action === 'genpass') { vorpal.log(profile.pass); } cb(); } else { vorpal.exec('user --help'); cb(); } } } };