diff --git a/src/Core/Auth/Models/Data/EmergencyAccessDetails.cs b/src/Core/Auth/Models/Data/EmergencyAccessDetails.cs
index b179f67af5..86c1e6953f 100644
--- a/src/Core/Auth/Models/Data/EmergencyAccessDetails.cs
+++ b/src/Core/Auth/Models/Data/EmergencyAccessDetails.cs
@@ -8,6 +8,9 @@ public class EmergencyAccessDetails : EmergencyAccess
public string? GranteeEmail { get; set; }
public string? GranteeAvatarColor { get; set; }
public string? GrantorName { get; set; }
+ ///
+ /// Grantor email is assumed not null because in order to create an emergency access the grantor must be an existing user.
+ ///
public required string GrantorEmail { get; set; }
public string? GrantorAvatarColor { get; set; }
}
diff --git a/src/Core/Platform/Mail/HandlebarsMailService.cs b/src/Core/Platform/Mail/HandlebarsMailService.cs
index d57ca400fd..66253a5acd 100644
--- a/src/Core/Platform/Mail/HandlebarsMailService.cs
+++ b/src/Core/Platform/Mail/HandlebarsMailService.cs
@@ -1,6 +1,4 @@
-#nullable enable
-
-using System.Diagnostics;
+using System.Diagnostics;
using System.Net;
using System.Reflection;
using System.Text.Json;
@@ -13,6 +11,7 @@ using Bit.Core.Auth.Models.Mail;
using Bit.Core.Billing.Enums;
using Bit.Core.Billing.Models.Mail;
using Bit.Core.Entities;
+using Bit.Core.Exceptions;
using Bit.Core.Models.Data.Organizations;
using Bit.Core.Models.Mail;
using Bit.Core.Models.Mail.Auth;
@@ -1040,6 +1039,11 @@ public class HandlebarsMailService : IMailService
public async Task SendEmergencyAccessInviteEmailAsync(EmergencyAccess emergencyAccess, string name, string token)
{
+ if(string.IsNullOrEmpty(emergencyAccess.Email))
+ {
+ throw new BadRequestException("Emergency Access not valid.");
+ }
+
var message = CreateDefaultMessage($"Emergency Access Contact Invite", emergencyAccess.Email);
var model = new EmergencyAccessInvitedViewModel
{
diff --git a/test/Api.Test/KeyManagement/Validators/EmergencyAccessRotationValidatorTests.cs b/test/Api.Test/KeyManagement/Validators/EmergencyAccessRotationValidatorTests.cs
index e00129fd89..767d735660 100644
--- a/test/Api.Test/KeyManagement/Validators/EmergencyAccessRotationValidatorTests.cs
+++ b/test/Api.Test/KeyManagement/Validators/EmergencyAccessRotationValidatorTests.cs
@@ -30,7 +30,7 @@ public class EmergencyAccessRotationValidatorTests
KeyEncrypted = e.KeyEncrypted,
Type = e.Type
}).ToList();
- userEmergencyAccess.Add(new EmergencyAccessDetails { Id = Guid.NewGuid(), KeyEncrypted = "TestKey" });
+ userEmergencyAccess.Add(new EmergencyAccessDetails { Id = Guid.NewGuid(), GrantorEmail="grantor@example.com", KeyEncrypted = "TestKey" });
sutProvider.GetDependency().GetManyDetailsByGrantorIdAsync(user.Id)
.Returns(userEmergencyAccess);
diff --git a/test/Core.Test/Auth/UserFeatures/EmergencyAccess/EmergencyAccessMailTests.cs b/test/Core.Test/Auth/UserFeatures/EmergencyAccess/EmergencyAccessMailTests.cs
index cee2f64fc4..60c3644dae 100644
--- a/test/Core.Test/Auth/UserFeatures/EmergencyAccess/EmergencyAccessMailTests.cs
+++ b/test/Core.Test/Auth/UserFeatures/EmergencyAccess/EmergencyAccessMailTests.cs
@@ -148,6 +148,6 @@ public class EmergencyAccessMailTests
Assert.NotNull(mail);
Assert.NotNull(mail.View);
Assert.Equal(_emergencyAccessMailSubject, mail.Subject);
- Assert.Equal(_emergencyAccessHelpUrl, mail.View.EmergencyAccessHelpPageUrl);
+ Assert.Equal(_emergencyAccessHelpUrl, EmergencyAccessRemoveGranteesMailView.EmergencyAccessHelpPageUrl);
}
}