From b5e5b0ecd2267a8ceb5c48222ae9cec621f06776 Mon Sep 17 00:00:00 2001 From: "HOME-LAPTOP\\kshkulev" Date: Thu, 13 Nov 2025 09:38:54 +0900 Subject: [PATCH] Add extension to ClaimsPrincipal --- Hcs.WebApp/Components/Pages/Campaigns.razor | 2 +- .../Components/Pages/Management/Users.razor | 2 +- Hcs.WebApp/Components/Pages/Operations.razor | 2 +- .../Components/Pages/Registry/Common.razor | 2 +- .../Components/Pages/Registry/Private.razor | 2 +- Hcs.WebApp/Components/_Imports.razor | 1 + Hcs.WebApp/Utils/ClaimsPrincipalExtensions.cs | 18 ++++++++++++++++++ 7 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 Hcs.WebApp/Utils/ClaimsPrincipalExtensions.cs diff --git a/Hcs.WebApp/Components/Pages/Campaigns.razor b/Hcs.WebApp/Components/Pages/Campaigns.razor index 0a49f70..ab00752 100644 --- a/Hcs.WebApp/Components/Pages/Campaigns.razor +++ b/Hcs.WebApp/Components/Pages/Campaigns.razor @@ -76,7 +76,7 @@ ChangeState(PageState.Loading); var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE)) + if (state.User.IsOperatorOrHigher()) { campaigns = await HeadquartersService.GetCampaignsAsync(); diff --git a/Hcs.WebApp/Components/Pages/Management/Users.razor b/Hcs.WebApp/Components/Pages/Management/Users.razor index c14640a..4242600 100644 --- a/Hcs.WebApp/Components/Pages/Management/Users.razor +++ b/Hcs.WebApp/Components/Pages/Management/Users.razor @@ -72,7 +72,7 @@ StateHasChanged(); var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE)) + if (state.User.IsAdministrator()) { currentUserId = state.User.FindFirst(ClaimTypes.NameIdentifier)!.Value; usersWithRoles = await UsersService.GetUsersWithRoleAsync(); diff --git a/Hcs.WebApp/Components/Pages/Operations.razor b/Hcs.WebApp/Components/Pages/Operations.razor index 15aa4c9..16d30d6 100644 --- a/Hcs.WebApp/Components/Pages/Operations.razor +++ b/Hcs.WebApp/Components/Pages/Operations.razor @@ -57,7 +57,7 @@ ChangeState(PageState.Loading); var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE)) + if (state.User.IsOperatorOrHigher()) { operations = await HeadquartersService.GetOperationsAsync(); diff --git a/Hcs.WebApp/Components/Pages/Registry/Common.razor b/Hcs.WebApp/Components/Pages/Registry/Common.razor index 7800a22..469cd60 100644 --- a/Hcs.WebApp/Components/Pages/Registry/Common.razor +++ b/Hcs.WebApp/Components/Pages/Registry/Common.razor @@ -80,7 +80,7 @@ var finalState = SyncedPageState.Idle; var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE)) + if (state.User.IsOperatorOrHigher()) { var operationInProgress = await HeadquartersService.HasActiveCampaignAsync(Campaign.CampaignType.ExportCommonRegistryElements_15_7_0_1); if (operationInProgress) diff --git a/Hcs.WebApp/Components/Pages/Registry/Private.razor b/Hcs.WebApp/Components/Pages/Registry/Private.razor index 3f78f9c..32fe7a4 100644 --- a/Hcs.WebApp/Components/Pages/Registry/Private.razor +++ b/Hcs.WebApp/Components/Pages/Registry/Private.razor @@ -80,7 +80,7 @@ var finalState = SyncedPageState.Idle; var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE)) + if (state.User.IsOperatorOrHigher()) { var operationInProgress = await HeadquartersService.HasActiveCampaignAsync(Campaign.CampaignType.ExportPrivateRegistryElements_15_7_0_1); if (operationInProgress) diff --git a/Hcs.WebApp/Components/_Imports.razor b/Hcs.WebApp/Components/_Imports.razor index a7b667c..58c4cfc 100644 --- a/Hcs.WebApp/Components/_Imports.razor +++ b/Hcs.WebApp/Components/_Imports.razor @@ -6,6 +6,7 @@ @using Hcs.WebApp.Components.Shared @using Hcs.WebApp.Data.Hcs @using Hcs.WebApp.Data.Identity +@using Hcs.WebApp.Utils @using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing diff --git a/Hcs.WebApp/Utils/ClaimsPrincipalExtensions.cs b/Hcs.WebApp/Utils/ClaimsPrincipalExtensions.cs new file mode 100644 index 0000000..4c009be --- /dev/null +++ b/Hcs.WebApp/Utils/ClaimsPrincipalExtensions.cs @@ -0,0 +1,18 @@ +using Hcs.WebApp.Data.Identity; +using System.Security.Claims; + +namespace Hcs.WebApp.Utils +{ + public static class ClaimsPrincipalExtensions + { + public static bool IsAdministrator(this ClaimsPrincipal claimsPrincipal) + { + return claimsPrincipal.IsInRole(AppRole.ADMINISTRATOR_TYPE); + } + + public static bool IsOperatorOrHigher(this ClaimsPrincipal claimsPrincipal) + { + return claimsPrincipal.IsInRole(AppRole.OPERATOR_TYPE) || claimsPrincipal.IsInRole(AppRole.ADMINISTRATOR_TYPE); + } + } +}