package io.lumify.web.auth.usernamepassword;
import io.lumify.core.config.Configurable;
import io.lumify.core.config.PostConfigurationValidator;
public class ForgotPasswordConfiguration {
public static final String CONFIGURATION_PREFIX = "forgotPassword";
private boolean enabled;
private String mailServerHostname;
private int mailServerPort;
private String mailServerUsername;
private String mailServerPassword;
private MailServerAuthentication mailServerAuthentication;
private int tokenLifetimeMinutes;
private String emailFrom;
private String emailReplyTo;
private String emailSubject;
private String newPasswordLabel;
private String newPasswordConfirmationLabel;
@Configurable(name = "enabled", defaultValue = "false")
public void setEnabled(String enabled) {
this.enabled = Boolean.valueOf(enabled);
}
@Configurable(name = "mailServerHostname", required = false)
public void setMailServerHostname(String mailServerHostname) {
this.mailServerHostname = mailServerHostname;
}
@Configurable(name = "mailServerPort", required = false)
public void setMailServerPort(int mailServerPort) {
this.mailServerPort = mailServerPort;
}
@Configurable(name = "mailServerUsername", required = false)
public void setMailServerUsername(String mailServerUsername) {
this.mailServerUsername = mailServerUsername;
}
@Configurable(name = "mailServerPassword", required = false)
public void setMailServerPassword(String mailServerPassword) {
this.mailServerPassword = mailServerPassword;
}
@Configurable(name = "mailServerAuthentication", defaultValue = "NONE")
public void setMailServerAuthentication(String mailServerAuthentication) {
this.mailServerAuthentication = MailServerAuthentication.valueOf(mailServerAuthentication);
}
@Configurable(name = "tokenLifetimeMinutes", defaultValue = "60")
public void setTokenLifetimeMinutes(int tokenLifetimeMinutes) {
this.tokenLifetimeMinutes = tokenLifetimeMinutes;
}
@Configurable(name = "emailFrom", required = false)
public void setEmailFrom(String emailFrom) {
this.emailFrom = emailFrom;
}
@Configurable(name = "emailReplyTo", required = false)
public void setEmailReplyTo(String emailReplyTo) {
this.emailReplyTo = emailReplyTo;
}
@Configurable(name = "emailSubject", defaultValue = "Forgotten Lumify Password")
public void setEmailSubject(String emailSubject) {
this.emailSubject = emailSubject;
}
@Configurable(name = "newPasswordLabel", defaultValue = "New Password")
public void setNewPasswordLabel(String newPasswordLabel) {
this.newPasswordLabel = newPasswordLabel;
}
@Configurable(name = "newPasswordConfirmationLabel", defaultValue = "New Password (again)")
public void setNewPasswordConfirmationLabel(String newPasswordConfirmationLabel) {
this.newPasswordConfirmationLabel = newPasswordConfirmationLabel;
}
@PostConfigurationValidator(description = "mail server and from address settings are required if the forgot password feature is enabled")
public boolean validateMailServerSettings() {
return !enabled || (isNotNullOrBlank(mailServerHostname) &&
mailServerPort > 0 &&
isNotNullOrBlank(mailServerUsername) &&
isNotNullOrBlank(mailServerPassword) &&
isNotNullOrBlank(emailFrom) &&
isNotNullOrBlank(emailReplyTo)
);
}
public boolean isEnabled() {
return enabled;
}
public String getMailServerHostname() {
return mailServerHostname;
}
public int getMailServerPort() {
return mailServerPort;
}
public String getMailServerPassword() {
return mailServerPassword;
}
public String getMailServerUsername() {
return mailServerUsername;
}
public MailServerAuthentication getMailServerAuthentication() {
return mailServerAuthentication;
}
public int getTokenLifetimeMinutes() {
return tokenLifetimeMinutes;
}
public String getEmailFrom() {
return emailFrom;
}
public String getEmailReplyTo() {
return emailReplyTo;
}
public String getEmailSubject() {
return emailSubject;
}
public String getNewPasswordLabel() {
return newPasswordLabel;
}
public String getNewPasswordConfirmationLabel() {
return newPasswordConfirmationLabel;
}
private boolean isNotNullOrBlank(String s) {
return s != null && s.trim().length() > 0;
}
public enum MailServerAuthentication {
NONE,
TLS,
SSL
}
}