1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.mail.smtp.authentication;
35
36 import info.magnolia.keystore.registry.PasswordRegistry;
37 import info.magnolia.module.mail.MailConstants;
38 import info.magnolia.module.mail.MailModule;
39 import info.magnolia.objectfactory.Components;
40
41 import javax.inject.Inject;
42 import javax.mail.Authenticator;
43 import javax.mail.PasswordAuthentication;
44
45 import org.apache.commons.lang3.StringUtils;
46
47
48
49
50 public class UsernamePasswordSmtpAuthentication implements SmtpAuthentication {
51 private String user;
52 private String passwordKeyStoreId;
53
54 private final PasswordRegistry passwordRegistry;
55
56 @Inject
57 public UsernamePasswordSmtpAuthentication(PasswordRegistry passwordRegistry) {
58 this.passwordRegistry = passwordRegistry;
59 }
60
61 public Authenticator getAuthenticator() {
62 return new Authenticator() {
63 @Override
64 protected PasswordAuthentication getPasswordAuthentication() {
65
66 final String user = StringUtils.isBlank(getUser()) ? Components.getComponent(MailModule.class).getSmtp().get(MailConstants.SMTP_USER) : getUser();
67 final String password = StringUtils.isBlank(getPasswordKeyStoreId()) ? Components.getComponent(MailModule.class).getSmtp().get(MailConstants.SMTP_PASSWORD) : passwordRegistry.getPassword(getPasswordKeyStoreId()).getDecryptedValue();
68 return new PasswordAuthentication(user, password);
69 }
70 };
71 }
72
73 public String getUser() {
74 return user;
75 }
76
77 public void setUser(String user) {
78 this.user = user;
79 }
80
81 public String getPasswordKeyStoreId() {
82 return passwordKeyStoreId;
83 }
84
85 public void setPasswordKeyStoreId(String passwordKeyStoreId) {
86 this.passwordKeyStoreId = passwordKeyStoreId;
87 }
88 }
89
90