add authorization requirements
All checks were successful
/ build (push) Successful in 7m55s
/ tests (push) Successful in 40s
/ build-docker (push) Successful in 8m27s

This commit is contained in:
cuqmbr 2025-06-03 18:00:07 +03:00
parent 120963f3cc
commit 0508c89c2d
Signed by: cuqmbr
GPG Key ID: 0AA446880C766199
70 changed files with 641 additions and 331 deletions

View File

@ -22,9 +22,10 @@ public class AddAddressCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -22,7 +22,7 @@ public class DeleteAddressCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateAddressCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -19,12 +19,13 @@ public class GetAddressQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -19,12 +19,13 @@ public class GetAddressesPageQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.AddAircraft; namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.AddAircraft;
@ -9,23 +9,34 @@ public class AddAircraftCommandAuthorizer :
AbstractRequestAuthorizer<AddAircraftCommand> AbstractRequestAuthorizer<AddAircraftCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public AddAircraftCommandAuthorizer(SessionUserService sessionUserService) public AddAircraftCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(AddAircraftCommand request) public override void BuildPolicy(AddAircraftCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.DeleteAircraft; namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.DeleteAircraft;
@ -9,23 +9,34 @@ public class DeleteAircraftCommandAuthorizer :
AbstractRequestAuthorizer<DeleteAircraftCommand> AbstractRequestAuthorizer<DeleteAircraftCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public DeleteAircraftCommandAuthorizer(SessionUserService sessionUserService) public DeleteAircraftCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(DeleteAircraftCommand request) public override void BuildPolicy(DeleteAircraftCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.UpdateAircraft; namespace cuqmbr.TravelGuide.Application.Aircrafts.Commands.UpdateAircraft;
@ -9,23 +9,34 @@ public class UpdateAircraftCommandAuthorizer :
AbstractRequestAuthorizer<UpdateAircraftCommand> AbstractRequestAuthorizer<UpdateAircraftCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateAircraftCommandAuthorizer(SessionUserService sessionUserService) public UpdateAircraftCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateAircraftCommand request) public override void BuildPolicy(UpdateAircraftCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Aircrafts.Queries.GetAircraft; namespace cuqmbr.TravelGuide.Application.Aircrafts.Queries.GetAircraft;
@ -9,23 +9,34 @@ public class GetAircraftQueryAuthorizer :
AbstractRequestAuthorizer<GetAircraftQuery> AbstractRequestAuthorizer<GetAircraftQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetAircraftQueryAuthorizer(SessionUserService sessionUserService) public GetAircraftQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetAircraftQuery request) public override void BuildPolicy(GetAircraftQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Aircrafts.Queries.GetAircraftsPage; namespace cuqmbr.TravelGuide.Application.Aircrafts.Queries.GetAircraftsPage;
@ -9,23 +9,34 @@ public class GetAircraftsPageQueryAuthorizer :
AbstractRequestAuthorizer<GetAircraftsPageQuery> AbstractRequestAuthorizer<GetAircraftsPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetAircraftsPageQueryAuthorizer(SessionUserService sessionUserService) public GetAircraftsPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetAircraftsPageQuery request) public override void BuildPolicy(GetAircraftsPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,5 +1,4 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
// using cuqmbr.TravelGuide.Application.Common.Services;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RenewAccessToken; namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RenewAccessToken;
@ -7,19 +6,8 @@ namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RenewAccessToken
public class RenewAccessTokenCommandAuthorizer : public class RenewAccessTokenCommandAuthorizer :
AbstractRequestAuthorizer<RenewAccessTokenCommand> AbstractRequestAuthorizer<RenewAccessTokenCommand>
{ {
// private readonly SessionUserService _sessionUserService;
//
// public RenewAccessTokenCommandAuthorizer(SessionUserService currentUserService)
// {
// _sessionUserService = currentUserService;
// }
public override void BuildPolicy(RenewAccessTokenCommand request) public override void BuildPolicy(RenewAccessTokenCommand request)
{ {
UseRequirement(new AllowAllRequirement()); UseRequirement(new AllowAllRequirement());
// UseRequirement(new MustBeAuthenticatedRequirement
// {
// IsAuthenticated = _sessionUserService.IsAuthenticated
// });
} }
} }

View File

@ -1,4 +1,5 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Services;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RevokeRefreshToken; namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RevokeRefreshToken;
@ -6,8 +7,18 @@ namespace cuqmbr.TravelGuide.Application.Authenticaion.Commands.RevokeRefreshTok
public class RevokeRefreshTokenCommandAuthorizer : public class RevokeRefreshTokenCommandAuthorizer :
AbstractRequestAuthorizer<RevokeRefreshTokenCommand> AbstractRequestAuthorizer<RevokeRefreshTokenCommand>
{ {
private readonly SessionUserService _sessionUserService;
public RevokeRefreshTokenCommandAuthorizer(SessionUserService currentUserService)
{
_sessionUserService = currentUserService;
}
public override void BuildPolicy(RevokeRefreshTokenCommand request) public override void BuildPolicy(RevokeRefreshTokenCommand request)
{ {
UseRequirement(new AllowAllRequirement()); UseRequirement(new MustBeAuthenticatedRequirement
{
IsAuthenticated = _sessionUserService.IsAuthenticated
});
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Buses.Commands.AddBus; namespace cuqmbr.TravelGuide.Application.Buses.Commands.AddBus;
@ -9,23 +9,34 @@ public class AddBusCommandAuthorizer :
AbstractRequestAuthorizer<AddBusCommand> AbstractRequestAuthorizer<AddBusCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public AddBusCommandAuthorizer(SessionUserService sessionUserService) public AddBusCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(AddBusCommand request) public override void BuildPolicy(AddBusCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Buses.Commands.DeleteBus; namespace cuqmbr.TravelGuide.Application.Buses.Commands.DeleteBus;
@ -9,23 +9,34 @@ public class DeleteBusCommandAuthorizer :
AbstractRequestAuthorizer<DeleteBusCommand> AbstractRequestAuthorizer<DeleteBusCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public DeleteBusCommandAuthorizer(SessionUserService sessionUserService) public DeleteBusCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(DeleteBusCommand request) public override void BuildPolicy(DeleteBusCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Buses.Commands.UpdateBus; namespace cuqmbr.TravelGuide.Application.Buses.Commands.UpdateBus;
@ -9,23 +9,34 @@ public class UpdateBusCommandAuthorizer :
AbstractRequestAuthorizer<UpdateBusCommand> AbstractRequestAuthorizer<UpdateBusCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateBusCommandAuthorizer(SessionUserService sessionUserService) public UpdateBusCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateBusCommand request) public override void BuildPolicy(UpdateBusCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Buses.Queries.GetBus; namespace cuqmbr.TravelGuide.Application.Buses.Queries.GetBus;
@ -9,23 +9,34 @@ public class GetBusQueryAuthorizer :
AbstractRequestAuthorizer<GetBusQuery> AbstractRequestAuthorizer<GetBusQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetBusQueryAuthorizer(SessionUserService sessionUserService) public GetBusQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetBusQuery request) public override void BuildPolicy(GetBusQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Buses.Queries.GetBusesPage; namespace cuqmbr.TravelGuide.Application.Buses.Queries.GetBusesPage;
@ -9,23 +9,34 @@ public class GetBusesPageQueryAuthorizer :
AbstractRequestAuthorizer<GetBusesPageQuery> AbstractRequestAuthorizer<GetBusesPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetBusesPageQueryAuthorizer(SessionUserService sessionUserService) public GetBusesPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetBusesPageQuery request) public override void BuildPolicy(GetBusesPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -22,7 +22,7 @@ public class AddCityCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class DeleteCityCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateCityCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -19,12 +19,13 @@ public class GetCitiesPageQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -19,12 +19,13 @@ public class GetCityQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -1,31 +1,22 @@
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
using Microsoft.Extensions.Localization;
using cuqmbr.TravelGuide.Domain.Enums; using cuqmbr.TravelGuide.Domain.Enums;
namespace cuqmbr.TravelGuide.Application.Common.Authorization; namespace cuqmbr.TravelGuide.Application.Common.Authorization;
public class MustBeInRolesRequirement : IAuthorizationRequirement public class MustBeInAnyOfRolesRequirement : IAuthorizationRequirement
{ {
public ICollection<IdentityRole> UserRoles { get; init; } public ICollection<IdentityRole> UserRoles { get; init; }
public ICollection<IdentityRole> RequiredRoles { get; init; } public ICollection<IdentityRole> RequiredRoles { get; init; }
class MustBeInRolesRequirementHandler : class MustBeInAnyOfRolesRequirementHandler :
IAuthorizationHandler<MustBeInRolesRequirement> IAuthorizationHandler<MustBeInAnyOfRolesRequirement>
{ {
private readonly IStringLocalizer _localizer;
public MustBeInRolesRequirementHandler(IStringLocalizer localizer)
{
_localizer = localizer;
}
public Task<AuthorizationResult> Handle( public Task<AuthorizationResult> Handle(
MustBeInRolesRequirement request, MustBeInAnyOfRolesRequirement request,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
var isUserInRequiredRoles = var isUserInRequiredRoles = request.UserRoles
request.UserRoles?.Any(ur => request.RequiredRoles.Contains(ur)) .Any(ur => request.RequiredRoles.Contains(ur));
?? false;
if (!isUserInRequiredRoles) if (!isUserInRequiredRoles)
{ {

View File

@ -0,0 +1,42 @@
using MediatR.Behaviors.Authorization;
using cuqmbr.TravelGuide.Domain.Enums;
namespace cuqmbr.TravelGuide.Application.Common.Authorization;
public class MustBeObjectOwnerOrAdminRequirement : IAuthorizationRequirement
{
public ICollection<IdentityRole>? UserRoles { get; init; }
public Guid? UserGuid { get; init; }
public Guid? RequiredGuid { get; init; }
class MustBeObjectOwnerOrAdminRequirementHandler :
IAuthorizationHandler<MustBeObjectOwnerOrAdminRequirement>
{
public Task<AuthorizationResult> Handle(
MustBeObjectOwnerOrAdminRequirement request,
CancellationToken cancellationToken)
{
var isAdmin = request?.UserRoles
?.Any(ur => ur.Equals(IdentityRole.Administrator)) ??
false;
if (isAdmin)
{
return Task.FromResult(AuthorizationResult.Succeed());
}
if (request?.UserGuid == null || request?.RequiredGuid == null)
{
return Task.FromResult(AuthorizationResult.Fail());
}
if (request.UserGuid == request.RequiredGuid)
{
return Task.FromResult(AuthorizationResult.Succeed());
}
return Task.FromResult(AuthorizationResult.Fail());
}
}
}

View File

@ -19,10 +19,10 @@ public class AddCompanyCommandAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -19,10 +19,10 @@ public class DeleteCompanyCommandAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Companies.Commands.UpdateCompany; namespace cuqmbr.TravelGuide.Application.Companies.Commands.UpdateCompany;
@ -9,23 +9,34 @@ public class UpdateCompanyCommandAuthorizer :
AbstractRequestAuthorizer<UpdateCompanyCommand> AbstractRequestAuthorizer<UpdateCompanyCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateCompanyCommandAuthorizer(SessionUserService sessionUserService) public UpdateCompanyCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateCompanyCommand request) public override void BuildPolicy(UpdateCompanyCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,4 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompaniesPage; namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompaniesPage;
@ -8,24 +6,8 @@ namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompaniesPage;
public class GetCompaniesPageQueryAuthorizer : public class GetCompaniesPageQueryAuthorizer :
AbstractRequestAuthorizer<GetCompaniesPageQuery> AbstractRequestAuthorizer<GetCompaniesPageQuery>
{ {
private readonly SessionUserService _sessionUserService;
public GetCompaniesPageQueryAuthorizer(SessionUserService sessionUserService)
{
_sessionUserService = sessionUserService;
}
public override void BuildPolicy(GetCompaniesPageQuery request) public override void BuildPolicy(GetCompaniesPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new AllowAllRequirement());
{
IsAuthenticated= _sessionUserService.IsAuthenticated
});
UseRequirement(new MustBeInRolesRequirement
{
RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles
});
} }
} }

View File

@ -1,6 +1,4 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompany; namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompany;
@ -8,24 +6,8 @@ namespace cuqmbr.TravelGuide.Application.Companies.Queries.GetCompany;
public class GetCompanyQueryAuthorizer : public class GetCompanyQueryAuthorizer :
AbstractRequestAuthorizer<GetCompanyQuery> AbstractRequestAuthorizer<GetCompanyQuery>
{ {
private readonly SessionUserService _sessionUserService;
public GetCompanyQueryAuthorizer(SessionUserService sessionUserService)
{
_sessionUserService = sessionUserService;
}
public override void BuildPolicy(GetCompanyQuery request) public override void BuildPolicy(GetCompanyQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new AllowAllRequirement());
{
IsAuthenticated= _sessionUserService.IsAuthenticated
});
UseRequirement(new MustBeInRolesRequirement
{
RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles
});
} }
} }

View File

@ -22,7 +22,7 @@ public class AddCountryCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class DeleteCountryCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateCountryCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -19,12 +19,13 @@ public class GetCountriesPageQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -19,12 +19,13 @@ public class GetCountryQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Employees.Commands.AddEmployee; namespace cuqmbr.TravelGuide.Application.Employees.Commands.AddEmployee;
@ -9,23 +9,34 @@ public class AddEmployeeCommandAuthorizer :
AbstractRequestAuthorizer<AddEmployeeCommand> AbstractRequestAuthorizer<AddEmployeeCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public AddEmployeeCommandAuthorizer(SessionUserService sessionUserService) public AddEmployeeCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(AddEmployeeCommand request) public override void BuildPolicy(AddEmployeeCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Employees.Commands.DeleteEmployee; namespace cuqmbr.TravelGuide.Application.Employees.Commands.DeleteEmployee;
@ -9,23 +9,34 @@ public class DeleteEmployeeCommandAuthorizer :
AbstractRequestAuthorizer<DeleteEmployeeCommand> AbstractRequestAuthorizer<DeleteEmployeeCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public DeleteEmployeeCommandAuthorizer(SessionUserService sessionUserService) public DeleteEmployeeCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(DeleteEmployeeCommand request) public override void BuildPolicy(DeleteEmployeeCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var employee = _unitOfWork.EmployeeRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = employee?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Employees.Commands.UpdateEmployee; namespace cuqmbr.TravelGuide.Application.Employees.Commands.UpdateEmployee;
@ -9,23 +9,34 @@ public class UpdateEmployeeCommandAuthorizer :
AbstractRequestAuthorizer<UpdateEmployeeCommand> AbstractRequestAuthorizer<UpdateEmployeeCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateEmployeeCommandAuthorizer(SessionUserService sessionUserService) public UpdateEmployeeCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateEmployeeCommand request) public override void BuildPolicy(UpdateEmployeeCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Employees.Queries.GetEmployee; namespace cuqmbr.TravelGuide.Application.Employees.Queries.GetEmployee;
@ -9,23 +9,34 @@ public class GetEmployeeQueryAuthorizer :
AbstractRequestAuthorizer<GetEmployeeQuery> AbstractRequestAuthorizer<GetEmployeeQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetEmployeeQueryAuthorizer(SessionUserService sessionUserService) public GetEmployeeQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetEmployeeQuery request) public override void BuildPolicy(GetEmployeeQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var employee = _unitOfWork.EmployeeRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = employee?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Employees.Queries.GetEmployeesPage; namespace cuqmbr.TravelGuide.Application.Employees.Queries.GetEmployeesPage;
@ -9,23 +9,34 @@ public class GetEmployeesPageQueryAuthorizer :
AbstractRequestAuthorizer<GetEmployeesPageQuery> AbstractRequestAuthorizer<GetEmployeesPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetEmployeesPageQueryAuthorizer(SessionUserService sessionUserService) public GetEmployeesPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetEmployeesPageQuery request) public override void BuildPolicy(GetEmployeesPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -23,7 +23,7 @@ public class AddAccountCommandAuthorizer :
IsAuthenticated= _sessionAccountService.IsAuthenticated IsAuthenticated= _sessionAccountService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionAccountService.Roles UserRoles = _sessionAccountService.Roles

View File

@ -23,7 +23,7 @@ public class DeleteAccountCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateAccountCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class GetAccountQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class GetAccountsPageQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class GetRolesPageQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class AddRegionCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class DeleteRegionCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateRegionCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,9 +22,10 @@ public class GetRegionQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -22,9 +22,10 @@ public class GetRegionsPageQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -19,12 +19,13 @@ public class AddRouteCommandAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -22,7 +22,7 @@ public class DeleteRouteCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -22,7 +22,7 @@ public class UpdateRouteCommandAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -19,12 +19,13 @@ public class GetRouteQueryAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -22,9 +22,10 @@ public class GetRoutesPageQueryAuthorizer :
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated= _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles =
[IdentityRole.Administrator, IdentityRole.CompanyOwner],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles
}); });
} }

View File

@ -19,10 +19,10 @@ public class AddTicketGroupCommandAuthorizer :
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement UseRequirement(new MustBeInAnyOfRolesRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles UserRoles = _sessionUserService.Roles

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.TicketGroups.Queries.GetTicketGroup; namespace cuqmbr.TravelGuide.Application.TicketGroups.Queries.GetTicketGroup;
@ -9,23 +9,34 @@ public class GetTicketGroupQueryAuthorizer :
AbstractRequestAuthorizer<GetTicketGroupQuery> AbstractRequestAuthorizer<GetTicketGroupQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetTicketGroupQueryAuthorizer(SessionUserService sessionUserService) public GetTicketGroupQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetTicketGroupQuery request) public override void BuildPolicy(GetTicketGroupQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var ticketGroup = _unitOfWork.TicketGroupRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Account!,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = ticketGroup?.Account?.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.TicketGroups.Queries.GetTicketGroupsPage; namespace cuqmbr.TravelGuide.Application.TicketGroups.Queries.GetTicketGroupsPage;
@ -9,23 +9,33 @@ public class GetTicketGroupsPageQueryAuthorizer :
AbstractRequestAuthorizer<GetTicketGroupsPageQuery> AbstractRequestAuthorizer<GetTicketGroupsPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetTicketGroupsPageQueryAuthorizer(SessionUserService sessionUserService) public GetTicketGroupsPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetTicketGroupsPageQuery request) public override void BuildPolicy(GetTicketGroupsPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var account = _unitOfWork.AccountRepository
.GetOneAsync(
e => e.Guid == request.AccountGuid, CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = account?.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Trains.Commands.AddTrain; namespace cuqmbr.TravelGuide.Application.Trains.Commands.AddTrain;
@ -9,23 +9,34 @@ public class AddTrainCommandAuthorizer :
AbstractRequestAuthorizer<AddTrainCommand> AbstractRequestAuthorizer<AddTrainCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public AddTrainCommandAuthorizer(SessionUserService sessionUserService) public AddTrainCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(AddTrainCommand request) public override void BuildPolicy(AddTrainCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Trains.Commands.DeleteTrain; namespace cuqmbr.TravelGuide.Application.Trains.Commands.DeleteTrain;
@ -9,23 +9,34 @@ public class DeleteTrainCommandAuthorizer :
AbstractRequestAuthorizer<DeleteTrainCommand> AbstractRequestAuthorizer<DeleteTrainCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public DeleteTrainCommandAuthorizer(SessionUserService sessionUserService) public DeleteTrainCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(DeleteTrainCommand request) public override void BuildPolicy(DeleteTrainCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Trains.Commands.UpdateTrain; namespace cuqmbr.TravelGuide.Application.Trains.Commands.UpdateTrain;
@ -9,23 +9,34 @@ public class UpdateTrainCommandAuthorizer :
AbstractRequestAuthorizer<UpdateTrainCommand> AbstractRequestAuthorizer<UpdateTrainCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateTrainCommandAuthorizer(SessionUserService sessionUserService) public UpdateTrainCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateTrainCommand request) public override void BuildPolicy(UpdateTrainCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Trains.Queries.GetTrain; namespace cuqmbr.TravelGuide.Application.Trains.Queries.GetTrain;
@ -9,23 +9,34 @@ public class GetTrainQueryAuthorizer :
AbstractRequestAuthorizer<GetTrainQuery> AbstractRequestAuthorizer<GetTrainQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetTrainQueryAuthorizer(SessionUserService sessionUserService) public GetTrainQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetTrainQuery request) public override void BuildPolicy(GetTrainQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicel = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicel?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.Trains.Queries.GetTrainsPage; namespace cuqmbr.TravelGuide.Application.Trains.Queries.GetTrainsPage;
@ -9,23 +9,34 @@ public class GetTrainsPageQueryAuthorizer :
AbstractRequestAuthorizer<GetTrainsPageQuery> AbstractRequestAuthorizer<GetTrainsPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetTrainsPageQueryAuthorizer(SessionUserService sessionUserService) public GetTrainsPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetTrainsPageQuery request) public override void BuildPolicy(GetTrainsPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var company = _unitOfWork.CompanyRepository
.GetOneAsync(
e => e.Guid == request.CompanyGuid, e => e.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = company?.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,4 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application namespace cuqmbr.TravelGuide.Application
@ -9,25 +7,8 @@ namespace cuqmbr.TravelGuide.Application
public class SearchAllQueryAuthorizer : public class SearchAllQueryAuthorizer :
AbstractRequestAuthorizer<SearchAllQuery> AbstractRequestAuthorizer<SearchAllQuery>
{ {
private readonly SessionUserService _sessionUserService;
public SearchAllQueryAuthorizer(
SessionUserService sessionUserService)
{
_sessionUserService = sessionUserService;
}
public override void BuildPolicy(SearchAllQuery request) public override void BuildPolicy(SearchAllQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new AllowAllRequirement());
{
IsAuthenticated= _sessionUserService.IsAuthenticated
});
UseRequirement(new MustBeInRolesRequirement
{
RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles
});
} }
} }

View File

@ -1,6 +1,4 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application namespace cuqmbr.TravelGuide.Application
@ -9,25 +7,8 @@ namespace cuqmbr.TravelGuide.Application
public class SearchShortestQueryAuthorizer : public class SearchShortestQueryAuthorizer :
AbstractRequestAuthorizer<SearchShortestQuery> AbstractRequestAuthorizer<SearchShortestQuery>
{ {
private readonly SessionUserService _sessionUserService;
public SearchShortestQueryAuthorizer(
SessionUserService sessionUserService)
{
_sessionUserService = sessionUserService;
}
public override void BuildPolicy(SearchShortestQuery request) public override void BuildPolicy(SearchShortestQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new AllowAllRequirement());
{
IsAuthenticated= _sessionUserService.IsAuthenticated
});
UseRequirement(new MustBeInRolesRequirement
{
RequiredRoles = [IdentityRole.Administrator],
UserRoles = _sessionUserService.Roles
});
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.VehicleEnrollments namespace cuqmbr.TravelGuide.Application.VehicleEnrollments
@ -10,23 +10,51 @@ public class AddVehicleEnrollmentCommandAuthorizer :
AbstractRequestAuthorizer<AddVehicleEnrollmentCommand> AbstractRequestAuthorizer<AddVehicleEnrollmentCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public AddVehicleEnrollmentCommandAuthorizer(SessionUserService sessionUserService) public AddVehicleEnrollmentCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(AddVehicleEnrollmentCommand request) public override void BuildPolicy(AddVehicleEnrollmentCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicle = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.VehicleGuid, e => e.Company.Account,
CancellationToken.None)
.Result;
var employees = _unitOfWork.EmployeeRepository
.GetPageAsync(
e => request.EmployeeGuids.Contains(e.Guid),
e => e.Company.Account,
1, request.EmployeeGuids.Count, CancellationToken.None)
.Result.Items;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicle?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
foreach (var employee in employees)
{
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{
UserRoles = _sessionUserService.Roles,
RequiredGuid = employee.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
});
}
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.VehicleEnrollments.Commands.DeleteVehicleEnrollment; namespace cuqmbr.TravelGuide.Application.VehicleEnrollments.Commands.DeleteVehicleEnrollment;
@ -9,23 +9,34 @@ public class DeleteVehicleEnrollmentCommandAuthorizer :
AbstractRequestAuthorizer<DeleteVehicleEnrollmentCommand> AbstractRequestAuthorizer<DeleteVehicleEnrollmentCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public DeleteVehicleEnrollmentCommandAuthorizer(SessionUserService sessionUserService) public DeleteVehicleEnrollmentCommandAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(DeleteVehicleEnrollmentCommand request) public override void BuildPolicy(DeleteVehicleEnrollmentCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicelEnrollment = _unitOfWork.VehicleEnrollmentRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Vehicle.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicelEnrollment?.Vehicle.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.VehicleEnrollments namespace cuqmbr.TravelGuide.Application.VehicleEnrollments
@ -10,24 +10,51 @@ public class UpdateVehicleEnrollmentCommandAuthorizer :
AbstractRequestAuthorizer<UpdateVehicleEnrollmentCommand> AbstractRequestAuthorizer<UpdateVehicleEnrollmentCommand>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public UpdateVehicleEnrollmentCommandAuthorizer( public UpdateVehicleEnrollmentCommandAuthorizer(
SessionUserService sessionUserService) SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(UpdateVehicleEnrollmentCommand request) public override void BuildPolicy(UpdateVehicleEnrollmentCommand request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicleEnrollment = _unitOfWork.VehicleEnrollmentRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Vehicle.Company.Account,
CancellationToken.None)
.Result;
var employees = _unitOfWork.EmployeeRepository
.GetPageAsync(
e => request.EmployeeGuids.Contains(e.Guid),
e => e.Company.Account,
1, request.EmployeeGuids.Count, CancellationToken.None)
.Result.Items;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicleEnrollment?.Vehicle.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
foreach (var employee in employees)
{
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{
UserRoles = _sessionUserService.Roles,
RequiredGuid = employee.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
});
}
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.VehicleEnrollments namespace cuqmbr.TravelGuide.Application.VehicleEnrollments
@ -10,23 +10,34 @@ public class GetVehicleEnrollmentQueryAuthorizer :
AbstractRequestAuthorizer<GetVehicleEnrollmentQuery> AbstractRequestAuthorizer<GetVehicleEnrollmentQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetVehicleEnrollmentQueryAuthorizer(SessionUserService sessionUserService) public GetVehicleEnrollmentQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetVehicleEnrollmentQuery request) public override void BuildPolicy(GetVehicleEnrollmentQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicelEnrollment = _unitOfWork.VehicleEnrollmentRepository
.GetOneAsync(
e => e.Guid == request.Guid, e => e.Vehicle.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicelEnrollment?.Vehicle.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }

View File

@ -1,6 +1,6 @@
using cuqmbr.TravelGuide.Application.Common.Authorization; using cuqmbr.TravelGuide.Application.Common.Authorization;
using cuqmbr.TravelGuide.Application.Common.Persistence;
using cuqmbr.TravelGuide.Application.Common.Services; using cuqmbr.TravelGuide.Application.Common.Services;
using cuqmbr.TravelGuide.Domain.Enums;
using MediatR.Behaviors.Authorization; using MediatR.Behaviors.Authorization;
namespace cuqmbr.TravelGuide.Application.VehicleEnrollments.Queries.GetVehicleEnrollmentsPage; namespace cuqmbr.TravelGuide.Application.VehicleEnrollments.Queries.GetVehicleEnrollmentsPage;
@ -9,23 +9,34 @@ public class GetVehicleEnrollmentsPageQueryAuthorizer :
AbstractRequestAuthorizer<GetVehicleEnrollmentsPageQuery> AbstractRequestAuthorizer<GetVehicleEnrollmentsPageQuery>
{ {
private readonly SessionUserService _sessionUserService; private readonly SessionUserService _sessionUserService;
private readonly UnitOfWork _unitOfWork;
public GetVehicleEnrollmentsPageQueryAuthorizer(SessionUserService sessionUserService) public GetVehicleEnrollmentsPageQueryAuthorizer(
SessionUserService sessionUserService,
UnitOfWork unitOfWork)
{ {
_sessionUserService = sessionUserService; _sessionUserService = sessionUserService;
_unitOfWork = unitOfWork;
} }
public override void BuildPolicy(GetVehicleEnrollmentsPageQuery request) public override void BuildPolicy(GetVehicleEnrollmentsPageQuery request)
{ {
UseRequirement(new MustBeAuthenticatedRequirement UseRequirement(new MustBeAuthenticatedRequirement
{ {
IsAuthenticated= _sessionUserService.IsAuthenticated IsAuthenticated = _sessionUserService.IsAuthenticated
}); });
UseRequirement(new MustBeInRolesRequirement var vehicles = _unitOfWork.VehicleRepository
.GetOneAsync(
e => e.Guid == request.VehicleGuid, e => e.Company.Account,
CancellationToken.None)
.Result;
UseRequirement(new MustBeObjectOwnerOrAdminRequirement
{ {
RequiredRoles = [IdentityRole.Administrator], UserRoles = _sessionUserService.Roles,
UserRoles = _sessionUserService.Roles RequiredGuid = vehicles?.Company.Account.Guid,
UserGuid = _sessionUserService.Guid
}); });
} }
} }