mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-21 19:34:40 +08:00
Improving reCaptcha integration in comments
--HG-- branch : 1.x extra : rebase_source : 2eeed5864e36f28f721817565816e25589453d07
This commit is contained in:
@@ -27,6 +27,11 @@ namespace Orchard.AntiSpam.Drivers {
|
|||||||
protected override DriverResult Editor(ReCaptchaPart part, dynamic shapeHelper) {
|
protected override DriverResult Editor(ReCaptchaPart part, dynamic shapeHelper) {
|
||||||
return ContentShape("Parts_ReCaptcha_Fields", () => {
|
return ContentShape("Parts_ReCaptcha_Fields", () => {
|
||||||
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
||||||
|
|
||||||
|
if(settings.ByPassAuthenticated && _workContextAccessor.GetContext().CurrentUser != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var viewModel = new ReCaptchaPartEditViewModel {
|
var viewModel = new ReCaptchaPartEditViewModel {
|
||||||
PublicKey = settings.PublicKey
|
PublicKey = settings.PublicKey
|
||||||
};
|
};
|
||||||
@@ -37,10 +42,14 @@ namespace Orchard.AntiSpam.Drivers {
|
|||||||
|
|
||||||
protected override DriverResult Editor(ReCaptchaPart part, IUpdateModel updater, dynamic shapeHelper) {
|
protected override DriverResult Editor(ReCaptchaPart part, IUpdateModel updater, dynamic shapeHelper) {
|
||||||
|
|
||||||
|
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
||||||
|
if (settings.ByPassAuthenticated && _workContextAccessor.GetContext().CurrentUser != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var submitViewModel = new ReCaptchaPartSubmitViewModel();
|
var submitViewModel = new ReCaptchaPartSubmitViewModel();
|
||||||
|
|
||||||
if(updater.TryUpdateModel(submitViewModel, String.Empty, null, null)) {
|
if(updater.TryUpdateModel(submitViewModel, String.Empty, null, null)) {
|
||||||
var settings = part.TypePartDefinition.Settings.GetModel<ReCaptchaPartSettings>();
|
|
||||||
var context = _workContextAccessor.GetContext().HttpContext;
|
var context = _workContextAccessor.GetContext().HttpContext;
|
||||||
|
|
||||||
var result = ExecuteValidateRequest(
|
var result = ExecuteValidateRequest(
|
||||||
@@ -55,7 +64,6 @@ namespace Orchard.AntiSpam.Drivers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return Editor(part, shapeHelper);
|
return Editor(part, shapeHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<Placement>
|
<Placement>
|
||||||
<Place Parts_ReCaptcha_Fields="Content:10"/>
|
<Place Parts_ReCaptcha_Fields="Content:20"/>
|
||||||
<Match DisplayType="SummaryAdmin">
|
<Match DisplayType="SummaryAdmin">
|
||||||
<Place Parts_SpamFilter_Metadata_SummaryAdmin="Meta:2"/>
|
<Place Parts_SpamFilter_Metadata_SummaryAdmin="Meta:2"/>
|
||||||
</Match>
|
</Match>
|
||||||
|
@@ -2,5 +2,6 @@
|
|||||||
public class ReCaptchaPartSettings {
|
public class ReCaptchaPartSettings {
|
||||||
public string PublicKey { get; set; }
|
public string PublicKey { get; set; }
|
||||||
public string PrivateKey { get; set; }
|
public string PrivateKey { get; set; }
|
||||||
|
public bool ByPassAuthenticated { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.MetaData;
|
using Orchard.ContentManagement.MetaData;
|
||||||
using Orchard.ContentManagement.MetaData.Builders;
|
using Orchard.ContentManagement.MetaData.Builders;
|
||||||
@@ -30,6 +31,7 @@ namespace Orchard.AntiSpam.Settings {
|
|||||||
if (updateModel.TryUpdateModel(settings, "ReCaptchaPartSettings", null, null)) {
|
if (updateModel.TryUpdateModel(settings, "ReCaptchaPartSettings", null, null)) {
|
||||||
builder.WithSetting("ReCaptchaPartSettings.PublicKey", settings.PublicKey);
|
builder.WithSetting("ReCaptchaPartSettings.PublicKey", settings.PublicKey);
|
||||||
builder.WithSetting("ReCaptchaPartSettings.PrivateKey", settings.PrivateKey);
|
builder.WithSetting("ReCaptchaPartSettings.PrivateKey", settings.PrivateKey);
|
||||||
|
builder.WithSetting("ReCaptchaPartSettings.ByPassAuthenticated", settings.ByPassAuthenticated.ToString(CultureInfo.InvariantCulture));
|
||||||
}
|
}
|
||||||
|
|
||||||
yield return DefinitionTemplate(settings);
|
yield return DefinitionTemplate(settings);
|
||||||
|
@@ -16,3 +16,12 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@T("Get custom keys:") <a href="http://www.google.com/recaptcha">http://www.google.com/recaptcha</a>
|
@T("Get custom keys:") <a href="http://www.google.com/recaptcha">http://www.google.com/recaptcha</a>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<div>
|
||||||
|
@Html.EditorFor(m => m.ByPassAuthenticated, new { @class = "textMedium"})
|
||||||
|
<label class="forcheckbox" for="@Html.FieldIdFor( m => m.ByPassAuthenticated)">@T("Hide for authenticated users")</label>
|
||||||
|
<span class="hint">@T("Enable to hide reCaptcha when the user is authenticated.")</span>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
@@ -33,7 +33,6 @@ else {
|
|||||||
@Html.TextAreaFor(m => m.CommentText, new { rows = 10, cols = 30, @class = "comment-text" })
|
@Html.TextAreaFor(m => m.CommentText, new { rows = 10, cols = 30, @class = "comment-text" })
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
|
|
||||||
@Html.HiddenFor(m => m.CommentedOn)
|
@Html.HiddenFor(m => m.CommentedOn)
|
||||||
@Html.HiddenFor(m => m.RepliedOn)
|
@Html.HiddenFor(m => m.RepliedOn)
|
||||||
|
|
||||||
|
@@ -22,5 +22,7 @@ else {
|
|||||||
else {
|
else {
|
||||||
@Display(Model.EditorShape)
|
@Display(Model.EditorShape)
|
||||||
}
|
}
|
||||||
|
<button class="primaryAction" type="submit">@T("Submit Comment")</button>
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user