1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.cling.invoker.mvnenc;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.List;
26 import java.util.Map;
27 import java.util.Optional;
28
29 import org.apache.maven.api.services.Prompter;
30 import org.apache.maven.api.services.PrompterException;
31 import org.codehaus.plexus.components.secdispatcher.MasterSource;
32 import org.codehaus.plexus.components.secdispatcher.MasterSourceMeta;
33 import org.codehaus.plexus.components.secdispatcher.SecDispatcher;
34 import org.codehaus.plexus.components.secdispatcher.SecDispatcherException;
35
36
37
38
39 @Singleton
40 @Named(ConsolePasswordPrompt.NAME)
41 public class ConsolePasswordPrompt implements MasterSource, MasterSourceMeta {
42 public static final String NAME = "console-prompt";
43
44 private final Prompter prompter;
45
46 @Inject
47 public ConsolePasswordPrompt(Prompter prompter) {
48 this.prompter = prompter;
49 }
50
51 @Override
52 public String description() {
53 return "Secure console password prompt";
54 }
55
56 @Override
57 public Optional<String> configTemplate() {
58 return Optional.empty();
59 }
60
61 @Override
62 public String handle(String config) throws SecDispatcherException {
63 if (NAME.equals(config)) {
64 try {
65 return prompter.promptForPassword("Enter the master password: ");
66 } catch (PrompterException e) {
67 throw new SecDispatcherException("Could not collect the password", e);
68 }
69 }
70 return null;
71 }
72
73 @Override
74 public SecDispatcher.ValidationResponse validateConfiguration(String config) {
75 if (NAME.equals(config)) {
76 return new SecDispatcher.ValidationResponse(getClass().getSimpleName(), true, Map.of(), List.of());
77 }
78 return null;
79 }
80 }