Surevelox.OrchardCore.Licensing
1.6.0-rc-20230603.1
See the version list below for details.
dotnet add package Surevelox.OrchardCore.Licensing --version 1.6.0-rc-20230603.1
NuGet\Install-Package Surevelox.OrchardCore.Licensing -Version 1.6.0-rc-20230603.1
<PackageReference Include="Surevelox.OrchardCore.Licensing" Version="1.6.0-rc-20230603.1" />
paket add Surevelox.OrchardCore.Licensing --version 1.6.0-rc-20230603.1
#r "nuget: Surevelox.OrchardCore.Licensing, 1.6.0-rc-20230603.1"
// Install Surevelox.OrchardCore.Licensing as a Cake Addin #addin nuget:?package=Surevelox.OrchardCore.Licensing&version=1.6.0-rc-20230603.1&prerelease // Install Surevelox.OrchardCore.Licensing as a Cake Tool #tool nuget:?package=Surevelox.OrchardCore.Licensing&version=1.6.0-rc-20230603.1&prerelease
Licensing - Surevelox.OrchardCore.Licensing
The Licensing module for Orchard Core CMS.
For Orchard Core module consumers
Manage all your module/feature license keys for module orchard core module that you purchased from orchard core module vendor.
For Module vendors
Build your module with license and let your customer use this module to manage their licenses for your module.
Key Features
Features
- Manage License keys using Admin Panel
- Provides API to module vendor to implement license in their own module.
Install
Add Surevelox.OrchardCore.Licensing
to your Orchard Core Web project
dotnet add package Surevelox.OrchardCore.Licensing
Enable Feature using recipe
Include in Setup Recipe to enable the feature by default.
"steps": [
{
"name": "feature",
"enable": [
"Surevelox.OrchardCore.Licensing"
]
}
]
License management
Add Licensing support in your module
1. Implement ILicenseHandler
Implement CanHandle
and Handle
method, this method is called when user adds license key in Admin UI.
internal class LicenseHandler : ILicenseHandler
{
public bool CanHandle(string licenseKey)
{
return true;
}
public void Handle(LicenseValidationContext context,
out LicenseStatus? status, out string id, out DateTime? issuedUtc, out DateTime? expiresUtc,
out Dictionary<string, object> policies)
{
var key = context.LicenseKey;
// Add your own logic to see if the license key is belong to your module
// For example using microsoft standard licensing
LicenseManager.CurrentContext = context;
var license = LicenseManager.Validate(typeof(MyLicensedClass));
var canhandle = (license != null);
if (canhandle)
{
// get the license and polices from encrypted license file
status = LicenseStatus.Valid;
// Read from your license
issuedUtc = license.IssuedOn;
// Read from your license
expiredUtc = license.ExpiresOn;
// add your feature list
features = policies["features"];
id = "lic/my-product/" + license.Id;
}
else
{
// If key is unknown to this validator
id = null;
status = null;
createdUtc = null;
expiredUtc = null;
features = new string[] { };
}
}
}
2. Register ILicenseHandler
in startup
services.AddOrchardCms()
.ConfigureServices( svc=>
{
svc.AddScoped<ILicenseHandler, LicenseHandler>();
});
Documentation
Read the documentation here
Feedback
See the open issues for a list of proposed features and known issues.
Like? Support Us.
Like the the module? Support us by sponsoring Surevelox @ Github.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- OrchardCore.Admin.Abstractions (>= 1.6.0 && < 1.7.0)
- OrchardCore.DisplayManagement (>= 1.6.0 && < 1.7.0)
- OrchardCore.Module.Targets (>= 1.6.0 && < 1.7.0)
- OrchardCore.Navigation.Core (>= 1.6.0 && < 1.7.0)
- OrchardCore.Recipes.Abstractions (>= 1.6.0 && < 1.7.0)
- OrchardCore.ResourceManagement (>= 1.6.0 && < 1.7.0)
- Portable.BouncyCastle (>= 1.9.0)
- Surevelox.OrchardCore.Display (>= 1.6.0-rc-20230603.1)
- Surevelox.OrchardCore.Licensing.Core (>= 1.6.0-rc-20230603.1)
-
net7.0
- OrchardCore.Admin.Abstractions (>= 1.6.0 && < 1.7.0)
- OrchardCore.DisplayManagement (>= 1.6.0 && < 1.7.0)
- OrchardCore.Module.Targets (>= 1.6.0 && < 1.7.0)
- OrchardCore.Navigation.Core (>= 1.6.0 && < 1.7.0)
- OrchardCore.Recipes.Abstractions (>= 1.6.0 && < 1.7.0)
- OrchardCore.ResourceManagement (>= 1.6.0 && < 1.7.0)
- Portable.BouncyCastle (>= 1.9.0)
- Surevelox.OrchardCore.Display (>= 1.6.0-rc-20230603.1)
- Surevelox.OrchardCore.Licensing.Core (>= 1.6.0-rc-20230603.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.7.0-rc-20230910.6 | 327 | 9/11/2023 |
1.6.0-rc-20230603.1 | 326 | 6/3/2023 |
1.6.0-rc-20230427.2 | 155 | 4/27/2023 |
1.5.0-rc-20230602.2 | 86 | 6/3/2023 |
1.5.0-rc-20230206.3 | 270 | 2/6/2023 |
1.5.0-rc-20230120.2 | 156 | 1/20/2023 |
1.5.0-rc-20230116.2 | 115 | 1/17/2023 |
1.5.0-rc-20221117.6 | 208 | 11/17/2022 |
1.4.0-rc-20230602.1 | 98 | 6/3/2023 |
1.4.0-rc-20221117.7 | 112 | 11/17/2022 |
1.3.0-rc-20230601.1 | 90 | 6/3/2023 |
1.3.0-rc-20221117.8 | 109 | 11/17/2022 |
1.3.0-rc-20221015.6 | 138 | 10/15/2022 |
1.3.0-preview-20220829.2 | 110 | 8/30/2022 |
1.3.0-preview-20220820.6 | 124 | 8/21/2022 |
1.3.0-preview-20220802.2 | 419 | 8/2/2022 |
1.3.0-preview-20220729.2 | 126 | 8/1/2022 |
1.3.0-preview-20220721.9 | 156 | 7/21/2022 |
1.3.0-preview-20220719.1 | 119 | 7/19/2022 |
1.3.0-preview-20220706.2 | 127 | 7/10/2022 |
1.3.0-preview-20220701.4 | 162 | 7/2/2022 |
1.3.0-preview-20220623.2 | 135 | 6/23/2022 |