diff --git a/src/Core/GlobalSettings.cs b/src/Core/GlobalSettings.cs index 17a689b9b1..a68273b7b6 100644 --- a/src/Core/GlobalSettings.cs +++ b/src/Core/GlobalSettings.cs @@ -14,6 +14,7 @@ namespace Bit.Core public virtual string InternalIdentityKey { get; set; } public virtual string HibpBreachApiKey { get; set; } public virtual bool DisableUserRegistration { get; set; } + public virtual bool DisableNewDeviceEmails { get; set; } public virtual InstallationSettings Installation { get; set; } = new InstallationSettings(); public virtual BaseServiceUriSettings BaseServiceUri { get; set; } = new BaseServiceUriSettings(); public virtual SqlSettings SqlServer { get; set; } = new SqlSettings(); diff --git a/src/Core/IdentityServer/ResourceOwnerPasswordValidator.cs b/src/Core/IdentityServer/ResourceOwnerPasswordValidator.cs index 615d9d3652..267854dd96 100644 --- a/src/Core/IdentityServer/ResourceOwnerPasswordValidator.cs +++ b/src/Core/IdentityServer/ResourceOwnerPasswordValidator.cs @@ -33,6 +33,7 @@ namespace Bit.Core.IdentityServer private readonly IApplicationCacheService _applicationCacheService; private readonly IMailService _mailService; private readonly CurrentContext _currentContext; + private readonly GlobalSettings _globalSettings; public ResourceOwnerPasswordValidator( UserManager userManager, @@ -45,7 +46,8 @@ namespace Bit.Core.IdentityServer IOrganizationUserRepository organizationUserRepository, IApplicationCacheService applicationCacheService, IMailService mailService, - CurrentContext currentContext) + CurrentContext currentContext, + GlobalSettings globalSettings) { _userManager = userManager; _deviceRepository = deviceRepository; @@ -58,6 +60,7 @@ namespace Bit.Core.IdentityServer _applicationCacheService = applicationCacheService; _mailService = mailService; _currentContext = currentContext; + _globalSettings = globalSettings; } public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context) @@ -384,8 +387,11 @@ namespace Bit.Core.IdentityServer { var deviceType = device.Type.GetType().GetMember(device.Type.ToString()) .FirstOrDefault()?.GetCustomAttribute()?.GetName(); - await _mailService.SendNewDeviceLoggedInEmail(user.Email, deviceType, now, - _currentContext.IpAddress); + if(!_globalSettings.DisableNewDeviceEmails) + { + await _mailService.SendNewDeviceLoggedInEmail(user.Email, deviceType, now, + _currentContext.IpAddress); + } } return device;