1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.accumulo.core.util.shell.commands;
18
19 import java.io.IOException;
20
21 import org.apache.accumulo.core.client.AccumuloException;
22 import org.apache.accumulo.core.client.AccumuloSecurityException;
23 import org.apache.accumulo.core.client.TableExistsException;
24 import org.apache.accumulo.core.client.TableNotFoundException;
25 import org.apache.accumulo.core.security.Authorizations;
26 import org.apache.accumulo.core.util.shell.Shell;
27 import org.apache.accumulo.core.util.shell.Shell.Command;
28 import org.apache.commons.cli.CommandLine;
29 import org.apache.commons.cli.Options;
30
31 public class CreateUserCommand extends Command {
32 @Override
33 public int execute(final String fullCommand, final CommandLine cl, final Shell shellState) throws AccumuloException, TableNotFoundException, AccumuloSecurityException,
34 TableExistsException, IOException {
35 final String user = cl.getArgs()[0];
36
37 final String password = shellState.readMaskedLine("Enter new password for '" + user + "': ", '*');
38 if (password == null) {
39 shellState.getReader().printNewline();
40 return 0;
41 }
42 String passwordConfirm = shellState.readMaskedLine("Please confirm new password for '" + user + "': ", '*');
43 if (passwordConfirm == null) {
44 shellState.getReader().printNewline();
45 return 0;
46 }
47
48 if (!password.equals(passwordConfirm)) {
49 throw new IllegalArgumentException("Passwords do not match");
50 }
51 shellState.getConnector().securityOperations().createUser(user, password.getBytes(), new Authorizations());
52 Shell.log.debug("Created user " + user);
53 return 0;
54 }
55
56 @Override
57 public String usage() {
58 return getName() + " <username>";
59 }
60
61 @Override
62 public String description() {
63 return "creates a new user";
64 }
65
66 @Override
67 public Options getOptions() {
68 final Options o = new Options();
69 return o;
70 }
71
72 @Override
73 public int numArgs() {
74 return 1;
75 }
76 }