diff --git a/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.html.hbs b/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.html.hbs index 930d39eeee..67537b81a7 100644 --- a/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.html.hbs +++ b/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.html.hbs @@ -6,11 +6,8 @@ -
- {{OrgName}} has identified {{TaskCount}} critical login{{#if TaskCountPlural}}s{{/if}} that require{{#unless - TaskCountPlural}}s{{/unless}} a - password change + + {{OrgName}} has identified {{TaskCount}} critical {{plurality TaskCount "login" "logins"}} that {{plurality TaskCount "requires" "require"}} a password change
diff --git a/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.text.hbs b/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.text.hbs index f9befac46c..009e2b923f 100644 --- a/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.text.hbs +++ b/src/Core/MailTemplates/Handlebars/Layouts/SecurityTasks.text.hbs @@ -1,7 +1,5 @@ {{#>FullTextLayout}} -{{OrgName}} has identified {{TaskCount}} critical login{{#if TaskCountPlural}}s{{/if}} that require{{#unless -TaskCountPlural}}s{{/unless}} a -password change +{{OrgName}} has identified {{TaskCount}} critical {{plurality TaskCount "login" "logins"}} that {{plurality TaskCount "requires" "require"}} a password change {{>@partial-block}} diff --git a/src/Core/Models/Mail/SecurityTaskNotificationViewModel.cs b/src/Core/Models/Mail/SecurityTaskNotificationViewModel.cs index 9b4ede6e01..d41ca41146 100644 --- a/src/Core/Models/Mail/SecurityTaskNotificationViewModel.cs +++ b/src/Core/Models/Mail/SecurityTaskNotificationViewModel.cs @@ -6,8 +6,6 @@ public class SecurityTaskNotificationViewModel : BaseMailModel public int TaskCount { get; set; } - public bool TaskCountPlural => TaskCount != 1; - public List AdminOwnerEmails { get; set; } public string ReviewPasswordsUrl => $"{WebVaultUrl}/browser-extension-prompt"; diff --git a/src/Core/Services/Implementations/HandlebarsMailService.cs b/src/Core/Services/Implementations/HandlebarsMailService.cs index 430636f44d..a551342324 100644 --- a/src/Core/Services/Implementations/HandlebarsMailService.cs +++ b/src/Core/Services/Implementations/HandlebarsMailService.cs @@ -794,6 +794,29 @@ public class HandlebarsMailService : IMailService writer.WriteSafeString($"{outputMessage}"); }); + + // Returns the singular or plural form of a word based on the provided numeric value. + Handlebars.RegisterHelper("plurality", (writer, context, parameters) => + { + if (parameters.Length != 3) + { + writer.WriteSafeString(string.Empty); + return; + } + + var numeric = parameters[0]; + var singularText = parameters[1].ToString(); + var pluralText = parameters[2].ToString(); + + if (numeric is int number) + { + writer.WriteSafeString(number == 1 ? singularText : pluralText); + } + else + { + writer.WriteSafeString(string.Empty); + } + }); } public async Task SendEmergencyAccessInviteEmailAsync(EmergencyAccess emergencyAccess, string name, string token)