using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Domain.Enums; using MediatR.Behaviors.Authorization; namespace cuqmbr.TravelGuide.Application.Countries.Queries.GetCountriesPage; public class GetCountriesPageQueryAuthorizer : AbstractRequestAuthorizer { private readonly SessionUserService _sessionUserService; public GetCountriesPageQueryAuthorizer(SessionUserService sessionUserService) { _sessionUserService = sessionUserService; } public override void BuildPolicy(GetCountriesPageQuery request) { UseRequirement(new MustBeAuthenticatedRequirement { IsAuthenticated = _sessionUserService.IsAuthenticated }); UseRequirement(new MustBeInAnyOfRolesRequirement { RequiredRoles = [IdentityRole.Administrator, IdentityRole.CompanyOwner], UserRoles = _sessionUserService.Roles }); } }