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;
+ }
}