diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor index 760e5a1..5b2e99f 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor @@ -23,7 +23,10 @@
- + @if (CanDelete) + { + + } @if (CanEdit) { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.cs index ebb1ea3..a1e0f28 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.cs @@ -12,6 +12,7 @@ public partial class UserRow [Parameter] public UserDto User { get; set; } = new(); [Parameter] public List Roles { get; set; } = []; [Parameter] public bool CanEdit { get; set; } = true; + [Parameter] public bool CanDelete { get; set; } = true; [Parameter] public bool IsEditing { get; set; } = false; [Parameter] public EventCallback OnRemove { get; set; } [Parameter] public EventCallback OnSubmit { get; set; } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.css index b567a84..d82d6f8 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRow.razor.css @@ -1,7 +1,7 @@ .row { height: 64px; display: grid; - grid-template-columns: 48px 1fr 1fr 1fr auto; + grid-template-columns: 48px 1fr 1fr 1fr 100px; grid-gap: 8px; padding: 0 8px; background: var(--input-secondary); @@ -9,25 +9,24 @@ border-radius: var(--big-radius); } -.row > * { - align-content: center; -} + .row > * { + align-content: center; + max-width: 160px; + width: 100%; + } .icon ::deep svg { fill: var(--line); } -.role { - min-width: 160px; - width: fit-content; -} - ::deep .input-name, ::deep .input-name[disabled], ::deep .input-password, ::deep .input-password[disabled], ::deep .input-password::placeholder { color: var(--white); + max-width: 160px; + width: 100%; } ::deep .input-name, @@ -61,12 +60,13 @@ flex-direction: row; gap: 8px; height:auto; + justify-content: end; } .buttons > * { border: none; outline: none; - margin: auto; + margin: auto 0; height: 28px; width: 28px; background: none; diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor index fff156a..dbf9d6b 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor @@ -13,7 +13,7 @@ @ResourcesKey.GamesIdeas - +
+ } } else diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs index fc26089..bd55aba 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs @@ -1,14 +1,19 @@ using GameIdeas.BlazorApp.Pages.Users.Filters; using GameIdeas.BlazorApp.Pages.Users.Gateways; using GameIdeas.BlazorApp.Shared.Components.Popup; +using GameIdeas.Shared.Constants; using GameIdeas.Shared.Dto; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using System.Security.Claims; namespace GameIdeas.BlazorApp.Pages.Users; public partial class Users { [Inject] private IUserGateway UserGateway { get; set; } = default!; + [Inject] private AuthenticationStateProvider StateProvider { get; set; } = default!; + [Inject] private NavigationManager NavigationManager { get; set; } = default!; private Popup? Popup; private bool IsLoading = false; @@ -18,9 +23,19 @@ public partial class Users private int CurrentPage = 1; private UserDto UserAdd = new(); private UserDto? UserDelete; - + private string? currentUserId; protected override async Task OnInitializedAsync() { + var authState = await StateProvider.GetAuthenticationStateAsync(); + currentUserId = authState.User.FindFirstValue(ClaimTypes.Sid); + + if (authState.User.FindFirstValue(ClaimTypes.Role) != GlobalConstants.ADMINISTRATOR || string.IsNullOrEmpty(currentUserId)) + { + NavigationManager.NavigateTo("/Unauthorized"); + return; + } + + await FetchData(); await base.OnInitializedAsync(); } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.css index 0bbbd2d..f306d94 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.css @@ -1,6 +1,6 @@ .header-content { + margin: 0 auto; display: flex; - flex-direction: row; gap: 8px; }