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 import java.util.Map;
21 import java.util.Set;
22
23 import org.apache.accumulo.core.client.AccumuloException;
24 import org.apache.accumulo.core.client.AccumuloSecurityException;
25 import org.apache.accumulo.core.util.shell.Shell;
26 import org.apache.accumulo.core.util.shell.Shell.Command;
27 import org.apache.accumulo.core.util.shell.Token;
28 import org.apache.commons.cli.CommandLine;
29
30 public class AuthenticateCommand extends Command {
31 @Override
32 public int execute(final String fullCommand, final CommandLine cl, final Shell shellState) throws AccumuloException, AccumuloSecurityException, IOException {
33 final String user = cl.getArgs()[0];
34 final String p = shellState.readMaskedLine("Enter current password for '" + user + "': ", '*');
35 if (p == null) {
36 shellState.getReader().printNewline();
37 return 0;
38 }
39 final byte[] password = p.getBytes();
40 final boolean valid = shellState.getConnector().securityOperations().authenticateUser(user, password);
41 shellState.getReader().printString((valid ? "V" : "Not v") + "alid\n");
42 return 0;
43 }
44
45 @Override
46 public String description() {
47 return "verifies a user's credentials";
48 }
49
50 @Override
51 public String usage() {
52 return getName() + " <username>";
53 }
54
55 @Override
56 public void registerCompletion(final Token root, final Map<Command.CompletionSet,Set<String>> completionSet) {
57 registerCompletionForUsers(root, completionSet);
58 }
59
60 @Override
61 public int numArgs() {
62 return 1;
63 }
64 }