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)