diff --git a/modules/eeuser/src/main/java/org/jpos/q2/cli/PASSWD.java b/modules/eeuser/src/main/java/org/jpos/q2/cli/PASSWD.java new file mode 100644 index 0000000000..3f8c3aa529 --- /dev/null +++ b/modules/eeuser/src/main/java/org/jpos/q2/cli/PASSWD.java @@ -0,0 +1,85 @@ +/* + * jPOS Project [http://jpos.org] + * Copyright (C) 2000-2019 jPOS Software SRL + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.jpos.q2.cli; + +import org.apache.commons.cli.*; +import org.jpos.ee.*; +import org.jpos.q2.CLICommand; +import org.jpos.q2.CLIContext; + +import java.io.PrintWriter; +import java.util.Collections; + +@SuppressWarnings("unused") +public class PASSWD implements CLICommand { + @Override + public void exec(CLIContext cli, String[] args) throws Exception { + CommandLineParser parser = new DefaultParser(); + Options options = new Options(); + options.addOption ("p", "password", true, "The password (mandatory)"); + CommandLine line = parser.parse(options, shl(shl(args))); + + if (args.length < 3) { + showHelp (cli, args, options); + return; + } + + try (DB db = new DB()) { + db.open(); + db.beginTransaction(); + UserManager mgr = new UserManager(db); + + User user = mgr.getUserByNick(args[1], true); + if (user == null) { + cli.println ("User doesn't exist. Please create it first with the 'adduser' command"); + return; + } + if (!line.hasOption('p')) { + cli.println ("A password must be given."); + return; + } + + mgr.setPassword(user, line.getOptionValue('p')); + db.session().save(user); + db.commit(); + cli.println ("User '" + user.getNickAndId() + "': password changed."); + } catch (Exception e) { + cli.println (e.getMessage()); + } + } + + private String[] shl (String[] args) { + switch (args.length) { + case 0: + return args; + case 1: + return new String[0]; + } + String[] shl = new String[args.length-1]; + System.arraycopy(args,1, shl, 0, args.length-1); + return shl; + } + + private void showHelp (CLIContext cli, String args[], Options options) { + PrintWriter pw = new PrintWriter (cli.getOutputStream()); + HelpFormatter helpFormatter = new HelpFormatter (); + helpFormatter.printHelp (args[0] + " [options]", options); + helpFormatter.printHelp(pw, HelpFormatter.DEFAULT_WIDTH, args[0], null, options, 0, HelpFormatter.DEFAULT_DESC_PAD, null,false); + } +} diff --git a/modules/eeuser/src/main/resources/org/jpos/q2/cli/PASSWD.man b/modules/eeuser/src/main/resources/org/jpos/q2/cli/PASSWD.man new file mode 100644 index 0000000000..66488ee14f --- /dev/null +++ b/modules/eeuser/src/main/resources/org/jpos/q2/cli/PASSWD.man @@ -0,0 +1,2 @@ +usage: adduser + -p,--password The password (mandatory)