mirror of
https://github.com/bitwarden/server
synced 2025-12-22 03:03:33 +00:00
Fix DI
This commit is contained in:
@@ -1,13 +1,9 @@
|
|||||||
using Bit.Core.KeyManagement.Models.Api.Request;
|
using Bit.Core.KeyManagement.Models.Api.Request;
|
||||||
using Bit.Core.KeyManagement.Repositories;
|
|
||||||
using Bit.Core.Repositories;
|
|
||||||
|
|
||||||
namespace Bit.Core.KeyManagement.Commands.Interfaces;
|
namespace Bit.Core.KeyManagement.Commands.Interfaces;
|
||||||
|
|
||||||
public interface ISetAccountKeysForUserCommand
|
public interface ISetAccountKeysForUserCommand
|
||||||
{
|
{
|
||||||
Task SetAccountKeysForUserAsync(Guid userId,
|
Task SetAccountKeysForUserAsync(Guid userId,
|
||||||
AccountKeysRequestModel accountKeys,
|
AccountKeysRequestModel accountKeys);
|
||||||
IUserRepository userRepository,
|
|
||||||
IUserSignatureKeyPairRepository userSignatureKeyPairRepository);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,19 @@ namespace Bit.Core.KeyManagement.Commands;
|
|||||||
|
|
||||||
public class SetAccountKeysForUserCommand : ISetAccountKeysForUserCommand
|
public class SetAccountKeysForUserCommand : ISetAccountKeysForUserCommand
|
||||||
{
|
{
|
||||||
public async Task SetAccountKeysForUserAsync(Guid userId, AccountKeysRequestModel accountKeys, IUserRepository userRepository, IUserSignatureKeyPairRepository userSignatureKeyPairRepository)
|
private readonly IUserRepository _userRepository;
|
||||||
|
private readonly IUserSignatureKeyPairRepository _userSignatureKeyPairRepository;
|
||||||
|
public SetAccountKeysForUserCommand(
|
||||||
|
IUserRepository userRepository,
|
||||||
|
IUserSignatureKeyPairRepository userSignatureKeyPairRepository)
|
||||||
{
|
{
|
||||||
var user = await userRepository.GetByIdAsync(userId);
|
_userRepository = userRepository;
|
||||||
|
_userSignatureKeyPairRepository = userSignatureKeyPairRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetAccountKeysForUserAsync(Guid userId, AccountKeysRequestModel accountKeys)
|
||||||
|
{
|
||||||
|
var user = await _userRepository.GetByIdAsync(userId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException("User not found", nameof(userId));
|
throw new ArgumentException("User not found", nameof(userId));
|
||||||
@@ -29,7 +39,7 @@ public class SetAccountKeysForUserCommand : ISetAccountKeysForUserCommand
|
|||||||
user.SignedPublicKey = accountKeysData.PublicKeyEncryptionKeyPairData.SignedPublicKey;
|
user.SignedPublicKey = accountKeysData.PublicKeyEncryptionKeyPairData.SignedPublicKey;
|
||||||
user.SecurityState = accountKeysData.SecurityStateData.SecurityState;
|
user.SecurityState = accountKeysData.SecurityStateData.SecurityState;
|
||||||
user.SecurityVersion = accountKeysData.SecurityStateData.SecurityVersion;
|
user.SecurityVersion = accountKeysData.SecurityStateData.SecurityVersion;
|
||||||
await userSignatureKeyPairRepository.UpsertAsync(new UserSignatureKeyPair
|
await _userSignatureKeyPairRepository.UpsertAsync(new UserSignatureKeyPair
|
||||||
{
|
{
|
||||||
Id = CoreHelpers.GenerateComb(),
|
Id = CoreHelpers.GenerateComb(),
|
||||||
UserId = userId,
|
UserId = userId,
|
||||||
@@ -40,6 +50,6 @@ public class SetAccountKeysForUserCommand : ISetAccountKeysForUserCommand
|
|||||||
RevisionDate = DateTime.UtcNow,
|
RevisionDate = DateTime.UtcNow,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
await userRepository.ReplaceAsync(user);
|
await _userRepository.ReplaceAsync(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public static class KeyManagementServiceCollectionExtensions
|
|||||||
{
|
{
|
||||||
services.AddScoped<IRegenerateUserAsymmetricKeysCommand, RegenerateUserAsymmetricKeysCommand>();
|
services.AddScoped<IRegenerateUserAsymmetricKeysCommand, RegenerateUserAsymmetricKeysCommand>();
|
||||||
services.AddScoped<IChangeKdfCommand, ChangeKdfCommand>();
|
services.AddScoped<IChangeKdfCommand, ChangeKdfCommand>();
|
||||||
|
services.AddScoped<ISetAccountKeysForUserCommand, SetAccountKeysForUserCommand>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddKeyManagementQueries(this IServiceCollection services)
|
private static void AddKeyManagementQueries(this IServiceCollection services)
|
||||||
|
|||||||
@@ -20,16 +20,14 @@ public class SetAccountKeysForUserCommandTests
|
|||||||
Guid userId,
|
Guid userId,
|
||||||
AccountKeysRequestModel accountKeys)
|
AccountKeysRequestModel accountKeys)
|
||||||
{
|
{
|
||||||
var command = new SetAccountKeysForUserCommand();
|
|
||||||
var userRepository = Substitute.For<IUserRepository>();
|
var userRepository = Substitute.For<IUserRepository>();
|
||||||
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
||||||
|
var command = new SetAccountKeysForUserCommand(userRepository, userSignatureKeyPairRepository);
|
||||||
|
|
||||||
userRepository.GetByIdAsync(userId).ReturnsNullForAnyArgs();
|
userRepository.GetByIdAsync(userId).ReturnsNullForAnyArgs();
|
||||||
|
|
||||||
var exception = await Assert.ThrowsAsync<ArgumentException>(() =>
|
var exception = await Assert.ThrowsAsync<ArgumentException>(() =>
|
||||||
command.SetAccountKeysForUserAsync(userId, accountKeys,
|
command.SetAccountKeysForUserAsync(userId, accountKeys));
|
||||||
userRepository,
|
|
||||||
userSignatureKeyPairRepository));
|
|
||||||
|
|
||||||
Assert.Equal("userId", exception.ParamName);
|
Assert.Equal("userId", exception.ParamName);
|
||||||
Assert.Contains("User not found", exception.Message);
|
Assert.Contains("User not found", exception.Message);
|
||||||
@@ -50,15 +48,13 @@ public class SetAccountKeysForUserCommandTests
|
|||||||
user.SecurityState = null;
|
user.SecurityState = null;
|
||||||
user.SecurityVersion = null;
|
user.SecurityVersion = null;
|
||||||
|
|
||||||
var command = new SetAccountKeysForUserCommand();
|
|
||||||
var userRepository = Substitute.For<IUserRepository>();
|
var userRepository = Substitute.For<IUserRepository>();
|
||||||
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
||||||
|
var command = new SetAccountKeysForUserCommand(userRepository, userSignatureKeyPairRepository);
|
||||||
|
|
||||||
userRepository.GetByIdAsync(user.Id).Returns(user);
|
userRepository.GetByIdAsync(user.Id).Returns(user);
|
||||||
|
|
||||||
await command.SetAccountKeysForUserAsync(user.Id, accountKeys,
|
await command.SetAccountKeysForUserAsync(user.Id, accountKeys);
|
||||||
userRepository,
|
|
||||||
userSignatureKeyPairRepository);
|
|
||||||
|
|
||||||
Assert.Equal(accountKeys.UserKeyEncryptedAccountPrivateKey, user.PrivateKey);
|
Assert.Equal(accountKeys.UserKeyEncryptedAccountPrivateKey, user.PrivateKey);
|
||||||
Assert.Equal(accountKeys.AccountPublicKey, user.PublicKey);
|
Assert.Equal(accountKeys.AccountPublicKey, user.PublicKey);
|
||||||
@@ -109,15 +105,13 @@ public class SetAccountKeysForUserCommandTests
|
|||||||
SecurityState = securityState
|
SecurityState = securityState
|
||||||
};
|
};
|
||||||
|
|
||||||
var command = new SetAccountKeysForUserCommand();
|
|
||||||
var userRepository = Substitute.For<IUserRepository>();
|
var userRepository = Substitute.For<IUserRepository>();
|
||||||
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
var userSignatureKeyPairRepository = Substitute.For<IUserSignatureKeyPairRepository>();
|
||||||
|
var command = new SetAccountKeysForUserCommand(userRepository, userSignatureKeyPairRepository);
|
||||||
|
|
||||||
userRepository.GetByIdAsync(user.Id).Returns(user);
|
userRepository.GetByIdAsync(user.Id).Returns(user);
|
||||||
|
|
||||||
await command.SetAccountKeysForUserAsync(user.Id, accountKeys,
|
await command.SetAccountKeysForUserAsync(user.Id, accountKeys);
|
||||||
userRepository,
|
|
||||||
userSignatureKeyPairRepository);
|
|
||||||
|
|
||||||
Assert.Equal(publicKeyEncryptionKeyPair.WrappedPrivateKey, user.PrivateKey);
|
Assert.Equal(publicKeyEncryptionKeyPair.WrappedPrivateKey, user.PrivateKey);
|
||||||
Assert.Equal(publicKeyEncryptionKeyPair.PublicKey, user.PublicKey);
|
Assert.Equal(publicKeyEncryptionKeyPair.PublicKey, user.PublicKey);
|
||||||
|
|||||||
Reference in New Issue
Block a user