mirror of
https://github.com/bitwarden/server.git
synced 2024-11-25 12:45:18 +01:00
Add push notification to sync new asymmetric keys to other devices
This commit is contained in:
parent
3ffa5555e1
commit
6899e49bb5
@ -8,6 +8,7 @@ using Bit.Core.Exceptions;
|
|||||||
using Bit.Core.KeyManagement.Commands.Interfaces;
|
using Bit.Core.KeyManagement.Commands.Interfaces;
|
||||||
using Bit.Core.KeyManagement.Models.Data;
|
using Bit.Core.KeyManagement.Models.Data;
|
||||||
using Bit.Core.KeyManagement.Repositories;
|
using Bit.Core.KeyManagement.Repositories;
|
||||||
|
using Bit.Core.Services;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Bit.Core.KeyManagement.Commands;
|
namespace Bit.Core.KeyManagement.Commands;
|
||||||
@ -17,15 +18,18 @@ public class RegenerateUserAsymmetricKeysCommand : IRegenerateUserAsymmetricKeys
|
|||||||
private readonly ICurrentContext _currentContext;
|
private readonly ICurrentContext _currentContext;
|
||||||
private readonly ILogger<RegenerateUserAsymmetricKeysCommand> _logger;
|
private readonly ILogger<RegenerateUserAsymmetricKeysCommand> _logger;
|
||||||
private readonly IUserAsymmetricKeysRepository _userAsymmetricKeysRepository;
|
private readonly IUserAsymmetricKeysRepository _userAsymmetricKeysRepository;
|
||||||
|
private readonly IPushNotificationService _pushService;
|
||||||
|
|
||||||
public RegenerateUserAsymmetricKeysCommand(
|
public RegenerateUserAsymmetricKeysCommand(
|
||||||
ICurrentContext currentContext,
|
ICurrentContext currentContext,
|
||||||
IUserAsymmetricKeysRepository userAsymmetricKeysRepository,
|
IUserAsymmetricKeysRepository userAsymmetricKeysRepository,
|
||||||
|
IPushNotificationService pushService,
|
||||||
ILogger<RegenerateUserAsymmetricKeysCommand> logger)
|
ILogger<RegenerateUserAsymmetricKeysCommand> logger)
|
||||||
{
|
{
|
||||||
_currentContext = currentContext;
|
_currentContext = currentContext;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_userAsymmetricKeysRepository = userAsymmetricKeysRepository;
|
_userAsymmetricKeysRepository = userAsymmetricKeysRepository;
|
||||||
|
_pushService = pushService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task RegenerateKeysAsync(UserAsymmetricKeys userAsymmetricKeys,
|
public async Task RegenerateKeysAsync(UserAsymmetricKeys userAsymmetricKeys,
|
||||||
@ -61,5 +65,7 @@ public class RegenerateUserAsymmetricKeysCommand : IRegenerateUserAsymmetricKeys
|
|||||||
_logger.LogInformation(
|
_logger.LogInformation(
|
||||||
"User's asymmetric keys regenerated. UserId: {userId} OrganizationMembership: {inOrganizations} DesignatedEmergencyAccess: {hasDesignatedEmergencyAccess} DeviceType: {deviceType}",
|
"User's asymmetric keys regenerated. UserId: {userId} OrganizationMembership: {inOrganizations} DesignatedEmergencyAccess: {hasDesignatedEmergencyAccess} DeviceType: {deviceType}",
|
||||||
userAsymmetricKeys.UserId, inOrganizations, hasDesignatedEmergencyAccess, _currentContext.DeviceType);
|
userAsymmetricKeys.UserId, inOrganizations, hasDesignatedEmergencyAccess, _currentContext.DeviceType);
|
||||||
|
|
||||||
|
await _pushService.PushSyncSettingsAsync(userId.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ using Bit.Core.Exceptions;
|
|||||||
using Bit.Core.KeyManagement.Commands;
|
using Bit.Core.KeyManagement.Commands;
|
||||||
using Bit.Core.KeyManagement.Models.Data;
|
using Bit.Core.KeyManagement.Models.Data;
|
||||||
using Bit.Core.KeyManagement.Repositories;
|
using Bit.Core.KeyManagement.Repositories;
|
||||||
|
using Bit.Core.Services;
|
||||||
using Bit.Test.Common.AutoFixture;
|
using Bit.Test.Common.AutoFixture;
|
||||||
using Bit.Test.Common.AutoFixture.Attributes;
|
using Bit.Test.Common.AutoFixture.Attributes;
|
||||||
using NSubstitute;
|
using NSubstitute;
|
||||||
@ -49,6 +50,9 @@ public class RegenerateUserAsymmetricKeysCommandTests
|
|||||||
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
||||||
.Received(1)
|
.Received(1)
|
||||||
.RegenerateUserAsymmetricKeysAsync(Arg.Is(userAsymmetricKeys));
|
.RegenerateUserAsymmetricKeysAsync(Arg.Is(userAsymmetricKeys));
|
||||||
|
await sutProvider.GetDependency<IPushNotificationService>()
|
||||||
|
.Received(1)
|
||||||
|
.PushSyncSettingsAsync(Arg.Is(userAsymmetricKeys.UserId));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
@ -88,6 +92,9 @@ public class RegenerateUserAsymmetricKeysCommandTests
|
|||||||
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
||||||
.ReceivedWithAnyArgs(0)
|
.ReceivedWithAnyArgs(0)
|
||||||
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
||||||
|
await sutProvider.GetDependency<IPushNotificationService>()
|
||||||
|
.ReceivedWithAnyArgs(0)
|
||||||
|
.PushSyncSettingsAsync(Arg.Any<Guid>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
@ -110,6 +117,9 @@ public class RegenerateUserAsymmetricKeysCommandTests
|
|||||||
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
||||||
.ReceivedWithAnyArgs(0)
|
.ReceivedWithAnyArgs(0)
|
||||||
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
||||||
|
await sutProvider.GetDependency<IPushNotificationService>()
|
||||||
|
.ReceivedWithAnyArgs(0)
|
||||||
|
.PushSyncSettingsAsync(Arg.Any<Guid>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
@ -134,6 +144,9 @@ public class RegenerateUserAsymmetricKeysCommandTests
|
|||||||
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
await sutProvider.GetDependency<IUserAsymmetricKeysRepository>()
|
||||||
.ReceivedWithAnyArgs(0)
|
.ReceivedWithAnyArgs(0)
|
||||||
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
.RegenerateUserAsymmetricKeysAsync(Arg.Any<UserAsymmetricKeys>());
|
||||||
|
await sutProvider.GetDependency<IPushNotificationService>()
|
||||||
|
.ReceivedWithAnyArgs(0)
|
||||||
|
.PushSyncSettingsAsync(Arg.Any<Guid>());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ICollection<OrganizationUser> CreateInOrganizationAccounts(Guid userId,
|
private static ICollection<OrganizationUser> CreateInOrganizationAccounts(Guid userId,
|
||||||
|
Loading…
Reference in New Issue
Block a user