SplatDev.Umbraco.Plugins.Restricted
2.5.4
dotnet add package SplatDev.Umbraco.Plugins.Restricted --version 2.5.4
NuGet\Install-Package SplatDev.Umbraco.Plugins.Restricted -Version 2.5.4
<PackageReference Include="SplatDev.Umbraco.Plugins.Restricted" Version="2.5.4" />
<PackageVersion Include="SplatDev.Umbraco.Plugins.Restricted" Version="2.5.4" />
<PackageReference Include="SplatDev.Umbraco.Plugins.Restricted" />
paket add SplatDev.Umbraco.Plugins.Restricted --version 2.5.4
#r "nuget: SplatDev.Umbraco.Plugins.Restricted, 2.5.4"
#:package SplatDev.Umbraco.Plugins.Restricted@2.5.4
#addin nuget:?package=SplatDev.Umbraco.Plugins.Restricted&version=2.5.4
#tool nuget:?package=SplatDev.Umbraco.Plugins.Restricted&version=2.5.4
Restricted
Content restriction plugin for Umbraco — member-only content gates using Umbraco's built-in IPublicAccessService with role-based access and a backoffice dashboard.



Compatibility
| Umbraco | .NET | Package Version |
|---|---|---|
| 13.x | 8.0 | 2.5.4 |
| 17.x | 10.0 | 2.5.4 |
Installation
dotnet add package SplatDev.Umbraco.Plugins.Restricted
Quick Start
The plugin auto-registers via Umbraco's composition system. No explicit Program.cs registration required.
Features
- Member-only content gates using Umbraco's built-in
IPublicAccessService - Role-based access: restrict nodes to specific member groups
- Paywall support: redirect unauthorized visitors to a login or error page
- Backoffice dashboard to manage restricted nodes
- View component for rendering access status in Razor views
API Endpoints
| Method | Route | Description |
|---|---|---|
| GET | /umbraco/api/restricted/GetRestrictedNodes |
List all restricted nodes |
| POST | /umbraco/api/restricted/RestrictNode |
Restrict a node with member groups |
| DELETE | /umbraco/api/restricted/UnrestrictNode?nodeId={id} |
Remove restrictions from a node |
| GET | /umbraco/api/restricted/GetRequiredGroups?nodeId={id} |
Get required groups for a node |
| POST | /umbraco/api/restricted/SetRequiredGroups |
Update required groups |
Usage in Razor
@await Component.InvokeAsync("Restricted", new { nodeId = Model.Id })
No EF Core Required
This plugin uses Umbraco's own public access infrastructure — no additional database tables needed.
Known Limitations
- Relies entirely on Umbraco's
IPublicAccessService; cannot enforce restrictions outside of Umbraco's content delivery pipeline - Role-based access is limited to Umbraco member groups — no support for external identity providers
- Redirect behavior (login vs error page) must be configured per-node
Changelog
2.5.4 — 2026-08-26
Fixes a duplicate registration on sites that still have a physical App_Plugins folder for this plugin, left behind by an older release that copied content into the site. Umbraco registered those extensions twice - once from its own scan of the folder, once from this package's embedded manifest - and logged "Extension with alias ... is already registered". The embedded manifest now yields to the physical copy.
2.5.3 — 2026-08-24
Restores the Common group and the Brazilian Portuguese translation that shipped with the Umbraco 8 package.
2.5.2 — 2026-08-24
Removes a dashboard screenshot that showed an error toast. It was captured against a site where this plugin's API was unreachable, so it advertised a broken dashboard. No screenshot is better than a misleading one; a replacement will be taken against a working install.
2.5.1 — 2026-08-24
Package metadata only: the listing now carries an icon and search tags, and the project and repository links point at the organisation that actually hosts this code. No code changes.
2.5.0 — 2026-08-23
The Razor view behind @await Component.InvokeAsync(...) is now compiled into the package. It was previously carried as a loose file that nothing packed, so the component threw "view not found" on every install and the front-end usage shown in this README could not have worked.
2.4.0 — 2026-08-23
- You can restrict or unrestrict a page from the page itself. The plugin shipped a dashboard listing restricted nodes and nothing on the node, so protecting a page meant leaving it, finding it in a list somewhere else, and coming back.
- The button writes Umbraco's own public access — the same entries the dashboard creates — so the page is protected everywhere, not only where this plugin renders. Choose the member group on the page, or set defaults on the data type.
- Unrestricting asks first, since that is the direction that exposes something.
2.3.2 — 2026-08-21
- Dashboard now sends the backoffice token with its API calls. On Umbraco 17 those calls were arriving unauthenticated and coming back 401, which the dashboard rendered as an empty state rather than an error.
- A failed request now raises a notification instead of leaving the dashboard looking like there is simply no data.
License
MIT © SplatDev
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.EntityFrameworkCore.Design (>= 10.0.7)
- Microsoft.EntityFrameworkCore.SqlServer (>= 10.0.7)
- Microsoft.Extensions.FileProviders.Embedded (>= 10.0.6)
- Umbraco.Cms.Core (>= 17.3.4)
- Umbraco.Cms.Web.Common (>= 17.3.4)
-
net8.0
- Microsoft.EntityFrameworkCore.Design (>= 8.0.20)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.20)
- Microsoft.Extensions.FileProviders.Embedded (>= 8.0.11)
- Umbraco.Cms.Core (>= 13.12.0)
- Umbraco.Cms.Web.Common (>= 13.12.0)
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 |
|---|---|---|
| 2.5.4 | 40 | 8/27/2026 |