Files
Servers/MoonlightServers.Frontend/Admin/Index.razor

76 lines
2.3 KiB
Plaintext

@page "/admin/servers"
@using LucideBlazor
@using MoonlightServers.Shared
@using ShadcnBlazor.Tab
@inject IAuthorizationService AuthorizationService
@inject NavigationManager Navigation
@attribute [Authorize(Policy = Permissions.Servers.View)]
<Tabs DefaultValue="@(Tab ?? "servers")" OnValueChanged="OnTabChanged">
<TabsList ClassName="inline-flex w-full lg:w-fit justify-start overflow-x-auto overflow-y-hidden">
<TabsTrigger Value="servers" Disabled="@(!ServersAccess.Succeeded)">
<ContainerIcon />
Servers
</TabsTrigger>
<TabsTrigger Value="nodes" Disabled="@(!NodesAccess.Succeeded)">
<ServerIcon />
Nodes
</TabsTrigger>
<TabsTrigger Value="templates" Disabled="@(!TemplatesAccess.Succeeded)">
<Package2Icon />
Templates
</TabsTrigger>
<TabsTrigger Value="manager" Disabled="@(!NodesAccess.Succeeded)">
<TableIcon />
Manager
</TabsTrigger>
</TabsList>
@if (ServersAccess.Succeeded)
{
<TabsContent Value="servers">
</TabsContent>
}
@if (NodesAccess.Succeeded)
{
<TabsContent Value="nodes">
<MoonlightServers.Frontend.Admin.Nodes.Overview />
</TabsContent>
}
@if (TemplatesAccess.Succeeded)
{
<TabsContent Value="templates">
<MoonlightServers.Frontend.Admin.Templates.Overview />
</TabsContent>
}
</Tabs>
@code
{
[Parameter]
[SupplyParameterFromQuery(Name = "tab")]
public string? Tab { get; set; }
[CascadingParameter] public Task<AuthenticationState> AuthState { get; set; }
private AuthorizationResult ServersAccess;
private AuthorizationResult NodesAccess;
private AuthorizationResult TemplatesAccess;
protected override async Task OnInitializedAsync()
{
var authState = await AuthState;
ServersAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Servers.View);
NodesAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Nodes.View);
TemplatesAccess = await AuthorizationService.AuthorizeAsync(authState.User, Permissions.Templates.View);
}
private void OnTabChanged(string tab) => Navigation.NavigateTo($"/admin/servers?tab={tab}");
}