From 3ce7f1a227df68d2e64937a5ce7eec148e1b0a03 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Tue, 27 Aug 2019 17:14:41 -0400 Subject: [PATCH] Permission-based authorization utilizing Policies --- Oqtane.Client/Modules/Admin/Admin/Index.razor | 3 +- .../Modules/Admin/ModuleSettings/Index.razor | 8 +- Oqtane.Client/Modules/Admin/Pages/Add.razor | 12 +- .../Modules/Admin/Pages/Delete.razor | 13 +- Oqtane.Client/Modules/Admin/Pages/Edit.razor | 16 +- Oqtane.Client/Modules/Admin/Pages/Index.razor | 4 +- .../Modules/Admin/Register/Index.razor | 12 +- Oqtane.Client/Modules/Admin/Sites/Add.razor | 5 +- .../Modules/Controls/ActionLink.razor | 12 +- .../Modules/Controls/ModuleMessage.razor | 20 +- .../HtmlText/Services/HtmlTextService.cs | 10 +- .../HtmlText/Services/IHtmlTextService.cs | 2 +- .../IdentityAuthenticationStateProvider.cs | 3 +- .../Services/Interfaces/IUserService.cs | 2 - Oqtane.Client/Services/UserService.cs | 73 ---- Oqtane.Client/Shared/Container.razor | 3 +- Oqtane.Client/Shared/Installer.razor | 14 +- Oqtane.Client/Shared/ModuleInstance.razor | 3 +- Oqtane.Client/Shared/Pane.razor | 15 +- Oqtane.Client/Shared/SiteRouter.razor | 13 +- Oqtane.Client/Shared/Theme.razor | 3 +- Oqtane.Client/Shared/Utilities.cs | 1 + .../Themes/Controls/ControlPanel.razor | 8 +- Oqtane.Client/Themes/Controls/Menu.razor | 3 +- .../Themes/Controls/ModuleActions.razor | 5 +- Oqtane.Server/Controllers/AliasController.cs | 6 +- .../Controllers/InstallationController.cs | 2 - Oqtane.Server/Controllers/ModuleController.cs | 6 +- .../Controllers/PageModuleController.cs | 6 +- .../Controllers/PermissionController.cs | 65 +++ Oqtane.Server/Controllers/RoleController.cs | 6 +- Oqtane.Server/Controllers/UserController.cs | 111 +++-- .../Controllers/UserRoleController.cs | 6 +- .../Controllers/HtmlTextController.cs | 34 +- .../HtmlText/Repository/HtmlTextRepository.cs | 4 +- .../Repository/IHtmlTextRepository.cs | 2 +- .../Repository/Context/TenantDBContext.cs | 1 + .../Interfaces/IPermissionRepository.cs | 19 + Oqtane.Server/Repository/ModuleRepository.cs | 23 +- .../Repository/PageModuleRepository.cs | 25 +- Oqtane.Server/Repository/PageRepository.cs | 23 +- .../Repository/PermissionRepository.cs | 236 +++++++++++ Oqtane.Server/Repository/TenantResolver.cs | 5 +- Oqtane.Server/Scripts/00.00.00.sql | 401 +++++++++++++----- .../Security/ClaimsPrincipalFactory.cs | 7 +- Oqtane.Server/Security/PermissionHandler.cs | 57 +++ .../Security/PermissionRequirement.cs | 17 + Oqtane.Server/Startup.cs | 25 +- Oqtane.Shared/Models/Module.cs | 5 +- Oqtane.Shared/Models/Page.cs | 7 +- Oqtane.Shared/Models/Permission.cs | 23 + Oqtane.Shared/Models/User.cs | 3 +- Oqtane.Shared/Security/UserSecurity.cs | 103 +++++ .../Shared/Constants.cs | 1 + 54 files changed, 1104 insertions(+), 388 deletions(-) create mode 100644 Oqtane.Server/Controllers/PermissionController.cs create mode 100644 Oqtane.Server/Repository/Interfaces/IPermissionRepository.cs create mode 100644 Oqtane.Server/Repository/PermissionRepository.cs create mode 100644 Oqtane.Server/Security/PermissionHandler.cs create mode 100644 Oqtane.Server/Security/PermissionRequirement.cs create mode 100644 Oqtane.Shared/Models/Permission.cs create mode 100644 Oqtane.Shared/Security/UserSecurity.cs rename {Oqtane.Client => Oqtane.Shared}/Shared/Constants.cs (95%) diff --git a/Oqtane.Client/Modules/Admin/Admin/Index.razor b/Oqtane.Client/Modules/Admin/Admin/Index.razor index 9065812c..1717112b 100644 --- a/Oqtane.Client/Modules/Admin/Admin/Index.razor +++ b/Oqtane.Client/Modules/Admin/Admin/Index.razor @@ -2,6 +2,7 @@ @using Oqtane.Modules @using Oqtane.Services @using Oqtane.Models; +@using Oqtane.Security @using Oqtane.Client.Modules.Controls @inherits ModuleBase @inject IPageService PageService @@ -10,7 +11,7 @@