using DrinkRateAPI.DbEntities; using DrinkRateAPI.Services; namespace DrinkRateAPI.AuthorizationPolicies; using Microsoft.AspNetCore.Authorization; public class AdminOnlyRequirement : IAuthorizationRequirement { } public class AdminOnlyHandler : AuthorizationHandler { private readonly ApplicationUserService _applicationUserService; private readonly UserProfileService _userProfileService; public AdminOnlyHandler( ApplicationUserService applicationUserService, UserProfileService userProfileService) { _applicationUserService = applicationUserService; _userProfileService = userProfileService; } protected override async Task HandleRequirementAsync( AuthorizationHandlerContext context, AdminOnlyRequirement requirement) { var userProfile = await _applicationUserService.UserProfileByApplicationUserAsync(context.User); if (_userProfileService.IsUserProfileAdmin(userProfile)) { context.Succeed(requirement); } } }