diff --git a/src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs b/src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs index 752f1ce0d..54b604bc9 100644 --- a/src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs @@ -12,17 +12,21 @@ using Orchard.Localization; using Orchard.Logging; using Orchard.UI.Admin; using Orchard.UI.Notify; +using Orchard.Services; namespace Orchard.AntiSpam.Drivers { public class ReCaptchaPartDriver : ContentPartDriver { private readonly INotifier _notifier; + private readonly IJsonConverter _jsonConverter; private readonly IWorkContextAccessor _workContextAccessor; private const string ReCaptchaSecureUrl = "https://www.google.com/recaptcha/api/siteverify"; public ReCaptchaPartDriver( INotifier notifier, + IJsonConverter jsonConverter, IWorkContextAccessor workContextAccessor) { _notifier = notifier; + _jsonConverter = jsonConverter; _workContextAccessor = workContextAccessor; T = NullLocalizer.Instance; Logger = NullLogger.Instance; @@ -75,16 +79,16 @@ namespace Orchard.AntiSpam.Drivers { context.Request.Form["g-recaptcha-response"] ); - ReCaptchaPartResponseModel responseModel = Newtonsoft.Json.JsonConvert.DeserializeObject(result); + ReCaptchaPartResponseModel responseModel = _jsonConverter.Deserialize(result); - if (!responseModel.success) { - for (int i = 0; i < responseModel.errorMessage.Length; i++) { - if (responseModel.errorMessage[i] == "missing-input-response") { + if (!responseModel.Success) { + for (int i = 0; i < responseModel.ErrorCodes.Length; i++) { + if (responseModel.ErrorCodes[i] == "missing-input-response") { _notifier.Error(T("The Captcha field is required")); } else { _notifier.Error(T("There was an error with the Captcha please try again")); - Logger.Information("Error occurred while submitting a reCaptcha: " + responseModel.errorMessage[i]); + Logger.Information("Error occurred while submitting a reCaptcha: " + responseModel.ErrorCodes[i]); } } } diff --git a/src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs index 8a55d7519..623d71477 100644 --- a/src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs @@ -6,9 +6,10 @@ namespace Orchard.AntiSpam.ViewModels { } public class ReCaptchaPartResponseModel { - public bool success { get; set; } + [JsonProperty("success")] + public string Success { get; set; } [JsonProperty("error-codes")] - public string[] errorMessage { get; set; } + public string[] ErrorCodes { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml b/src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml index 6d7ab4a1f..ece5a5685 100644 --- a/src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml +++ b/src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml @@ -3,7 +3,7 @@ @{ var publicKey = (string)Model.PublicKey; } -@if (!String.IsNullOrWhiteSpace(publicKey)) { +@if (!HasText(publicKey)) {
diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/ReCaptchaValidator.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/ReCaptchaValidator.cs index 1d276ab06..8862f0c4d 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/ReCaptchaValidator.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/ReCaptchaValidator.cs @@ -43,9 +43,9 @@ namespace Orchard.DynamicForms.Validators { ReCaptchaElementResponseModel responseModel = Newtonsoft.Json.JsonConvert.DeserializeObject(result); - if (!responseModel.success) { - for (int i = 0; i < responseModel.errorMessage.Length; i++) { - if (responseModel.errorMessage[i] == "missing-input-response") { + if (!responseModel.Success) { + for (int i = 0; i < responseModel.ErrorCodes.Length; i++) { + if (responseModel.ErrorCodes[i] == "missing-input-response") { var validationSettings = element.ValidationSettings; var validationMessage = validationSettings.CustomValidationMessage.WithDefault("The Captcha field is required"); context.ModelState.AddModelError("g-recaptcha-response", T(validationMessage).Text); @@ -54,7 +54,7 @@ namespace Orchard.DynamicForms.Validators { var validationSettings = element.ValidationSettings; var validationMessage = validationSettings.CustomValidationMessage.WithDefault("There was an error with the Captcha please try again"); context.ModelState.AddModelError("g-recaptcha-response", T(validationMessage).Text); - Logger.Information("Error occurred while submitting a reCaptcha: " + responseModel.errorMessage[i]); + Logger.Information("Error occurred while submitting a reCaptcha: " + responseModel.ErrorCodes[i]); } } } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ViewModels/ReCaptchaElementViewModel.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ViewModels/ReCaptchaElementViewModel.cs index 9dd36fafa..6b3e86625 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ViewModels/ReCaptchaElementViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ViewModels/ReCaptchaElementViewModel.cs @@ -1,11 +1,11 @@ using Newtonsoft.Json; -namespace Orchard.DynamicForms.ViewModels -{ +namespace Orchard.DynamicForms.ViewModels { public class ReCaptchaElementResponseModel { - public bool success { get; set; } + [JsonProperty("success")] + public bool Success { get; set; } [JsonProperty("error-codes")] - public string[] errorMessage { get; set; } + public string[] ErrorCodes { get; set; } } } \ No newline at end of file