/// <summary> /// 重置安全问题 /// </summary> /// <param name="param"></param> /// <returns></returns> public async Task <Result> ResetSecurityQuestionAsync(ResetSecurityQuestion param) { /* * 1,校验密码、原安全问题答案、新问题数据 * 2,更新user-question记录 * 3,日志记录 * **/ var result = new Result(); var userExist = masterContext.Users.Any(a => !a.IsDisabled && a.ID == currentUser.UserID && a.Password == param.Password); if (!userExist) { result.Code = "SSO.Global.Error.Content..13"; result.Msg = "密码错误"; return(result); } var oldQuestioin = masterContext.UserSecurityQuestions.FirstOrDefault(a => a.UserID == currentUser.UserID && a.QuestionID == param.OldSecurityQuestionID && a.Answer == param.OldSecurityQuestionAnswer); if (oldQuestioin == null) { result.Code = "SSO.Global.Error.Content..11"; result.Msg = "原安全问题错误"; return(result); } var question = await GetFirstOrDefaultAsync(a => !a.IsDisabled && a.ID == param.SecurityQuestionID, fromMasterDb : true); if (question == null) { result.Code = "SSO.Global.Error.Content..11"; result.Msg = "未知的问题选项"; return(result); } var utcNow = DateTime.UtcNow; oldQuestioin.QuestionID = param.SecurityQuestionID; oldQuestioin.Answer = param.Answer; oldQuestioin.ModifyTime = utcNow; var saveResult = await masterContext.SaveChangesAsync() > 0; //todo:异步日志记录 return(new Result() { IsSuccess = saveResult, Msg = saveResult ? null : "保存失败" }); }
public async Task <ActionResult <Result> > ResetSecurityQuestionAsync(ResetSecurityQuestion param) { return(await _questionService.ResetSecurityQuestionAsync(param)); }