diff --git a/Oqtane.Client/Modules/Controls/TabPanel.razor b/Oqtane.Client/Modules/Controls/TabPanel.razor index 553e91a7..9472bab3 100644 --- a/Oqtane.Client/Modules/Controls/TabPanel.razor +++ b/Oqtane.Client/Modules/Controls/TabPanel.razor @@ -27,6 +27,9 @@ else [Parameter] public string Heading { get; set; } // optional - defaults to name if not specified + [Parameter] + public SecurityAccessLevel? Security { get; set; } // optional - can be used to specify SecurityAccessLevel + protected override void OnInitialized() { base.OnInitialized(); diff --git a/Oqtane.Client/Modules/Controls/TabStrip.razor b/Oqtane.Client/Modules/Controls/TabStrip.razor index 48611a93..be82b9ff 100644 --- a/Oqtane.Client/Modules/Controls/TabStrip.razor +++ b/Oqtane.Client/Modules/Controls/TabStrip.razor @@ -7,20 +7,23 @@
@@ -57,4 +60,31 @@ } StateHasChanged(); } + + private bool IsAuthorized(TabPanel tabPanel) + { + var authorized = false; + switch (tabPanel.Security) + { + case null: // security not specified - assume SecurityAccessLevel.Anonymous + authorized = true; + break; + case SecurityAccessLevel.Anonymous: + authorized = true; + break; + case SecurityAccessLevel.View: + authorized = UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, ModuleState.Permissions); + break; + case SecurityAccessLevel.Edit: + authorized = UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, ModuleState.Permissions); + break; + case SecurityAccessLevel.Admin: + authorized = UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin); + break; + case SecurityAccessLevel.Host: + authorized = UserSecurity.IsAuthorized(PageState.User, RoleNames.Host); + break; + } + return authorized; + } }