From eea2ae30b46ea4654a5fbd2fa79c723cfe44bcfe Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Sat, 24 Jun 2017 17:16:05 -0400 Subject: [PATCH] get recovery code api --- src/Api/Controllers/TwoFactorController.cs | 10 ++++++++- .../TwoFactorRecoverResponseModel.cs | 21 +++++++++++++++++++ .../2017-06-19_00_UserTwoFactorEnabled.sql | 3 +++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/Core/Models/Api/Response/TwoFactor/TwoFactorRecoverResponseModel.cs diff --git a/src/Api/Controllers/TwoFactorController.cs b/src/Api/Controllers/TwoFactorController.cs index 08cd3d512f..7d22687e1c 100644 --- a/src/Api/Controllers/TwoFactorController.cs +++ b/src/Api/Controllers/TwoFactorController.cs @@ -253,9 +253,17 @@ namespace Bit.Api.Controllers return response; } + [HttpPost("get-recover")] + public async Task GetRecover([FromBody]TwoFactorRequestModel model) + { + var user = await CheckPasswordAsync(model.MasterPasswordHash); + var response = new TwoFactorRecoverResponseModel(user); + return response; + } + [HttpPost("recover")] [AllowAnonymous] - public async Task PostTwoFactorRecover([FromBody]TwoFactorRecoveryRequestModel model) + public async Task PostRecover([FromBody]TwoFactorRecoveryRequestModel model) { if(!await _userService.RecoverTwoFactorAsync(model.Email, model.MasterPasswordHash, model.RecoveryCode)) { diff --git a/src/Core/Models/Api/Response/TwoFactor/TwoFactorRecoverResponseModel.cs b/src/Core/Models/Api/Response/TwoFactor/TwoFactorRecoverResponseModel.cs new file mode 100644 index 0000000000..2c175fc539 --- /dev/null +++ b/src/Core/Models/Api/Response/TwoFactor/TwoFactorRecoverResponseModel.cs @@ -0,0 +1,21 @@ +using System; +using Bit.Core.Models.Table; + +namespace Bit.Core.Models.Api +{ + public class TwoFactorRecoverResponseModel : ResponseModel + { + public TwoFactorRecoverResponseModel(User user) + : base("twoFactorRecover") + { + if(user == null) + { + throw new ArgumentNullException(nameof(user)); + } + + Code = user.TwoFactorRecoveryCode; + } + + public string Code { get; set; } + } +} diff --git a/util/SqlUpdate/2017-06-19_00_UserTwoFactorEnabled.sql b/util/SqlUpdate/2017-06-19_00_UserTwoFactorEnabled.sql index db872c8b2b..c891470271 100644 --- a/util/SqlUpdate/2017-06-19_00_UserTwoFactorEnabled.sql +++ b/util/SqlUpdate/2017-06-19_00_UserTwoFactorEnabled.sql @@ -1,6 +1,9 @@ alter table [user] drop column twofactorenabled go +alter table [user] drop column [twofactorprovider] +go + drop view [dbo].[UserView] go