Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 64 additions & 63 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,65 +1,66 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Azure.Communication.Sms" Version="1.1.0-beta.2" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.Elm" Version="0.2.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.0-preview-25107-01" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
<PackageVersion Include="Moq" Version="4.20.72" />
<PackageVersion Include="NuGet.Protocol" Version="6.13.2" />
<PackageVersion Include="OrchardCore" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Admin" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Admin.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Application.Cms.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentLocalization" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentFields" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentManagement.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentTypes" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentTypes.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Contents.TagHelpers" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Data.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.DisplayManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Smtp" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Html" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Infrastructure.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Liquid.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Module.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Navigation.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ResourceManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Theme.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Themes" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCoreContrib.Abstractions" Version="1.5.0" />
<PackageVersion Include="OrchardCoreContrib.ContentLocalization.Core" Version="1.2.0" />
<PackageVersion Include="OrchardCoreContrib.DisplayManagement.Liquid" Version="1.0.0" />
<PackageVersion Include="OrchardCoreContrib.Data" Version="1.3.0" />
<PackageVersion Include="OrchardCoreContrib.Data.YesSql" Version="1.2.0" />
<PackageVersion Include="OrchardCoreContrib.Email" Version="1.6.0" />
<PackageVersion Include="OrchardCoreContrib.Garnet.Abstractions" Version="1.1.0" />
<PackageVersion Include="OrchardCoreContrib.HealthChecks.Abstractions" Version="1.3.0" />
<PackageVersion Include="OrchardCoreContrib.Infrastructure" Version="1.1.0" />
<PackageVersion Include="OrchardCoreContrib.Infrastructure.Abstractions" Version="2.5.0" />
<PackageVersion Include="OrchardCoreContrib.Localization" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Localization.Abstractions" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Navigation.Core" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Sms.Abstractions" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.OpenApi.Abstractions" Version="1.4.0" />
<PackageVersion Include="SendGrid" Version="9.29.3" />
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.5" />
<PackageVersion Include="StackExchange.Redis" Version="2.8.31" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="7.3.1" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="7.3.1" />
<PackageVersion Include="Testcontainers.Redis" Version="4.3.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" />
<PackageVersion Include="Yarp.ReverseProxy" Version="2.3.0" />
</ItemGroup>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Azure.Communication.Sms" Version="1.1.0-beta.2" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.Elm" Version="0.2.2" />
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="8.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.0-preview-25107-01" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
<PackageVersion Include="Moq" Version="4.20.72" />
<PackageVersion Include="NuGet.Protocol" Version="6.13.2" />
<PackageVersion Include="OrchardCore" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Admin" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Admin.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Application.Cms.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentLocalization" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentFields" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentManagement.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentTypes" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ContentTypes.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Contents.TagHelpers" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Data.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.DisplayManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Email.Smtp" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Html" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Infrastructure.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Liquid.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Module.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Navigation.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCore.ResourceManagement" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Theme.Targets" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Themes" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users.Abstractions" Version="2.2.0" />
<PackageVersion Include="OrchardCore.Users.Core" Version="2.2.0" />
<PackageVersion Include="OrchardCoreContrib.Abstractions" Version="1.5.0" />
<PackageVersion Include="OrchardCoreContrib.ContentLocalization.Core" Version="1.2.0" />
<PackageVersion Include="OrchardCoreContrib.DisplayManagement.Liquid" Version="1.0.0" />
<PackageVersion Include="OrchardCoreContrib.Data" Version="1.3.0" />
<PackageVersion Include="OrchardCoreContrib.Data.YesSql" Version="1.2.0" />
<PackageVersion Include="OrchardCoreContrib.Email" Version="1.6.0" />
<PackageVersion Include="OrchardCoreContrib.Garnet.Abstractions" Version="1.1.0" />
<PackageVersion Include="OrchardCoreContrib.HealthChecks.Abstractions" Version="1.3.0" />
<PackageVersion Include="OrchardCoreContrib.Infrastructure" Version="1.1.0" />
<PackageVersion Include="OrchardCoreContrib.Infrastructure.Abstractions" Version="2.5.0" />
<PackageVersion Include="OrchardCoreContrib.Localization" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Localization.Abstractions" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Navigation.Core" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.Sms.Abstractions" Version="1.4.0" />
<PackageVersion Include="OrchardCoreContrib.OpenApi.Abstractions" Version="1.4.0" />
<PackageVersion Include="SendGrid" Version="9.29.3" />
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.5" />
<PackageVersion Include="StackExchange.Redis" Version="2.8.31" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="7.3.1" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="7.3.1" />
<PackageVersion Include="Testcontainers.Redis" Version="4.3.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" />
<PackageVersion Include="Yarp.ReverseProxy" Version="2.3.0" />
</ItemGroup>
</Project>
18 changes: 16 additions & 2 deletions OrchardCoreContrib.Modules.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31912.275
# Visual Studio Version 18
VisualStudioVersion = 18.1.11312.151 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}"
EndProject
Expand Down Expand Up @@ -78,6 +78,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.UserGrou
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.UserGroups.Tests", "test\OrchardCoreContrib.UserGroups.Tests\OrchardCoreContrib.UserGroups.Tests.csproj", "{689A006D-0992-456E-86C9-66B7A2EE06A5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.CloudflareTurnstile", "src\OrchardCoreContrib.CloudflareTurnstile\OrchardCoreContrib.CloudflareTurnstile.csproj", "{1CF93DCB-2DF2-4E42-A37E-744F38D347C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.CloudflareTurnstile.Tests", "test\OrchardCoreContrib.CloudflareTurnstile.Tests\OrchardCoreContrib.CloudflareTurnstile.Tests.csproj", "{B2029246-BC23-4C18-B71A-55F13CB9E7AB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -204,6 +208,14 @@ Global
{689A006D-0992-456E-86C9-66B7A2EE06A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{689A006D-0992-456E-86C9-66B7A2EE06A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{689A006D-0992-456E-86C9-66B7A2EE06A5}.Release|Any CPU.Build.0 = Release|Any CPU
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5}.Release|Any CPU.Build.0 = Release|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -239,6 +251,8 @@ Global
{330877B1-7BE6-4B57-8714-2DADE1C53563} = {C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}
{C76B5687-3079-4E80-B7D2-B691F2B05A8A} = {C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}
{689A006D-0992-456E-86C9-66B7A2EE06A5} = {A239BFB0-9BA7-467C-AD41-405D0740633F}
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5} = {C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}
{B2029246-BC23-4C18-B71A-55F13CB9E7AB} = {A239BFB0-9BA7-467C-AD41-405D0740633F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {48F73B05-7D3D-4ACF-81AE-A98B2B4EFDB2}
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ The `OrchardCoreContrib.Modules` repository consists of the following modules:
| Name | Namespace | NuGet |
| --- | --- | --- |
| [Swagger Module](src/OrchardCoreContrib.Apis.Swagger/README.md) | `OrchardCoreContrib.Apis.Swagger` | [![NuGet](https://img.shields.io/nuget/v/OrchardCoreContrib.Apis.Swagger.svg)](https://www.nuget.org/packages/OrchardCoreContrib.Apis.Swagger) |
| [Cloudflare Turnstile Module](src/OrchardCoreContrib.CloudflareTurnstile/README.md) | `OrchardCoreContrib.CloudflareTurnstile` | [![NuGet](https://img.shields.io/nuget/v/OrchardCoreContrib.CloudflareTurnstile.svg)](https://www.nuget.org/packages/OrchardCoreContrib.CloudflareTurnstile) |
| [Content Localization Module](src/OrchardCoreContrib.ContentLocalization/README.md) | `OrchardCoreContrib.ContentLocalization` | [![NuGet](https://img.shields.io/nuget/v/OrchardCoreContrib.ContentLocalization.svg)](https://www.nuget.org/packages/OrchardCoreContrib.ContentLocalization) |
| [Content Preview Module](src/OrchardCoreContrib.ContentPreview/README.md) | `OrchardCoreContrib.ContentPreview` | [![NuGet](https://img.shields.io/nuget/v/OrchardCoreContrib.ContentPreview.svg)](https://www.nuget.org/packages/OrchardCoreContrib.ContentPreview) |
| [Content Permissions Module](src/OrchardCoreContrib.ContentPermissions/README.md) | `OrchardCoreContrib.Permissions` | [![NuGet](https://img.shields.io/nuget/v/OrchardCoreContrib.ContentPermissions.svg)](https://www.nuget.org/packages/OrchardCoreContrib.ContentPermissions) |
Expand Down
34 changes: 34 additions & 0 deletions src/OrchardCoreContrib.CloudflareTurnstile/AdminMenu.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Localization;
using OrchardCore.Navigation;
using OrchardCoreContrib.CloudflareTurnstile.Drivers;

namespace OrchardCoreContrib.CloudflareTurnstile;

using OrchardCoreContrib.Navigation;

public sealed class AdminMenu(IStringLocalizer<AdminMenu> S) : AdminNavigationProvider
{
private static readonly RouteValueDictionary _routeValues = new()
{
{ "area", "OrchardCore.Settings" },
{ "groupId", TurnstileSettingsDisplayDriver.GroupId },
};

public override void BuildNavigation(NavigationBuilder builder)
{
builder
.Add(S["Configuration"], configuration => configuration
.Add(S["Settings"], settings => settings
.Add(S["Security"], S["Security"].PrefixPosition(), security => security
.Add(S["Turnstile"], S["Turnstile"].PrefixPosition(), turnstile => turnstile
.Id("turnstile")
.Permission(TurnstilePermissions.ManageTurnstileSettings)
.Action("Index", "Admin", _routeValues)
.LocalNav()
)
)
)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace OrchardCoreContrib.CloudflareTurnstile.Configuration;

public class TurnstileOptions
{
public string SiteKey { get; set; }

public string SecretKey { get; set; }

public string Theme { get; set; }

public string Size { get; set; }
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using OrchardCore.Settings;
using OrchardCoreContrib.CloudflareTurnstile.Settings;

namespace OrchardCoreContrib.CloudflareTurnstile.Configuration;

public class TurnstileOptionsConfiguration(
ISiteService siteService,
IDataProtectionProvider dataProtectionProvider,
ILogger<TurnstileOptionsConfiguration> logger) : IConfigureOptions<TurnstileOptions>
{
public const string ProtectorName = "TurnstileSettingsConfiguration";

public void Configure(TurnstileOptions options)
{
var settings = siteService.GetSettings<TurnstileSettings>();

var protector = dataProtectionProvider.CreateProtector(ProtectorName);

if (!string.IsNullOrWhiteSpace(settings.SiteKey))
{
try
{
options.SiteKey = protector.Unprotect(settings.SiteKey);
}
catch
{
logger.LogError("The site key could not be decrypted. It may have been encrypted using a different key.");
}
}

if (!string.IsNullOrWhiteSpace(settings.SecretKey))
{
try
{
options.SecretKey = protector.Unprotect(settings.SecretKey);
}
catch
{
logger.LogError("The secret key could not be decrypted. It may have been encrypted using a different key.");
}
}

options.Theme = settings.Theme;
options.Size = settings.Size;
}
}
10 changes: 10 additions & 0 deletions src/OrchardCoreContrib.CloudflareTurnstile/Constants.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace OrchardCoreContrib.CloudflareTurnstile;

public static class Constants
{
public const string TurnstileScriptUri = "https://challenges.cloudflare.com/turnstile/v0/api.js";

public const string TurnstileApiUri = "https://challenges.cloudflare.com/turnstile/v0/api/";

public const string TurnstileServerResponseHeaderName = "cf-turnstile-response";
}
Loading
Loading