completed client state invalidation in multi-user environment
This commit is contained in:
		
							
								
								
									
										135
									
								
								Oqtane.Client/UI/Pane.razor
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								Oqtane.Client/UI/Pane.razor
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,135 @@ | ||||
| @namespace Oqtane.UI | ||||
| @inject IUserService UserService | ||||
| @inject IModuleService ModuleService | ||||
| @inject IModuleDefinitionService ModuleDefinitionService | ||||
|  | ||||
| <div class="@paneadminborder"> | ||||
|     @if (panetitle != "") | ||||
|     { | ||||
|         @((MarkupString)panetitle) | ||||
|     } | ||||
|     @DynamicComponent | ||||
| </div> | ||||
|  | ||||
| @code { | ||||
|     [CascadingParameter] | ||||
|     protected PageState PageState { get; set; } | ||||
|  | ||||
|     [Parameter] | ||||
|     public string Name { get; set; } | ||||
|  | ||||
|     RenderFragment DynamicComponent { get; set; } | ||||
|  | ||||
|     string paneadminborder = ""; | ||||
|     string panetitle = ""; | ||||
|  | ||||
|     protected override void OnParametersSet() | ||||
|     { | ||||
|         if (PageState.EditMode && !PageState.Page.EditMode && UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) && Name != Constants.AdminPane) | ||||
|         { | ||||
|             paneadminborder = "app-pane-admin-border"; | ||||
|             panetitle = "<div class=\"app-pane-admin-title\">" + Name + " Pane</div>"; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             paneadminborder = ""; | ||||
|             panetitle = ""; | ||||
|         } | ||||
|  | ||||
|         DynamicComponent = builder => | ||||
|         { | ||||
|             if (PageState.ModuleId != -1 && PageState.Action != "") | ||||
|             { | ||||
|                 if (Name.ToLower() == Constants.AdminPane.ToLower()) | ||||
|                 { | ||||
|                     Module module = PageState.Modules.Where(item => item.ModuleId == PageState.ModuleId).FirstOrDefault(); | ||||
|                     if (module != null) | ||||
|                     { | ||||
|                         string typename = module.ModuleType; | ||||
|                         // check for core module actions component | ||||
|                         if (Constants.DefaultModuleActions.Contains(PageState.Action))  | ||||
|                         { | ||||
|                             typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, PageState.Action); | ||||
|                         } | ||||
|                         Type moduleType = Type.GetType(typename); | ||||
|                         if (moduleType != null) | ||||
|                         { | ||||
|                             bool authorized = false; | ||||
|                             if (Constants.DefaultModuleActions.Contains(PageState.Action)) | ||||
|                             { | ||||
|                                 authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions); | ||||
|                             } | ||||
|                             else | ||||
|                             { | ||||
|                             // verify security access level for this module control | ||||
|                             switch (module.SecurityAccessLevel) | ||||
|                                 { | ||||
|                                     case SecurityAccessLevel.Anonymous: | ||||
|                                         authorized = true; | ||||
|                                         break; | ||||
|                                     case SecurityAccessLevel.View: | ||||
|                                         authorized = UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions); | ||||
|                                         break; | ||||
|                                     case SecurityAccessLevel.Edit: | ||||
|                                         authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", module.Permissions); | ||||
|                                         break; | ||||
|                                     case SecurityAccessLevel.Admin: | ||||
|                                         authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole); | ||||
|                                         break; | ||||
|                                     case SecurityAccessLevel.Host: | ||||
|                                         authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole); | ||||
|                                         break; | ||||
|                                 } | ||||
|                             } | ||||
|                             if (authorized) | ||||
|                             { | ||||
|                                 if (!Constants.DefaultModuleActions.Contains(PageState.Action) && module.ControlTitle != "") | ||||
|                                 { | ||||
|                                     module.Title = module.ControlTitle; | ||||
|                                 } | ||||
|                                 builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent)); | ||||
|                                 builder.AddAttribute(1, "Module", module); | ||||
|                                 builder.CloseComponent(); | ||||
|                             } | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             // module control does not exist with name specified | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (PageState.ModuleId != -1) | ||||
|                 { | ||||
|                     Module module = PageState.Modules.Where(item => item.ModuleId == PageState.ModuleId).FirstOrDefault(); | ||||
|                     if (module != null && module.Pane.ToLower() == Name.ToLower()) | ||||
|                     { | ||||
|                         // check if user is authorized to view module | ||||
|                         if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions)) | ||||
|                         { | ||||
|                             builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent)); | ||||
|                             builder.AddAttribute(1, "Module", module); | ||||
|                             builder.CloseComponent(); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     foreach (Module module in PageState.Modules.Where(item => item.PageId == PageState.Page.PageId && item.Pane.ToLower() == Name.ToLower() && !item.IsDeleted).OrderBy(x => x.Order).ToArray()) | ||||
|                     { | ||||
|                         // check if user is authorized to view module | ||||
|                         if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions)) | ||||
|                         { | ||||
|                             builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent)); | ||||
|                             builder.AddAttribute(1, "Module", module); | ||||
|                             builder.SetKey(module.PageModuleId); | ||||
|                             builder.CloseComponent(); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             }; | ||||
|         }; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker