diff --git a/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.cs b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.cs new file mode 100644 index 000000000000..71043d4a3773 --- /dev/null +++ b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.cs @@ -0,0 +1,13 @@ +using Bit.Core.Platform.Mail.Mailer; + +namespace Bit.Core.AdminConsole.Models.Mail.Mailer.MemberEmailChanged; + +public class MemberEmailChangedNotificationView : BaseMailView +{ + public required string NewEmail { get; set; } +} + +public class MemberEmailChangedNotificationMail : BaseMail +{ + public override string Subject { get; set; } = "Your Bitwarden account email was updated"; +} diff --git a/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.html.hbs b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.html.hbs new file mode 100644 index 000000000000..494efb374d1f --- /dev/null +++ b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.html.hbs @@ -0,0 +1,51 @@ +

Your Bitwarden account email was updated by an admin

Use the new email to log in to your account.
Your new email
{{NewEmail}}
If this change doesn't seem right, contact your admin.

Learn more about Bitwarden

Find user guides, product documentation, and videos on the Bitwarden Help Center.

© {{ CurrentYear }} Bitwarden Inc. 1 N. Calle Cesar Chavez, Suite 102, Santa Barbara, CA, USA

Always confirm you are on a trusted Bitwarden domain before logging in:
bitwarden.com | Learn why we include this

\ No newline at end of file diff --git a/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.text.hbs b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.text.hbs new file mode 100644 index 000000000000..acf2c2c15f9e --- /dev/null +++ b/src/Core/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationView.text.hbs @@ -0,0 +1,7 @@ +Your Bitwarden account email was updated by an admin. + +Use the new email to log in to your account. + +Your new email: {{NewEmail}} + +If this change doesn't seem right, contact your admin. diff --git a/src/Core/MailTemplates/Mjml/emails/AdminConsole/MemberEmailChanged/member-email-changed-notification.mjml b/src/Core/MailTemplates/Mjml/emails/AdminConsole/MemberEmailChanged/member-email-changed-notification.mjml new file mode 100644 index 000000000000..7c763f35702f --- /dev/null +++ b/src/Core/MailTemplates/Mjml/emails/AdminConsole/MemberEmailChanged/member-email-changed-notification.mjml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + Use the new email to log in to your account. + + + Your new email
+ {{NewEmail}} +
+ + If this change doesn't seem right, contact your admin. + +
+
+
+ + + + + + + + +
+
diff --git a/test/Core.Test/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationViewTests.cs b/test/Core.Test/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationViewTests.cs new file mode 100644 index 000000000000..44d16048298c --- /dev/null +++ b/test/Core.Test/AdminConsole/Models/Mail/Mailer/MemberEmailChanged/MemberEmailChangedNotificationViewTests.cs @@ -0,0 +1,25 @@ +using Bit.Core.AdminConsole.Models.Mail.Mailer.MemberEmailChanged; +using Bit.Core.Platform.Mail.Mailer; +using Bit.Core.Settings; +using Microsoft.Extensions.Logging; +using NSubstitute; +using Xunit; + +namespace Bit.Core.Test.AdminConsole.Models.Mail.Mailer.MemberEmailChanged; + +public class MemberEmailChangedNotificationViewTests +{ + [Fact] + public async Task RenderAsync_PopulatesNewEmailInBothTemplates() + { + var renderer = new HandlebarMailRenderer( + Substitute.For>(), + new GlobalSettings()); + + var (html, text) = await renderer.RenderAsync( + new MemberEmailChangedNotificationView { NewEmail = "new@acme.com" }); + + Assert.Contains("new@acme.com", html); + Assert.Contains("new@acme.com", text); + } +}