public async Task <ChangePasswordResultView> ChangePasswordByTokenAsync(MemberChangePasswordByTokenView model) { if (_isDemo) { throw new CoralTimeForbiddenException($"Password can't be changed on demo site"); } var userForgotPassRequest = Uow.UserForgotPassRequestRepository.GetRequest(model.Token); if (userForgotPassRequest == null) { return(new ChangePasswordResultView { IsChangedPassword = false, Message = (int)Constants.Errors.InvalidToken }); } var user = await _userManager.FindByEmailAsync(userForgotPassRequest.Email); if (user == null) { return(new ChangePasswordResultView { IsChangedPassword = false, Message = (int)Constants.Errors.EmailDoesntExist }); } var result = await _userManager.ResetPasswordAsync(user, userForgotPassRequest.RefreshToken, model.NewPassword); if (result.Succeeded) { var tokenToDeleteIds = Uow.UserForgotPassRequestRepository.GetQueryWithIncludes() .Where(x => x.Email == userForgotPassRequest.Email) .Select(y => y.Id) .ToList(); tokenToDeleteIds.ForEach(id => Uow.UserForgotPassRequestRepository.Delete(id)); Uow.Save(); return(new ChangePasswordResultView { IsChangedPassword = true, Message = (int)Constants.Errors.None }); } var errors = string.Empty; foreach (var error in result.Errors) { errors += $"{error.Description} "; } var errorResult = (int)((errors.Contains("token")) ? Constants.Errors.InvalidToken : Constants.Errors.ErrorPassword); return(new ChangePasswordResultView { IsChangedPassword = false, Message = errorResult }); }
public async Task <IActionResult> ChangePasswordByTokenAsync([FromBody] MemberChangePasswordByTokenView model) { var serverUrl = GetBaseUrl(); try { var result = await _service.ChangePasswordByTokenAsync(model); return(new JsonResult(result)); } catch (Exception e) { _logger.LogWarning($"ChangePasswordByTokenAsync method with parameters ({JsonConvert.SerializeObject(model)});\n {e}"); var errors = ExceptionsChecker.CheckMembersException(e); return(BadRequest(errors)); } }
public async Task <IActionResult> ChangePasswordByTokenAsync([FromBody] MemberChangePasswordByTokenView model) { var result = await _service.ChangePasswordByTokenAsync(model); return(new JsonResult(result)); }