feat: admin panel

This commit is contained in:
2024-05-28 11:48:10 +02:00
parent 820d48b912
commit b91b1dbe6a
23 changed files with 610 additions and 0 deletions

View File

@ -0,0 +1,36 @@
@page "/Error"
@using System.Diagnostics
<PageTitle>Error</PageTitle>
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@code{
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
private string? RequestId { get; set; }
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
protected override void OnInitialized() =>
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
}

View File

@ -0,0 +1,7 @@
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.

View File

@ -0,0 +1,45 @@
@page "/servers"
@attribute [StreamRendering]
<PageTitle>Servers</PageTitle>
<h1>Servers</h1>
@if (servers == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table clickable">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>State</th>
</tr>
</thead>
<tbody>
@foreach (var world in servers)
{
<tr onclick="window.location = '/servers/@world.Id'">
<td>@world.Id</td>
<td>@world.Name</td>
<td>@world.State</td>
</tr>
}
</tbody>
</table>
}
@code {
private List<World>? servers;
protected override async Task OnInitializedAsync()
{
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(Environment.GetEnvironmentVariable("ADMIN_KEY"));
servers = await httpClient.GetFromJsonAsync<List<World>>("http://localhost:8080/api/admin/servers");
}
}