76 lines
2.3 KiB
Plaintext
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}");
|
|
}
|