diff --git a/src/Core/Services/Implementations/EmergencyAccessService.cs b/src/Core/Services/Implementations/EmergencyAccessService.cs index 8cef3f6d76..41d4299ceb 100644 --- a/src/Core/Services/Implementations/EmergencyAccessService.cs +++ b/src/Core/Services/Implementations/EmergencyAccessService.cs @@ -116,17 +116,21 @@ namespace Bit.Core.Services throw new BadRequestException("Invalid token."); } + if (emergencyAccess.Status == EmergencyAccessStatusType.Accepted) + { + throw new BadRequestException("Invitation already accepted. You will receive an email when the grantor confirms you as an emergency access contact."); + } + else if (emergencyAccess.Status != EmergencyAccessStatusType.Invited) + { + throw new BadRequestException("Invitation already accepted."); + } + if (string.IsNullOrWhiteSpace(emergencyAccess.Email) || !emergencyAccess.Email.Equals(user.Email, StringComparison.InvariantCultureIgnoreCase)) { throw new BadRequestException("User email does not match invite."); } - if (emergencyAccess.Status != EmergencyAccessStatusType.Invited) - { - throw new BadRequestException("Already accepted."); - } - var granteeEmail = emergencyAccess.Email; emergencyAccess.Status = EmergencyAccessStatusType.Accepted;