1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-29 15:24:51 -05:00

Update APIs to collect other set password info (#870)

This commit is contained in:
Kyle Spearrin 2020-08-17 10:40:35 -04:00 committed by GitHub
parent af85e17486
commit d190c4bd0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 6 deletions

View File

@ -197,7 +197,7 @@ namespace Bit.Api.Controllers
} }
[HttpPost("set-password")] [HttpPost("set-password")]
public async Task SetPasswordAsync([FromBody]SetPasswordRequestModel model) public async Task PostSetPasswordAsync([FromBody]SetPasswordRequestModel model)
{ {
var user = await _userService.GetUserByPrincipalAsync(User); var user = await _userService.GetUserByPrincipalAsync(User);
if (user == null) if (user == null)
@ -205,7 +205,7 @@ namespace Bit.Api.Controllers
throw new UnauthorizedAccessException(); throw new UnauthorizedAccessException();
} }
var result = await _userService.SetPasswordAsync(user, model.NewMasterPasswordHash, model.Key); var result = await _userService.SetPasswordAsync(model.ToUser(user), model.MasterPasswordHash, model.Key);
if (result.Succeeded) if (result.Succeeded)
{ {
return; return;

View File

@ -1,4 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Bit.Core.Enums;
using Bit.Core.Models.Table;
namespace Bit.Core.Models.Api.Request.Accounts namespace Bit.Core.Models.Api.Request.Accounts
{ {
@ -6,8 +8,26 @@ namespace Bit.Core.Models.Api.Request.Accounts
{ {
[Required] [Required]
[StringLength(300)] [StringLength(300)]
public string NewMasterPasswordHash { get; set; } public string MasterPasswordHash { get; set; }
[Required] [Required]
public string Key { get; set; } public string Key { get; set; }
[StringLength(50)]
public string MasterPasswordHint { get; set; }
[Required]
public KeysRequestModel Keys { get; set; }
[Required]
public KdfType Kdf { get; set; }
[Required]
public int KdfIterations { get; set; }
public User ToUser(User existingUser)
{
existingUser.MasterPasswordHint = MasterPasswordHint;
existingUser.Kdf = Kdf;
existingUser.KdfIterations = KdfIterations;
existingUser.Key = Key;
Keys.ToUser(existingUser);
return existingUser;
}
} }
} }

View File

@ -579,7 +579,7 @@ namespace Bit.Core.Services
return IdentityResult.Failed(_identityErrorDescriber.PasswordMismatch()); return IdentityResult.Failed(_identityErrorDescriber.PasswordMismatch());
} }
public async Task<IdentityResult> SetPasswordAsync(User user, string newMasterPassword, string key) public async Task<IdentityResult> SetPasswordAsync(User user, string masterPassword, string key)
{ {
if (user == null) if (user == null)
{ {
@ -592,7 +592,7 @@ namespace Bit.Core.Services
return IdentityResult.Failed(_identityErrorDescriber.UserAlreadyHasPassword()); return IdentityResult.Failed(_identityErrorDescriber.UserAlreadyHasPassword());
} }
var result = await UpdatePasswordHash(user, newMasterPassword); var result = await UpdatePasswordHash(user, masterPassword);
if (!result.Succeeded) if (!result.Succeeded)
{ {
return result; return result;