mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-05-07 09:34:03 +02:00
Add permissions for existing web pages
This commit is contained in:
parent
0e6d506cb4
commit
1c2c32c2e6
Server
Phantom.Server.Web.Identity/Data
Phantom.Server.Web
@ -9,4 +9,13 @@ public sealed record Permission(string Id, Permission? Parent) {
|
||||
AllPermissions.Add(permission);
|
||||
return permission;
|
||||
}
|
||||
|
||||
public const string ViewInstancesPolicy = "Instances.View";
|
||||
public static readonly Permission ViewInstances = Register(ViewInstancesPolicy);
|
||||
|
||||
public const string CreateInstancesPolicy = "Instances.Create";
|
||||
public static readonly Permission CreateInstances = Register(CreateInstancesPolicy, parent: ViewInstances);
|
||||
|
||||
public const string ViewAuditPolicy = "Audit.View";
|
||||
public static readonly Permission ViewAudit = Register(ViewAuditPolicy);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
@using Phantom.Server.Services
|
||||
@inject ServiceConfiguration Configuration
|
||||
@inject PermissionManager PermissionManager
|
||||
|
||||
<div class="navbar navbar-dark">
|
||||
<div class="container-fluid">
|
||||
@ -18,10 +19,19 @@
|
||||
<NavMenuItem Label="Login" Icon="account-login" Href="login" />
|
||||
</NotAuthorized>
|
||||
<Authorized>
|
||||
<NavMenuItem Label="Instances" Icon="folder" Href="instances" />
|
||||
<NavMenuItem Label="Agents" Icon="cloud" Href="agents" />
|
||||
<NavMenuItem Label="Audit Log" Icon="clipboard" Href="audit" />
|
||||
<NavMenuItem Label="Logout" Icon="account-logout" Href="logout" />
|
||||
@{ var permissions = PermissionManager.GetPermissions(context.User); }
|
||||
|
||||
@if (permissions.Check(Permission.ViewInstances)) {
|
||||
<NavMenuItem Label="Instances" Icon="folder" Href="instances" />
|
||||
}
|
||||
|
||||
<NavMenuItem Label="Agents" Icon="cloud" Href="agents" />
|
||||
|
||||
@if (permissions.Check(Permission.ViewAudit)) {
|
||||
<NavMenuItem Label="Audit Log" Icon="clipboard" Href="audit" />
|
||||
}
|
||||
|
||||
<NavMenuItem Label="Logout" Icon="account-logout" Href="logout" />
|
||||
</Authorized>
|
||||
</AuthorizeView>
|
||||
</nav>
|
||||
|
@ -1,4 +1,5 @@
|
||||
@page "/audit"
|
||||
@attribute [Authorize(Permission.ViewAuditPolicy)]
|
||||
@using Phantom.Server.Database.Enums
|
||||
@using Phantom.Server.Services.Audit
|
||||
@using Phantom.Server.Services.Instances
|
||||
|
@ -11,6 +11,7 @@
|
||||
@using Phantom.Common.Data.Java
|
||||
@using Phantom.Common.Data
|
||||
@using Phantom.Common.Data.Instance
|
||||
@attribute [Authorize(Permission.CreateInstancesPolicy)]
|
||||
@inject INavigation Nav
|
||||
@inject MinecraftVersions MinecraftVersions
|
||||
@inject AgentJavaRuntimesManager AgentJavaRuntimesManager
|
||||
|
@ -1,4 +1,5 @@
|
||||
@page "/instances/{InstanceGuid:guid}"
|
||||
@attribute [Authorize(Permission.ViewInstancesPolicy)]
|
||||
@using Phantom.Common.Data.Instance
|
||||
@using Phantom.Common.Data.Replies
|
||||
@using Phantom.Server.Services.Audit
|
||||
|
@ -1,4 +1,5 @@
|
||||
@page "/instances"
|
||||
@attribute [Authorize(Permission.ViewInstancesPolicy)]
|
||||
@using System.Collections.Immutable
|
||||
@using Phantom.Server.Services.Agents
|
||||
@using Phantom.Server.Services.Instances
|
||||
@ -8,7 +9,9 @@
|
||||
|
||||
<h1>Instances</h1>
|
||||
|
||||
<a href="instances/create" class="btn btn-primary" role="button">New Instance</a>
|
||||
<PermissionView Permission="Permission.CreateInstances">
|
||||
<a href="instances/create" class="btn btn-primary" role="button">New Instance</a>
|
||||
</PermissionView>
|
||||
|
||||
<table class="table align-middle">
|
||||
<thead>
|
||||
@ -76,7 +79,7 @@
|
||||
this.agentNames = agents.ToImmutableDictionary(static agent => agent.Guid, static agent => agent.Name);
|
||||
InvokeAsync(StateHasChanged);
|
||||
});
|
||||
|
||||
|
||||
InstanceManager.InstancesChanged.Subscribe(this, instances => {
|
||||
this.instances = instances.Values.OrderBy(instance => agentNames.TryGetValue(instance.Configuration.AgentGuid, out var agentName) ? agentName : string.Empty).ThenBy(static instance => instance.Configuration.InstanceName).ToImmutableArray();
|
||||
InvokeAsync(StateHasChanged);
|
||||
|
Loading…
Reference in New Issue
Block a user