Updated mooncore versions. Updated permission checking. Added client side permission check. Added dotnet tool specifications for scripts project
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
@using Moonlight.Client.UI.Partials
|
||||
@using MoonCore.Blazor.Tailwind.Toasts
|
||||
@using MoonCore.Blazor.Tailwind.Modals
|
||||
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@using System.Security.Claims
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@using MoonCore.Blazor.Tailwind.Auth
|
||||
@using Moonlight.Client.Interfaces
|
||||
@using Moonlight.Client.Models
|
||||
@@ -8,6 +10,7 @@
|
||||
@inject NavigationManager Navigation
|
||||
@inject AuthenticationStateManager AuthStateManager
|
||||
@inject IEnumerable<ISidebarItemProvider> SidebarItemProviders
|
||||
@inject IAuthorizationService AuthorizationService
|
||||
|
||||
@{
|
||||
var url = new Uri(Navigation.Uri);
|
||||
@@ -201,29 +204,45 @@
|
||||
|
||||
private string Username;
|
||||
private string Email;
|
||||
private ClaimsPrincipal Identity;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var identity = await AuthState;
|
||||
|
||||
Username = identity.User.Claims.First(x => x.Type == "username").Value;
|
||||
Email = identity.User.Claims.First(x => x.Type == "email").Value;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
var authState = await AuthState;
|
||||
|
||||
Identity = authState.User;
|
||||
Username = Identity.Claims.First(x => x.Type == "username").Value;
|
||||
Email = Identity.Claims.First(x => x.Type == "email").Value;
|
||||
|
||||
var sidebarItems = new List<SidebarItem>();
|
||||
|
||||
foreach (var provider in SidebarItemProviders)
|
||||
provider.ModifySidebar(sidebarItems);
|
||||
|
||||
var itemsToRemove = new List<SidebarItem>();
|
||||
|
||||
foreach (var sidebarItem in sidebarItems)
|
||||
{
|
||||
if(string.IsNullOrEmpty(sidebarItem.Policy))
|
||||
continue;
|
||||
|
||||
var authResult = await AuthorizationService.AuthorizeAsync(Identity, sidebarItem.Policy);
|
||||
|
||||
if(authResult.Succeeded)
|
||||
continue;
|
||||
|
||||
itemsToRemove.Add(sidebarItem);
|
||||
}
|
||||
|
||||
foreach (var sidebarItem in itemsToRemove)
|
||||
sidebarItems.Remove(sidebarItem);
|
||||
|
||||
Items = sidebarItems
|
||||
//.Where(x => x.Permission == null || (x.Permission != null && IdentityService.HasPermission(x.Permission)))
|
||||
.GroupBy(x => x.Group ?? "")
|
||||
.OrderByDescending(x => string.IsNullOrEmpty(x.Key))
|
||||
.ToDictionary(x => x.Key, x => x.OrderBy(y => y.Priority).ToArray());
|
||||
}
|
||||
|
||||
|
||||
protected override Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (!firstRender)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
@page "/admin/system/advanced"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MoonCore.Helpers
|
||||
|
||||
@attribute [RequirePermission("admin.system.advanced")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.advanced")]
|
||||
|
||||
@inject HttpApiClient ApiClient
|
||||
@inject DownloadService DownloadService
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
@page "/admin/system/diagnose"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MoonCore.Helpers
|
||||
@using Moonlight.Shared.Http.Requests.Admin.Sys
|
||||
@using Moonlight.Shared.Http.Responses.Admin.Sys
|
||||
|
||||
@attribute [RequirePermission("admin.system.diagnose")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.diagnose")]
|
||||
|
||||
@inject HttpApiClient ApiClient
|
||||
@inject DownloadService DownloadService
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
@page "/admin/system/files"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MoonCore.Blazor.Services
|
||||
@using MoonCore.Helpers
|
||||
@using MoonCore.Blazor.Tailwind.Fm
|
||||
@using Moonlight.Client.Implementations
|
||||
|
||||
@attribute [RequirePermission("admin.system.overview")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.overview")]
|
||||
|
||||
@inject HttpApiClient ApiClient
|
||||
@inject DownloadService DownloadService
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
@page "/admin/system/hangfire"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MoonCore.Helpers
|
||||
@using Moonlight.Shared.Http.Responses.Admin.Hangfire
|
||||
@using Moonlight.Client.UI.Components
|
||||
|
||||
@attribute [RequirePermission("admin.system.hangfire")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.hangfire")]
|
||||
|
||||
@inject HttpApiClient ApiClient
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
@page "/admin/system"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using MoonCore.Helpers
|
||||
@using Moonlight.Client.UI.Components
|
||||
@using Moonlight.Shared.Http.Responses.Admin.Sys
|
||||
|
||||
@attribute [RequirePermission("admin.system.overview")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.overview")]
|
||||
|
||||
@inject HttpApiClient ApiClient
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
@page "/admin/system/theme"
|
||||
|
||||
@using MoonCore.Attributes
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using Moonlight.Client.UI.Partials.Design
|
||||
|
||||
@attribute [RequirePermission("admin.system.theme")]
|
||||
@attribute [Authorize(Policy = "permissions:admin.system.theme")]
|
||||
|
||||
<div class="mb-5">
|
||||
<NavTabs Index="1" Names="UiConstants.AdminNavNames" Links="UiConstants.AdminNavLinks" />
|
||||
|
||||
Reference in New Issue
Block a user