Email 2FA verification message improvements
This commit is contained in:
parent
4e8be657ea
commit
866ad82187
@ -322,11 +322,12 @@ public class DefaultMailService implements MailService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendTwoFaVerificationEmail(String email, String verificationCode) throws ThingsboardException {
|
public void sendTwoFaVerificationEmail(String email, String verificationCode, int expirationTimeSeconds) throws ThingsboardException {
|
||||||
String subject = messages.getMessage("2fa.verification.code.subject", null, Locale.US);
|
String subject = messages.getMessage("2fa.verification.code.subject", null, Locale.US);
|
||||||
String message = mergeTemplateIntoString("2fa.verification.code.ftl", Map.of(
|
String message = mergeTemplateIntoString("2fa.verification.code.ftl", Map.of(
|
||||||
TARGET_EMAIL, email,
|
TARGET_EMAIL, email,
|
||||||
"verificationCode", verificationCode
|
"verificationCode", verificationCode,
|
||||||
|
"expirationTimeSeconds", expirationTimeSeconds
|
||||||
));
|
));
|
||||||
|
|
||||||
sendMail(mailSender, mailFrom, email, subject, message);
|
sendMail(mailSender, mailFrom, email, subject, message);
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class EmailTwoFaProvider extends OtpBasedTwoFaProvider<EmailTwoFaProvider
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void sendVerificationCode(SecurityUser user, String verificationCode, EmailTwoFaProviderConfig providerConfig, EmailTwoFaAccountConfig accountConfig) throws ThingsboardException {
|
protected void sendVerificationCode(SecurityUser user, String verificationCode, EmailTwoFaProviderConfig providerConfig, EmailTwoFaAccountConfig accountConfig) throws ThingsboardException {
|
||||||
mailService.sendTwoFaVerificationEmail(accountConfig.getEmail(), verificationCode);
|
mailService.sendTwoFaVerificationEmail(accountConfig.getEmail(), verificationCode, providerConfig.getVerificationCodeLifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
<meta itemprop="name" content="Confirm Email" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" /><table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<meta itemprop="name" content="Confirm Email" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" /><table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; color: #348eda; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0;" valign="top" align="center">
|
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; color: #348eda; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0;" valign="top" align="center">
|
||||||
<h2 style="margin-bottom: 0;">Email verification code:</h2>
|
<h2 style="margin-bottom: 0;">Your verification code:</h2>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
@ -86,12 +86,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 8px;" valign="top">
|
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 8px;" valign="top">
|
||||||
This code will expire in ${expiredTime} minutes. To get a new one, click Resend code on the Thingsboard platform.
|
This code will expire in ${expirationTimeSeconds} seconds.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
|
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
|
||||||
If you didn't request for this code, then you can just ignore this email; access won't provided.
|
If you didn't request this code, you can ignore this email.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.common.data.security.model.mfa;
|
package org.thingsboard.server.common.data.security.model.mfa;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.thingsboard.server.common.data.security.model.mfa.provider.TwoFaProviderConfig;
|
import org.thingsboard.server.common.data.security.model.mfa.provider.TwoFaProviderConfig;
|
||||||
import org.thingsboard.server.common.data.security.model.mfa.provider.TwoFaProviderType;
|
import org.thingsboard.server.common.data.security.model.mfa.provider.TwoFaProviderType;
|
||||||
@ -26,6 +27,7 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class PlatformTwoFaSettings {
|
public class PlatformTwoFaSettings {
|
||||||
|
|
||||||
@Valid
|
@Valid
|
||||||
|
|||||||
@ -46,7 +46,7 @@ public interface MailService {
|
|||||||
|
|
||||||
void sendAccountLockoutEmail(String lockoutEmail, String email, Integer maxFailedLoginAttempts) throws ThingsboardException;
|
void sendAccountLockoutEmail(String lockoutEmail, String email, Integer maxFailedLoginAttempts) throws ThingsboardException;
|
||||||
|
|
||||||
void sendTwoFaVerificationEmail(String email, String verificationCode) throws ThingsboardException;
|
void sendTwoFaVerificationEmail(String email, String verificationCode, int expirationTimeSeconds) throws ThingsboardException;
|
||||||
|
|
||||||
void send(TenantId tenantId, CustomerId customerId, TbEmail tbEmail) throws ThingsboardException;
|
void send(TenantId tenantId, CustomerId customerId, TbEmail tbEmail) throws ThingsboardException;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user