implement optional Security parameter for TabPanel #797

This commit is contained in:
Shaun Walker 2020-11-04 17:27:15 -05:00
parent 5b49e1bc7c
commit d7135ad4f9
2 changed files with 47 additions and 14 deletions

View File

@ -27,6 +27,9 @@ else
[Parameter] [Parameter]
public string Heading { get; set; } // optional - defaults to name if not specified 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() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();

View File

@ -6,6 +6,8 @@
<div class="form-group"> <div class="form-group">
<ul class="nav nav-tabs" role="tablist"> <ul class="nav nav-tabs" role="tablist">
@foreach (TabPanel tabPanel in _tabPanels) @foreach (TabPanel tabPanel in _tabPanels)
{
@if (IsAuthorized(tabPanel))
{ {
<li class="nav-item"> <li class="nav-item">
@if (tabPanel.Name == ActiveTab) @if (tabPanel.Name == ActiveTab)
@ -22,6 +24,7 @@
} }
</li> </li>
} }
}
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<br /> <br />
@ -57,4 +60,31 @@
} }
StateHasChanged(); 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;
}
} }