Adding permissions. I hate my life ;)
This commit is contained in:
parent
178ff36e86
commit
74d4ee729d
|
@ -9,6 +9,104 @@ public static class Permissions
|
|||
Description = "See basic information about growth and status of the moonlight instance"
|
||||
};
|
||||
|
||||
public static Permission SystemDashboard = new()
|
||||
{
|
||||
Index = 1,
|
||||
Name = "System information",
|
||||
Description = "See information about the moonlight instance like the uptime and memory usage"
|
||||
};
|
||||
|
||||
public static Permission SystemSentry = new()
|
||||
{
|
||||
Index = 2,
|
||||
Name = "Settings for Sentry",
|
||||
Description = "See information about the sentry status"
|
||||
};
|
||||
|
||||
public static Permission SystemMalware = new()
|
||||
{
|
||||
Index = 3,
|
||||
Name = "Server malware scanner",
|
||||
Description = "Scan running servers for malware"
|
||||
};
|
||||
|
||||
public static Permission SystemSecurity = new()
|
||||
{
|
||||
Index = 4,
|
||||
Name = "System security settings",
|
||||
Description = "Ban ip addresses and view the security logs"
|
||||
};
|
||||
|
||||
public static Permission SystemResources = new()
|
||||
{
|
||||
Index = 5,
|
||||
Name = "Resources",
|
||||
Description = "Read and write moonlight resources like configuration files"
|
||||
};
|
||||
|
||||
public static Permission DiscordBot = new()
|
||||
{
|
||||
Index = 6,
|
||||
Name = "Discord bot actions",
|
||||
Description = "Setup and remote control the discord bot if enabled"
|
||||
};
|
||||
|
||||
public static Permission NewsMessages = new()
|
||||
{
|
||||
Index = 7,
|
||||
Name = "News messages",
|
||||
Description = "Edit, view and delete messages for the user dashboard"
|
||||
};
|
||||
|
||||
public static Permission SystemConfiguration = new()
|
||||
{
|
||||
Index = 8,
|
||||
Name = "System configuration",
|
||||
Description = "Modify the moonlight configuration though the visual editor"
|
||||
};
|
||||
|
||||
public static Permission SystemMail = new()
|
||||
{
|
||||
Index = 9,
|
||||
Name = "System mail settings",
|
||||
Description = "Modify the mail templates and send test mails"
|
||||
};
|
||||
|
||||
public static Permission ServersOverview = new()
|
||||
{
|
||||
Index = 10,
|
||||
Name = "Servers overview",
|
||||
Description = "View all servers and their owners"
|
||||
};
|
||||
|
||||
public static Permission ServerAdminEdit = new()
|
||||
{
|
||||
Index = 11,
|
||||
Name = "Edit servers",
|
||||
Description = "View all servers and their owners"
|
||||
};
|
||||
|
||||
public static Permission ServerManager = new()
|
||||
{
|
||||
Index = 12,
|
||||
Name = "Server manager",
|
||||
Description = "View all servers are currently running and stop/kill all running servers"
|
||||
};
|
||||
|
||||
public static Permission ServerCleanup = new()
|
||||
{
|
||||
Index = 13,
|
||||
Name = "Server cleanup",
|
||||
Description = "View the stats about the cleanup system"
|
||||
};
|
||||
|
||||
public static Permission Nodes = new()
|
||||
{
|
||||
Index = 14,
|
||||
Name = "Nodes",
|
||||
Description = "View stats about the nodes"
|
||||
};
|
||||
|
||||
public static Permission? FromString(string name)
|
||||
{
|
||||
var type = typeof(Permissions);
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
<_ContentIncludedByDefault Remove="Shared\Views\Admin\Servers\Cleanup\Exceptions\Edit.razor" />
|
||||
<_ContentIncludedByDefault Remove="Shared\Components\News\NewsEditor.razor" />
|
||||
<_ContentIncludedByDefault Remove="Shared\News\Edit.razor" />
|
||||
<_ContentIncludedByDefault Remove="Shared\Views\Admin\AaPanels\Index.razor" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
@page "/admin/aapanels"
|
||||
|
|
@ -17,8 +17,7 @@
|
|||
|
||||
@attribute [PermissionRequired(nameof(Permissions.AdminDashboard))]
|
||||
|
||||
<OnlyAdmin>
|
||||
<LazyLoader Load="Load">
|
||||
<LazyLoader Load="Load">
|
||||
<div class="row mb-5">
|
||||
<div class="col-12 col-lg-6 col-xl">
|
||||
<a class="mt-4 card" href="/admin/servers">
|
||||
|
@ -127,8 +126,7 @@
|
|||
<HealthCheckView HealthCheck="@HealthCheckData"/>
|
||||
}
|
||||
</LazyLoader>
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -8,13 +8,16 @@
|
|||
@inject ServerRepository ServerRepository
|
||||
@inject SmartTranslateService SmartTranslateService
|
||||
|
||||
<OnlyAdmin>
|
||||
<div class="row">
|
||||
@attribute [PermissionRequired(nameof(Permissions.ServersOverview))]
|
||||
|
||||
<div class="row">
|
||||
<LazyLoader Load="Load">
|
||||
<div class="card">
|
||||
<div class="card-header border-0 pt-5">
|
||||
<h3 class="card-title align-items-start flex-column">
|
||||
<span class="card-label fw-bold fs-3 mb-1"><TL>Servers</TL></span>
|
||||
<span class="card-label fw-bold fs-3 mb-1">
|
||||
<TL>Servers</TL>
|
||||
</span>
|
||||
</h3>
|
||||
<div class="card-toolbar">
|
||||
<a href="/admin/servers/new" class="btn btn-sm btn-light-success">
|
||||
|
@ -62,8 +65,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</LazyLoader>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
@page "/admin/system/auditlog"
|
||||
|
||||
@using Moonlight.Shared.Components.Navigations
|
||||
@using Moonlight.App.Repositories.LogEntries
|
||||
@using Moonlight.App.Services
|
||||
@using Moonlight.App.Database.Entities.LogsEntries
|
||||
@using BlazorTable
|
||||
@using Moonlight.App.Helpers
|
||||
@using Moonlight.App.Models.Misc
|
||||
@using Moonlight.Shared.Components.AuditLogEntrys
|
||||
|
||||
@inject AuditLogEntryRepository AuditLogEntryRepository
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="2"/>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header card-header-stretch">
|
||||
<div class="card-title d-flex align-items-center">
|
||||
<span class="me-3 lh-0">
|
||||
<i class="bx bx-md bx-calendar"></i>
|
||||
</span>
|
||||
<h3 class="fw-bold m-0 text-gray-800">@(Formatter.FormatDateOnly(DateTime))</h3>
|
||||
</div>
|
||||
<div class="card-toolbar m-0">
|
||||
<ul class="nav nav-tabs nav-line-tabs nav-stretch fs-6 border-0 fw-bold">
|
||||
<li class="nav-item">
|
||||
<button @onclick="Left" class="nav-link justify-content-center text-active-gray-800">
|
||||
<i class="bx bx-md bx-left-arrow"></i>
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button @onclick="Right" class="nav-link justify-content-center text-active-gray-800">
|
||||
<i class="bx bx-md bx-right-arrow"></i>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||
@if (AuditLogEntries.Any())
|
||||
{
|
||||
<div class="timeline">
|
||||
@foreach (var entry in AuditLogEntries)
|
||||
{
|
||||
switch (entry.Type)
|
||||
{
|
||||
case AuditLogType.Login:
|
||||
<AuditLogEntryLogin Entry="entry"/>
|
||||
break;
|
||||
case AuditLogType.Register:
|
||||
<AuditLogEntryRegister Entry="entry"/>
|
||||
break;
|
||||
case AuditLogType.ChangePassword:
|
||||
<AuditLogEntryChangePassword Entry="entry"/>
|
||||
break;
|
||||
case AuditLogType.ChangePowerState:
|
||||
<AuditLogEntryChangePowerState Entry="entry"/>
|
||||
break;
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="alert alert-primary">
|
||||
<TL>No records found for this day</TL>
|
||||
</div>
|
||||
}
|
||||
</LazyLoader>
|
||||
</div>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
|
||||
@code
|
||||
{
|
||||
private AuditLogEntry[] AuditLogEntries;
|
||||
private LazyLoader LazyLoader;
|
||||
private DateTime DateTime = DateTime.Today;
|
||||
|
||||
private Task Load(LazyLoader arg)
|
||||
{
|
||||
AuditLogEntries = AuditLogEntryRepository
|
||||
.Get()
|
||||
.Where(x => x.CreatedAt.Date == DateTime.Date)
|
||||
.OrderByDescending(x => x.Id)
|
||||
.ToArray();
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task Left()
|
||||
{
|
||||
DateTime = DateTime.AddDays(1);
|
||||
|
||||
await LazyLoader.Reload();
|
||||
}
|
||||
|
||||
private async Task Right()
|
||||
{
|
||||
DateTime = DateTime.AddDays(-1);
|
||||
|
||||
await LazyLoader.Reload();
|
||||
}
|
||||
}
|
|
@ -9,10 +9,11 @@
|
|||
@inject ToastService ToastService
|
||||
@inject SmartTranslateService SmartTranslateService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="8"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemConfiguration))]
|
||||
|
||||
<LazyLoader Load="Load">
|
||||
<AdminSystemNavigation Index="8"/>
|
||||
|
||||
<LazyLoader Load="Load">
|
||||
<div class="card">
|
||||
<SmartForm Model="Config" OnValidSubmit="OnSubmit">
|
||||
<div class="card-body">
|
||||
|
@ -27,8 +28,7 @@
|
|||
</div>
|
||||
</SmartForm>
|
||||
</div>
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
|
||||
@inject DiscordBotService DiscordBotService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="6"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.DiscordBot))]
|
||||
|
||||
<div class="mt-3 card card-body">
|
||||
<AdminSystemNavigation Index="6"/>
|
||||
|
||||
<div class="mt-3 card card-body">
|
||||
<WButton Text="Register commands"
|
||||
WorkingText="Working"
|
||||
CssClasses="btn-primary"
|
||||
|
@ -19,8 +20,7 @@
|
|||
CssClasses="mt-3 btn-danger"
|
||||
OnClick="VoidCommands">
|
||||
</WButton>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
@inject HostSystemHelper HostSystemHelper
|
||||
@inject MoonlightService MoonlightService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="0"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemDashboard))]
|
||||
|
||||
<LazyLoader Load="Load">
|
||||
<AdminSystemNavigation Index="0"/>
|
||||
|
||||
<LazyLoader Load="Load">
|
||||
<div class="row">
|
||||
<div class="col-xxl-6 my-3">
|
||||
<div class="card">
|
||||
|
@ -91,8 +92,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -16,10 +16,11 @@
|
|||
@inject AlertService AlertService
|
||||
@inject MailService MailService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="9"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemMail))]
|
||||
|
||||
<div class="card mb-3">
|
||||
<AdminSystemNavigation Index="9"/>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<span class="card-title">
|
||||
<TL>Actions</TL>
|
||||
|
@ -32,9 +33,9 @@
|
|||
OnClick="SendTestMail">
|
||||
</WButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||
@if (CurrentMailTemplate == null)
|
||||
{
|
||||
<div class="card">
|
||||
|
@ -87,8 +88,7 @@
|
|||
OnCancel="OnCancelTemplateEdit"
|
||||
OnSubmit="OnSubmitTemplateEdit"/>
|
||||
}
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -14,10 +14,11 @@
|
|||
|
||||
@implements IDisposable
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="2"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemMalware))]
|
||||
|
||||
<div class="row">
|
||||
<AdminSystemNavigation Index="2"/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
@ -95,8 +96,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -10,8 +10,9 @@
|
|||
@inject NavigationManager NavigationManager
|
||||
@inject NewsEntryRepository NewsEntryRepository
|
||||
|
||||
<OnlyAdmin>
|
||||
<LazyLoader Load="Load">
|
||||
@attribute [PermissionRequired(nameof(Permissions.NewsMessages))]
|
||||
|
||||
<LazyLoader Load="Load">
|
||||
@if (Entry == null)
|
||||
{
|
||||
<div class="alert bg-info d-flex flex-column flex-sm-row w-100 p-5">
|
||||
|
@ -48,8 +49,7 @@
|
|||
</div>
|
||||
</div>
|
||||
}
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -12,18 +12,19 @@
|
|||
@inject SmartTranslateService SmartTranslateService
|
||||
@inject AlertService AlertService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="7" />
|
||||
@attribute [PermissionRequired(nameof(Permissions.NewsMessages))]
|
||||
|
||||
<div class="card card-body mb-6">
|
||||
<AdminSystemNavigation Index="7"/>
|
||||
|
||||
<div class="card card-body mb-6">
|
||||
<div class="text-end">
|
||||
<a href="/admin/system/news/new" class="btn btn-success">
|
||||
<TL>New entry</TL>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||
<LazyLoader @ref="LazyLoader" Load="Load">
|
||||
@foreach (var entry in Entries)
|
||||
{
|
||||
<div class="card mb-6">
|
||||
|
@ -54,8 +55,7 @@
|
|||
</div>
|
||||
</div>
|
||||
}
|
||||
</LazyLoader>
|
||||
</OnlyAdmin>
|
||||
</LazyLoader>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -9,8 +9,9 @@
|
|||
@inject NavigationManager NavigationManager
|
||||
@inject NewsEntryRepository NewsEntryRepository
|
||||
|
||||
<OnlyAdmin>
|
||||
<div class="card mb-6">
|
||||
@attribute [PermissionRequired(nameof(Permissions.NewsMessages))]
|
||||
|
||||
<div class="card mb-6">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title w-75">
|
||||
<input type="text" @bind="Model.Title" placeholder="@SmartTranslateService.Translate("Title...")" class="form-control form-control-flush"/>
|
||||
|
@ -29,8 +30,7 @@
|
|||
WorkingText="@SmartTranslateService.Translate("Saving...")">
|
||||
</WButton>
|
||||
</div>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -11,10 +11,11 @@
|
|||
@inject ConfigService ConfigService
|
||||
@inject AlertService AlertService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="5"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemResources))]
|
||||
|
||||
<div class="card card-body mb-6">
|
||||
<AdminSystemNavigation Index="5"/>
|
||||
|
||||
<div class="card card-body mb-6">
|
||||
<div class="text-end">
|
||||
<WButton CssClasses="btn btn-primary"
|
||||
Text="@(SmartTranslateService.Translate("Reload config"))"
|
||||
|
@ -22,13 +23,12 @@
|
|||
OnClick="ReloadConfig">
|
||||
</WButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card card-body">
|
||||
<div class="card card-body">
|
||||
<FileManager Access="@(new HostFileAccess(PathBuilder.Dir("storage")))">
|
||||
</FileManager>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
@inject EventSystem Event
|
||||
@inject ToastService ToastService
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="3"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemSecurity))]
|
||||
|
||||
<div class="card mb-5">
|
||||
<AdminSystemNavigation Index="3"/>
|
||||
|
||||
<div class="card mb-5">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<TL>Ip Bans</TL>
|
||||
|
@ -53,8 +54,7 @@
|
|||
</Table>
|
||||
</LazyLoader>
|
||||
</div>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
@using Moonlight.Shared.Components.Navigations
|
||||
@using global::Sentry
|
||||
|
||||
<OnlyAdmin>
|
||||
<AdminSystemNavigation Index="1"/>
|
||||
@attribute [PermissionRequired(nameof(Permissions.SystemSentry))]
|
||||
|
||||
<div class="row">
|
||||
<AdminSystemNavigation Index="1"/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xxl-6 my-3">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
@ -28,8 +29,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</OnlyAdmin>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
||||
@using Microsoft.JSInterop
|
||||
@using Moonlight
|
||||
@using Moonlight.App.Perms
|
||||
@using Moonlight.Shared.Components
|
||||
@using Moonlight.Shared.Components.StateLogic
|
||||
@using Moonlight.Shared.Components.Alerts
|
||||
|
|
Loading…
Reference in a new issue