public async Task <IActionResult> Post([FromBody] ChangePasswordModel model) { // Validate the request if (model == null) { _logger.LogWarning("Null model"); return(BadRequest(ApiResult.InvalidRequest())); } if (model.NewPassword != model.NewPasswordVerify) { _logger.LogWarning("Invalid model, passwords don't match"); return(BadRequest(ApiResult.InvalidRequest())); } // Validate the model if (ModelState.IsValid == false) { _logger.LogWarning("Invalid model, validation failed"); return(BadRequest(ApiResult.FromModelStateErrors(ModelState))); } // Validate the Captcha try { if (await ValidateRecaptcha(model.Recaptcha).ConfigureAwait(false) == false) { throw new InvalidOperationException("Invalid Recaptcha response"); } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception ex) #pragma warning restore CA1031 // Do not catch general exception types { _logger.LogWarning(ex, "Invalid Recaptcha"); return(BadRequest(ApiResult.InvalidCaptcha())); } var result = new ApiResult(); try { if (_options.MinimumDistance > 0 && _passwordChangeProvider.MeasureNewPasswordDistance(model.CurrentPassword, model.NewPassword) < _options.MinimumDistance) { result.Errors.Add(new ApiErrorItem(ApiErrorCode.MinimumDistance)); return(BadRequest(result)); } if (_options.MinimumScore > 0 && Core.EvaluatePassword(model.NewPassword).Score < _options.MinimumScore) { result.Errors.Add(new ApiErrorItem(ApiErrorCode.MinimumScore)); return(BadRequest(result)); } var resultPasswordChange = _passwordChangeProvider.PerformPasswordChange( model.Username, model.CurrentPassword, model.NewPassword); if (resultPasswordChange == null) { return(Json(result)); } result.Errors.Add(resultPasswordChange); } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception ex) #pragma warning restore CA1031 // Do not catch general exception types { _logger.LogError(ex, "Failed to update password"); result.Errors.Add(new ApiErrorItem(ApiErrorCode.Generic, ex.Message)); } return(BadRequest(result)); }
private void BtnStartSync_Click(object sender, RoutedEventArgs e) { _logger.Information("Test DI " + _options.BackDateSchedule + " " + _passwordChangeProvider.MeasureNewPasswordDistance("abc", "cbs")); }