Browse Source

2FA refactoring

pull/6235/head
Viacheslav Klimov 4 years ago
parent
commit
985f7c79aa
  1. 15
      application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java
  2. 8
      application/src/main/java/org/thingsboard/server/service/security/auth/mfa/DefaultTwoFactorAuthService.java
  3. 4
      application/src/main/java/org/thingsboard/server/service/security/auth/mfa/provider/impl/EmailTwoFaProvider.java
  4. 10
      application/src/main/java/org/thingsboard/server/service/sms/DefaultSmsService.java
  5. 2
      common/data/src/main/java/org/thingsboard/server/common/data/security/model/mfa/PlatformTwoFaSettings.java
  6. 4
      rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/MailService.java
  7. 4
      rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/SmsService.java

15
application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java

@ -105,16 +105,6 @@ public class DefaultMailService implements MailService {
}
}
@Override
public boolean isConfigured(TenantId tenantId) {
try {
mailSender.testConnection();
return true;
} catch (MessagingException e) {
return false;
}
}
private JavaMailSenderImpl createMailSender(JsonNode jsonConfig) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(jsonConfig.get("smtpHost").asText());
@ -360,6 +350,11 @@ public class DefaultMailService implements MailService {
sendMail(mailSender, mailFrom, email, subject, message);
}
@Override
public void testConnection(TenantId tenantId) throws Exception {
mailSender.testConnection();
}
private String toEnabledValueLabel(ApiFeature apiFeature) {
switch (apiFeature) {
case DB:

8
application/src/main/java/org/thingsboard/server/service/security/auth/mfa/DefaultTwoFactorAuthService.java

@ -121,11 +121,11 @@ public class DefaultTwoFactorAuthService implements TwoFactorAuthService {
TwoFaProviderConfig providerConfig = twoFaSettings.getProviderConfig(accountConfig.getProviderType())
.orElseThrow(() -> PROVIDER_NOT_CONFIGURED_ERROR);
boolean verificationSuccess;
boolean verificationSuccess = false;
if (StringUtils.isNotBlank(verificationCode)) {
verificationSuccess = getTwoFaProvider(accountConfig.getProviderType()).checkVerificationCode(user, verificationCode, providerConfig, accountConfig);
} else {
verificationSuccess = false;
if (StringUtils.isNumeric(verificationCode) || accountConfig.getProviderType() == TwoFaProviderType.BACKUP_CODE) {
verificationSuccess = getTwoFaProvider(accountConfig.getProviderType()).checkVerificationCode(user, verificationCode, providerConfig, accountConfig);
}
}
if (checkLimits) {
try {

4
application/src/main/java/org/thingsboard/server/service/security/auth/mfa/provider/impl/EmailTwoFaProvider.java

@ -48,7 +48,9 @@ public class EmailTwoFaProvider extends OtpBasedTwoFaProvider<EmailTwoFaProvider
@Override
public void check(TenantId tenantId) throws ThingsboardException {
if (!mailService.isConfigured(tenantId)) {
try {
mailService.testConnection(tenantId);
} catch (Exception e) {
throw new ThingsboardException("Mail service is not set up", ThingsboardErrorCode.BAD_REQUEST_PARAMS);
}
}

10
application/src/main/java/org/thingsboard/server/service/sms/DefaultSmsService.java

@ -86,11 +86,6 @@ public class DefaultSmsService implements SmsService {
}
}
@Override
public boolean isConfigured(TenantId tenantId) {
return smsSender != null;
}
private int sendSms(String numberTo, String message) throws ThingsboardException {
if (this.smsSender == null) {
throw new ThingsboardException("Unable to send SMS: no SMS provider configured!", ThingsboardErrorCode.GENERAL);
@ -128,6 +123,11 @@ public class DefaultSmsService implements SmsService {
testSmsSender.destroy();
}
@Override
public boolean isConfigured(TenantId tenantId) {
return smsSender != null;
}
private int sendSms(SmsSender smsSender, String numberTo, String message) throws ThingsboardException {
try {
return smsSender.sendSms(numberTo, message);

2
common/data/src/main/java/org/thingsboard/server/common/data/security/model/mfa/PlatformTwoFaSettings.java

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.security.model.mfa.provider.TwoFaProvi
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;
import java.util.Optional;
@ -31,6 +32,7 @@ import java.util.Optional;
public class PlatformTwoFaSettings {
@Valid
@NotNull
private List<TwoFaProviderConfig> providers;
@Min(value = 5, message = "minimum verification code sent period must be greater than or equal 5")

4
rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/MailService.java

@ -28,8 +28,6 @@ public interface MailService {
void updateMailConfiguration();
boolean isConfigured(TenantId tenantId);
void sendEmail(TenantId tenantId, String email, String subject, String message) throws ThingsboardException;
void sendTestMail(JsonNode config, String email) throws ThingsboardException;
@ -54,4 +52,6 @@ public interface MailService {
void sendApiFeatureStateEmail(ApiFeature apiFeature, ApiUsageStateValue stateValue, String email, ApiUsageStateMailMessage msg) throws ThingsboardException;
void testConnection(TenantId tenantId) throws Exception;
}

4
rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/SmsService.java

@ -24,10 +24,10 @@ public interface SmsService {
void updateSmsConfiguration();
boolean isConfigured(TenantId tenantId);
void sendSms(TenantId tenantId, CustomerId customerId, String[] numbersTo, String message) throws ThingsboardException;;
void sendTestSms(TestSmsRequest testSmsRequest) throws ThingsboardException;
boolean isConfigured(TenantId tenantId);
}

Loading…
Cancel
Save