102 lines
3.2 KiB
Plaintext
102 lines
3.2 KiB
Plaintext
@page "/admin/security/ipbans"
|
|
|
|
@using Moonlight.Shared.Components.Navigations
|
|
@using BlazorTable
|
|
@using Moonlight.App.Database.Entities
|
|
@using Moonlight.App.Events
|
|
@using Moonlight.App.Repositories
|
|
@using Moonlight.App.Services
|
|
@using Moonlight.App.Services.Interop
|
|
|
|
@inject Repository<IpBan> IpBanRepository
|
|
@inject SmartTranslateService SmartTranslateService
|
|
@inject EventSystem Event
|
|
@inject ToastService ToastService
|
|
|
|
@attribute [PermissionRequired(nameof(Permissions.AdminSecurityIpBans))]
|
|
|
|
<AdminSecurityNavigation Index="2"/>
|
|
|
|
<div class="card mb-5">
|
|
<div class="card-header">
|
|
<div class="card-title">
|
|
<TL>Ip Bans</TL>
|
|
</div>
|
|
<div class="card-toolbar">
|
|
<table class="w-100">
|
|
<tr>
|
|
<td class="w-100">
|
|
<input @bind="Ip" type="text" class="form-control" placeholder="@(SmartTranslateService.Translate("Enter a ip"))"/>
|
|
</td>
|
|
<td>
|
|
<WButton OnClick="AddIpBan"
|
|
CssClasses="btn btn-primary ms-2"
|
|
Text="@(SmartTranslateService.Translate("Add"))"
|
|
WorkingText="@(SmartTranslateService.Translate("Adding"))">
|
|
</WButton>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<LazyLoader @ref="LazyLoader" Load="Load">
|
|
<div class="table-responsive">
|
|
<Table TableItem="IpBan" Items="AllIpBans" PageSize="25" TableClass="table table-row-bordered table-row-gray-100 align-middle gs-0 gy-3" TableHeadClass="fw-bold text-muted">
|
|
<Column TableItem="IpBan" Title="@(SmartTranslateService.Translate("Ip"))" Field="@(x => x.Ip)" Filterable="true" Sortable="false"/>
|
|
<Column TableItem="IpBan" Title="" Field="@(x => x.Id)" Filterable="false" Sortable="false">
|
|
<Template>
|
|
<div class="text-end">
|
|
<DeleteButton Confirm="true" OnClick="() => DeleteIpBan(context)"></DeleteButton>
|
|
</div>
|
|
</Template>
|
|
</Column>
|
|
<Pager ShowPageNumber="true" ShowTotalCount="true"/>
|
|
</Table>
|
|
</div>
|
|
</LazyLoader>
|
|
</div>
|
|
</div>
|
|
|
|
@code
|
|
{
|
|
private IpBan[] AllIpBans;
|
|
private string Ip;
|
|
|
|
private LazyLoader LazyLoader;
|
|
|
|
private Task Load(LazyLoader arg)
|
|
{
|
|
AllIpBans = IpBanRepository.Get().ToArray();
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
// Ip Bans
|
|
|
|
private async Task AddIpBan()
|
|
{
|
|
var ipBan = IpBanRepository.Add(new()
|
|
{
|
|
Ip = Ip
|
|
});
|
|
|
|
await LazyLoader.Reload();
|
|
|
|
Ip = "";
|
|
await InvokeAsync(StateHasChanged);
|
|
|
|
await Event.Emit("ipBan.update");
|
|
|
|
await ToastService.Success(
|
|
SmartTranslateService.Translate($"Successfully banned {ipBan.Ip}"));
|
|
}
|
|
|
|
private async Task DeleteIpBan(IpBan ban)
|
|
{
|
|
IpBanRepository.Delete(ban);
|
|
|
|
await Event.Emit("ipBan.update");
|
|
await LazyLoader.Reload();
|
|
}
|
|
} |