#2618 - add backward compatibility for permissions optimizations
This commit is contained in:
		| @ -2,7 +2,7 @@ | ||||
| @inherits ModuleActionsBase  | ||||
| @attribute [OqtaneIgnore] | ||||
|  | ||||
| @if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions) && PageState.Action == Constants.DefaultAction) | ||||
| @if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList) && PageState.Action == Constants.DefaultAction) | ||||
| { | ||||
| 	<div class="app-moduleactions py-2 px-3"> | ||||
| 		<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"></a> | ||||
|  | ||||
| @ -30,11 +30,11 @@ namespace Oqtane.Themes.Controls | ||||
|         { | ||||
|             var actionList = new List<ActionViewModel>(); | ||||
|  | ||||
|             if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
|             if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
|             { | ||||
|                 actionList.Add(new ActionViewModel { Icon = Icons.Cog, Name = "Manage Settings", Action = async (u, m) => await Settings(u, m) }); | ||||
|  | ||||
|                 if (UserSecurity.ContainsRole(ModuleState.Permissions, PermissionNames.View, RoleNames.Everyone)) | ||||
|                 if (UserSecurity.ContainsRole(ModuleState.PermissionList, PermissionNames.View, RoleNames.Everyone)) | ||||
|                 { | ||||
|                     actionList.Add(new ActionViewModel { Icon = Icons.CircleX, Name = "Unpublish Module", Action = async (s, m) => await Unpublish(s, m) }); | ||||
|                 } | ||||
| @ -93,7 +93,7 @@ namespace Oqtane.Themes.Controls | ||||
|  | ||||
|         protected async Task ModuleAction(ActionViewModel action) | ||||
|         { | ||||
|             if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, ModuleState.Permissions)) | ||||
|             if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, ModuleState.PermissionList)) | ||||
|             { | ||||
|                 PageModule pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); | ||||
|  | ||||
| @ -136,7 +136,7 @@ namespace Oqtane.Themes.Controls | ||||
|  | ||||
|         private async Task<string> Publish(string url, PageModule pagemodule) | ||||
|         { | ||||
|             var permissions = pagemodule.Module.Permissions; | ||||
|             var permissions = pagemodule.Module.PermissionList; | ||||
|             if (!permissions.Any(item => item.PermissionName == PermissionNames.View && item.Role.Name == RoleNames.Everyone)) | ||||
|             { | ||||
|                 permissions.Add(new Permission(EntityNames.Page, pagemodule.PageId, PermissionNames.View, RoleNames.Everyone, null, true)); | ||||
| @ -145,14 +145,14 @@ namespace Oqtane.Themes.Controls | ||||
|             { | ||||
|                 permissions.Add(new Permission(EntityNames.Page, pagemodule.PageId, PermissionNames.View, RoleNames.Registered, null, true)); | ||||
|             } | ||||
|             pagemodule.Module.Permissions = permissions; | ||||
|             pagemodule.Module.PermissionList = permissions; | ||||
|             await ModuleService.UpdateModuleAsync(pagemodule.Module); | ||||
|             return url; | ||||
|         } | ||||
|  | ||||
|         private async Task<string> Unpublish(string url, PageModule pagemodule) | ||||
|         { | ||||
|             var permissions = pagemodule.Module.Permissions; | ||||
|             var permissions = pagemodule.Module.PermissionList; | ||||
|             if (permissions.Any(item => item.PermissionName == PermissionNames.View && item.Role.Name == RoleNames.Everyone)) | ||||
|             { | ||||
|                 permissions.Remove(permissions.First(item => item.PermissionName == PermissionNames.View && item.Role.Name == RoleNames.Everyone)); | ||||
| @ -161,7 +161,7 @@ namespace Oqtane.Themes.Controls | ||||
|             { | ||||
|                 permissions.Remove(permissions.First(item => item.PermissionName == PermissionNames.View && item.Role.Name == RoleNames.Registered)); | ||||
|             } | ||||
|             pagemodule.Module.Permissions = permissions; | ||||
|             pagemodule.Module.PermissionList = permissions; | ||||
|             await ModuleService.UpdateModuleAsync(pagemodule.Module); | ||||
|             return url; | ||||
|         } | ||||
|  | ||||
| @ -33,7 +33,7 @@ | ||||
|     } | ||||
| } | ||||
|  | ||||
| @if (_canViewAdminDashboard || UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
| @if (_canViewAdminDashboard || UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
| { | ||||
|     <button type="button" class="btn @ButtonClass" data-bs-toggle="offcanvas" data-bs-target="#offcanvasControlPanel" aria-controls="offcanvasControlPanel"> | ||||
|         <span class="oi oi-cog"></span> | ||||
| @ -71,7 +71,7 @@ | ||||
| 					</div> | ||||
| 					<div class="row d-flex"> | ||||
| 						<div class="col"> | ||||
| 							@if (UserSecurity.ContainsRole(PageState.Page.Permissions, PermissionNames.View, RoleNames.Everyone)) | ||||
| 							@if (UserSecurity.ContainsRole(PageState.Page.PermissionList, PermissionNames.View, RoleNames.Everyone)) | ||||
| 							{ | ||||
| 								<button type="button" class="btn btn-secondary col-12" @onclick=@(async () => Publish("unpublish"))>@Localizer["Page.Unpublish"]</button> | ||||
| 							} | ||||
| @ -107,7 +107,7 @@ | ||||
| 					} | ||||
| 				} | ||||
|  | ||||
| 				@if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
| 				@if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
| 				{ | ||||
| 					<div class="row"> | ||||
| 						<div class="col text-center"> | ||||
| @ -144,7 +144,7 @@ | ||||
| 										} | ||||
| 										@foreach (var moduledefinition in _moduleDefinitions) | ||||
| 										{ | ||||
| 											if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Utilize, moduledefinition.Permissions)) | ||||
| 											if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Utilize, moduledefinition.PermissionList)) | ||||
| 											{ | ||||
| 												if (moduledefinition.Runtimes == "" || moduledefinition.Runtimes.Contains(PageState.Runtime.ToString())) | ||||
| 												{ | ||||
| @ -294,14 +294,14 @@ | ||||
| 	{ | ||||
| 		_canViewAdminDashboard = CanViewAdminDashboard(); | ||||
| 		_showEditMode = false; | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
| 		{ | ||||
| 			_showEditMode = true; | ||||
| 			_pages?.Clear(); | ||||
|  | ||||
| 			foreach (Page p in PageState.Pages) | ||||
| 			{ | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.Permissions)) | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.PermissionList)) | ||||
| 				{ | ||||
| 					_pages.Add(p); | ||||
| 				} | ||||
| @ -319,7 +319,7 @@ | ||||
| 		{ | ||||
| 			foreach (var module in PageState.Modules.Where(item => item.PageId == PageState.Page.PageId)) | ||||
| 			{ | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, module.Permissions)) | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, module.PermissionList)) | ||||
| 				{ | ||||
| 					_showEditMode = true; | ||||
| 					break; | ||||
| @ -335,7 +335,7 @@ | ||||
| 		{ | ||||
| 			foreach (var page in PageState.Pages.Where(item => item.ParentId == admin?.PageId)) | ||||
| 			{ | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, page.Permissions)) | ||||
| 				if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, page.PermissionList)) | ||||
| 				{ | ||||
| 					return true; | ||||
| 				} | ||||
| @ -371,7 +371,7 @@ | ||||
| 		{ | ||||
| 			_modules = PageState.Modules | ||||
| 				.Where(module => module.PageId == int.Parse(PageId) && | ||||
| 				UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.Permissions)) | ||||
| 				UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, module.PermissionList)) | ||||
| 				.ToList(); | ||||
| 		} | ||||
| 		ModuleId = "-"; | ||||
| @ -380,7 +380,7 @@ | ||||
|  | ||||
| 	private async Task AddModule() | ||||
| 	{ | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
| 		{ | ||||
| 			if ((ModuleType == "new" && ModuleDefinitionName != "-") || (ModuleType != "new" && ModuleId != "-")) | ||||
| 			{ | ||||
| @ -405,7 +405,7 @@ | ||||
| 					} | ||||
| 					// set module edit permissions to page edit permissions | ||||
| 					permissions = SetPermissions(permissions, module.SiteId, PermissionNames.Edit, PermissionNames.Edit); | ||||
| 					module.Permissions = permissions; | ||||
| 					module.PermissionList = permissions; | ||||
|  | ||||
| 					module = await ModuleService.AddModuleAsync(module); | ||||
| 					ModuleId = module.ModuleId.ToString(); | ||||
| @ -458,7 +458,7 @@ | ||||
|  | ||||
| 	private List<Permission> SetPermissions(List<Permission> permissions, int siteId, string modulePermission, string pagePermission) | ||||
| 	{ | ||||
| 		foreach (var permission in PageState.Page.Permissions.Where(item => item.PermissionName == pagePermission)) | ||||
| 		foreach (var permission in PageState.Page.PermissionList.Where(item => item.PermissionName == pagePermission)) | ||||
| 		{ | ||||
| 			permissions.Add(new Permission { SiteId = siteId, EntityName = EntityNames.Module, PermissionName = modulePermission, RoleId = permission.RoleId, UserId = permission.UserId, IsAuthorized = permission.IsAuthorized }); | ||||
| 		} | ||||
| @ -534,9 +534,9 @@ | ||||
|  | ||||
| 	private async void Publish(string action) | ||||
| 	{ | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.Permissions)) | ||||
| 		if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) | ||||
| 		{ | ||||
| 			var permissions = PageState.Page.Permissions; | ||||
| 			var permissions = PageState.Page.PermissionList; | ||||
|             if (!permissions.Any(item => item.PermissionName == PermissionNames.View && item.Role.Name == RoleNames.Everyone)) | ||||
|             { | ||||
| 				permissions.Add(new Permission(EntityNames.Page, PageState.Page.PageId, PermissionNames.View, RoleNames.Everyone, null, true)); | ||||
| @ -545,7 +545,7 @@ | ||||
|             { | ||||
| 				permissions.Add(new Permission(EntityNames.Page, PageState.Page.PageId, PermissionNames.View, RoleNames.Registered, null, true)); | ||||
|             } | ||||
| 			PageState.Page.Permissions = permissions; | ||||
| 			PageState.Page.PermissionList = permissions; | ||||
| 			await PageService.UpdatePageAsync(PageState.Page); | ||||
| 			NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, true)); | ||||
| 		} | ||||
|  | ||||
| @ -36,7 +36,7 @@ namespace Oqtane.Themes.Controls | ||||
|             var url = route.PathAndQuery; | ||||
|  | ||||
|             // verify if anonymous users can access page | ||||
|             if (!UserSecurity.IsAuthorized(null, PermissionNames.View, PageState.Page.Permissions)) | ||||
|             if (!UserSecurity.IsAuthorized(null, PermissionNames.View, PageState.Page.PermissionList)) | ||||
|             { | ||||
|                 url = PageState.Alias.Path; | ||||
|             } | ||||
|  | ||||
| @ -32,7 +32,7 @@ namespace Oqtane.Themes.Controls | ||||
|             var securityLevel = int.MaxValue; | ||||
|             foreach (Page p in PageState.Pages.Where(item => item.IsNavigation)) | ||||
|             { | ||||
|                 if (p.Level <= securityLevel && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.Permissions)) | ||||
|                 if (p.Level <= securityLevel && UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.PermissionList)) | ||||
|                 { | ||||
|                     securityLevel = int.MaxValue; | ||||
|                     yield return p; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker