1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-02 00:22:50 -05:00

Rotate send.key with account encryption key

This commit is contained in:
Thomas Rittson
2021-06-28 16:34:22 +10:00
parent 98415026b7
commit fbf5633040
7 changed files with 149 additions and 11 deletions

View File

@ -33,6 +33,8 @@ namespace Bit.Api.Controllers
private readonly IPaymentService _paymentService;
private readonly IUserRepository _userRepository;
private readonly IUserService _userService;
private readonly ISendRepository _sendRepository;
private readonly ISendService _sendService;
public AccountsController(
GlobalSettings globalSettings,
@ -43,7 +45,9 @@ namespace Bit.Api.Controllers
IPaymentService paymentService,
ISsoUserRepository ssoUserRepository,
IUserRepository userRepository,
IUserService userService)
IUserService userService,
ISendRepository sendRepository,
ISendService sendService)
{
_cipherRepository = cipherRepository;
_folderRepository = folderRepository;
@ -53,6 +57,8 @@ namespace Bit.Api.Controllers
_paymentService = paymentService;
_userRepository = userRepository;
_userService = userService;
_sendRepository = sendRepository;
_sendService = sendService;
}
[HttpPost("prelogin")]
@ -301,13 +307,28 @@ namespace Bit.Api.Controllers
}
}
var sends = new List<Send>();
if (model.Sends?.Count() > 0)
{
var existingSends = await _sendRepository.GetManyByUserIdAsync(user.Id);
var sendsDict = model.Sends?.ToDictionary(s => s.Id);
if (existingSends.Any() && sendsDict != null)
{
foreach (var send in existingSends.Where(s => sendsDict.ContainsKey(s.Id)))
{
sends.Add(sendsDict[send.Id].ToSend(send, _sendService));
}
}
}
var result = await _userService.UpdateKeyAsync(
user,
model.MasterPasswordHash,
model.Key,
model.PrivateKey,
ciphers,
folders);
folders,
sends);
if (result.Succeeded)
{