fix: fix bug 404 in jwt config

This commit is contained in:
Meysam Hadeli 2025-04-11 18:21:23 +03:30
parent d705ff12f2
commit 5e2c92fda6
29 changed files with 68 additions and 36 deletions

View File

@ -11,6 +11,7 @@ using BuildingBlocks.Core.Event;
using BuildingBlocks.Core.Model; using BuildingBlocks.Core.Model;
using BuildingBlocks.EventStoreDB.Repository; using BuildingBlocks.EventStoreDB.Repository;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -51,7 +52,7 @@ public class CreateBookingEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateBooking") .WithName("CreateBooking")
.WithApiVersionSet(builder.NewApiVersionSet("Booking").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Booking").Build())
.Produces<CreateBookingResponseDto>() .Produces<CreateBookingResponseDto>()

View File

@ -6,6 +6,7 @@ using BookingMonolith.Flight.Data;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -49,7 +50,7 @@ public class CreateAircraftEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateAircraft") .WithName("CreateAircraft")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateAircraftResponseDto>() .Produces<CreateAircraftResponseDto>()

View File

@ -5,6 +5,7 @@ using BookingMonolith.Flight.Data;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -47,7 +48,7 @@ public class CreateAirportEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateAirport") .WithName("CreateAirport")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateAirportResponseDto>() .Produces<CreateAirportResponseDto>()

View File

@ -7,6 +7,7 @@ using BookingMonolith.Flight.Flights.ValueObjects;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -55,7 +56,7 @@ public class CreateFlightEndpoint : IMinimalEndpoint
return Results.CreatedAtRoute("GetFlightById", new { id = result.Id }, response); return Results.CreatedAtRoute("GetFlightById", new { id = result.Id }, response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateFlight") .WithName("CreateFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateFlightResponseDto>(StatusCodes.Status201Created) .Produces<CreateFlightResponseDto>(StatusCodes.Status201Created)

View File

@ -4,6 +4,7 @@ using BookingMonolith.Flight.Flights.Exceptions;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using MediatR; using MediatR;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
@ -44,7 +45,7 @@ public class DeleteFlightEndpoint : IMinimalEndpoint
return Results.NoContent(); return Results.NoContent();
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("DeleteFlight") .WithName("DeleteFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces(StatusCodes.Status204NoContent) .Produces(StatusCodes.Status204NoContent)

View File

@ -5,6 +5,7 @@ using BookingMonolith.Flight.Flights.Exceptions;
using BuildingBlocks.Caching; using BuildingBlocks.Caching;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
using MediatR; using MediatR;
@ -39,7 +40,7 @@ public class GetAvailableFlightsEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetAvailableFlights") .WithName("GetAvailableFlights")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetAvailableFlightsResponseDto>() .Produces<GetAvailableFlightsResponseDto>()

View File

@ -4,6 +4,7 @@ using BookingMonolith.Flight.Flights.Dtos;
using BookingMonolith.Flight.Flights.Exceptions; using BookingMonolith.Flight.Flights.Exceptions;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -35,7 +36,7 @@ public class GetFlightByIdEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetFlightById") .WithName("GetFlightById")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetFlightByIdResponseDto>() .Produces<GetFlightByIdResponseDto>()

View File

@ -9,6 +9,7 @@ using BuildingBlocks.Caching;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using MapsterMapper; using MapsterMapper;
using MediatR; using MediatR;
@ -52,7 +53,7 @@ public class UpdateFlightEndpoint : IMinimalEndpoint
return Results.NoContent(); return Results.NoContent();
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("UpdateFlight") .WithName("UpdateFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces(StatusCodes.Status204NoContent) .Produces(StatusCodes.Status204NoContent)

View File

@ -7,6 +7,7 @@ using BookingMonolith.Flight.Seats.ValueObjects;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -40,7 +41,7 @@ public class CreateSeatEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/seat", CreateSeat) builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/seat", CreateSeat)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateSeat") .WithName("CreateSeat")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateSeatResponseDto>() .Produces<CreateSeatResponseDto>()

View File

@ -4,6 +4,7 @@ using BookingMonolith.Flight.Seats.Dtos;
using BookingMonolith.Flight.Seats.Exceptions; using BookingMonolith.Flight.Seats.Exceptions;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -27,7 +28,7 @@ public class GetAvailableSeatsEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapGet($"{EndpointConfig.BaseApiPath}/flight/get-available-seats/{{id}}", GetAvailableSeats) builder.MapGet($"{EndpointConfig.BaseApiPath}/flight/get-available-seats/{{id}}", GetAvailableSeats)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetAvailableSeats") .WithName("GetAvailableSeats")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetAvailableSeatsResponseDto>() .Produces<GetAvailableSeatsResponseDto>()

View File

@ -4,6 +4,7 @@ using BookingMonolith.Flight.Seats.Exceptions;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -31,7 +32,7 @@ public class ReserveSeatEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/reserve-seat", ReserveSeat) builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/reserve-seat", ReserveSeat)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("ReserveSeat") .WithName("ReserveSeat")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<ReserveSeatResponseDto>() .Produces<ReserveSeatResponseDto>()

View File

@ -5,6 +5,7 @@ using BuildingBlocks.Contracts.EventBus.Messages;
using BuildingBlocks.Core; using BuildingBlocks.Core;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -43,7 +44,7 @@ public class RegisterNewUserEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("RegisterUser") .WithName("RegisterUser")
.WithApiVersionSet(builder.NewApiVersionSet("Identity").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Identity").Build())
.Produces<RegisterNewUserResponseDto>() .Produces<RegisterNewUserResponseDto>()

View File

@ -6,6 +6,7 @@ using BookingMonolith.Passenger.Passengers.ValueObjects;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Event;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -50,7 +51,7 @@ public class CompleteRegisterPassengerEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CompleteRegisterPassenger") .WithName("CompleteRegisterPassenger")
.WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build())
.Produces<CompleteRegisterPassengerResponseDto>() .Produces<CompleteRegisterPassengerResponseDto>()

View File

@ -4,6 +4,7 @@ using BookingMonolith.Passenger.Passengers.Dtos;
using BookingMonolith.Passenger.Passengers.Exceptions; using BookingMonolith.Passenger.Passengers.Exceptions;
using BuildingBlocks.Core.CQRS; using BuildingBlocks.Core.CQRS;
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Duende.IdentityServer.EntityFramework.Entities;
using FluentValidation; using FluentValidation;
using Mapster; using Mapster;
using MapsterMapper; using MapsterMapper;
@ -35,7 +36,7 @@ public class GetPassengerByIdEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetPassengerById") .WithName("GetPassengerById")
.WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build())
.Produces<GetPassengerByIdResponseDto>() .Produces<GetPassengerByIdResponseDto>()

View File

@ -50,7 +50,7 @@ public class CreateBookingEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateBooking") .WithName("CreateBooking")
.WithApiVersionSet(builder.NewApiVersionSet("Booking").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Booking").Build())
.Produces<CreateBookingResponseDto>() .Produces<CreateBookingResponseDto>()

View File

@ -54,7 +54,7 @@ public class CreateAircraftEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateAircraft") .WithName("CreateAircraft")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateAircraftResponseDto>() .Produces<CreateAircraftResponseDto>()

View File

@ -51,7 +51,7 @@ public class CreateAirportEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateAirport") .WithName("CreateAirport")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateAirportResponseDto>() .Produces<CreateAirportResponseDto>()

View File

@ -59,7 +59,7 @@ public class CreateFlightEndpoint : IMinimalEndpoint
return Results.CreatedAtRoute("GetFlightById", new { id = result.Id }, response); return Results.CreatedAtRoute("GetFlightById", new { id = result.Id }, response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateFlight") .WithName("CreateFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateFlightResponseDto>(StatusCodes.Status201Created) .Produces<CreateFlightResponseDto>(StatusCodes.Status201Created)

View File

@ -45,7 +45,7 @@ public class DeleteFlightEndpoint : IMinimalEndpoint
return Results.NoContent(); return Results.NoContent();
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("DeleteFlight") .WithName("DeleteFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces(StatusCodes.Status204NoContent) .Produces(StatusCodes.Status204NoContent)

View File

@ -46,7 +46,7 @@ public class GetAvailableFlightsEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetAvailableFlights") .WithName("GetAvailableFlights")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetAvailableFlightsResponseDto>() .Produces<GetAvailableFlightsResponseDto>()

View File

@ -39,7 +39,7 @@ public class GetFlightByIdEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetFlightById") .WithName("GetFlightById")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetFlightByIdResponseDto>() .Produces<GetFlightByIdResponseDto>()

View File

@ -56,7 +56,7 @@ public class UpdateFlightEndpoint : IMinimalEndpoint
return Results.NoContent(); return Results.NoContent();
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("UpdateFlight") .WithName("UpdateFlight")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces(StatusCodes.Status204NoContent) .Produces(StatusCodes.Status204NoContent)

View File

@ -44,7 +44,7 @@ public class CreateSeatEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/seat", CreateSeat) builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/seat", CreateSeat)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CreateSeat") .WithName("CreateSeat")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<CreateSeatResponseDto>() .Produces<CreateSeatResponseDto>()

View File

@ -34,7 +34,7 @@ public class GetAvailableSeatsEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapGet($"{EndpointConfig.BaseApiPath}/flight/get-available-seats/{{id}}", GetAvailableSeats) builder.MapGet($"{EndpointConfig.BaseApiPath}/flight/get-available-seats/{{id}}", GetAvailableSeats)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetAvailableSeats") .WithName("GetAvailableSeats")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<GetAvailableSeatsResponseDto>() .Produces<GetAvailableSeatsResponseDto>()

View File

@ -35,7 +35,7 @@ public class ReserveSeatEndpoint : IMinimalEndpoint
public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder) public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder builder)
{ {
builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/reserve-seat", ReserveSeat) builder.MapPost($"{EndpointConfig.BaseApiPath}/flight/reserve-seat", ReserveSeat)
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("ReserveSeat") .WithName("ReserveSeat")
.WithApiVersionSet(builder.NewApiVersionSet("Flight").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Flight").Build())
.Produces<ReserveSeatResponseDto>() .Produces<ReserveSeatResponseDto>()

View File

@ -1,3 +1,5 @@
using Duende.IdentityServer.EntityFramework.Entities;
namespace Identity.Identity.Features.RegisteringNewUser.V1; namespace Identity.Identity.Features.RegisteringNewUser.V1;
using System; using System;
@ -47,7 +49,7 @@ public class RegisterNewUserEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("RegisterUser") .WithName("RegisterUser")
.WithApiVersionSet(builder.NewApiVersionSet("Identity").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Identity").Build())
.Produces<RegisterNewUserResponseDto>() .Produces<RegisterNewUserResponseDto>()

View File

@ -41,7 +41,7 @@ public class CompleteRegisterPassengerEndpoint : IMinimalEndpoint
{ {
builder.MapPost($"{EndpointConfig.BaseApiPath}/passenger/complete-registration", async ( builder.MapPost($"{EndpointConfig.BaseApiPath}/passenger/complete-registration", async (
CompleteRegisterPassengerRequestDto request, IMapper mapper, CompleteRegisterPassengerRequestDto request, IMapper mapper,
IMediator mediator, CancellationToken cancellationToken) => IMediator mediator, CancellationToken cancellationToken, IHttpContextAccessor httpContextAccessor) =>
{ {
var command = mapper.Map<CompleteRegisterPassenger>(request); var command = mapper.Map<CompleteRegisterPassenger>(request);
@ -51,7 +51,7 @@ public class CompleteRegisterPassengerEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("CompleteRegisterPassenger") .WithName("CompleteRegisterPassenger")
.WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build())
.Produces<CompleteRegisterPassengerResponseDto>() .Produces<CompleteRegisterPassengerResponseDto>()

View File

@ -36,7 +36,7 @@ public class GetPassengerByIdEndpoint : IMinimalEndpoint
return Results.Ok(response); return Results.Ok(response);
}) })
.RequireAuthorization() .RequireAuthorization(nameof(ApiScope))
.WithName("GetPassengerById") .WithName("GetPassengerById")
.WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build()) .WithApiVersionSet(builder.NewApiVersionSet("Passenger").Build())
.Produces<GetPassengerByIdResponseDto>() .Produces<GetPassengerByIdResponseDto>()

View File

@ -1,5 +1,6 @@
using BuildingBlocks.Web; using BuildingBlocks.Web;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
namespace BuildingBlocks.Jwt; namespace BuildingBlocks.Jwt;
@ -40,13 +41,28 @@ public static class JwtExtensions
{ {
services.AddAuthorization( services.AddAuthorization(
options => options =>
{
// Set JWT as the default scheme for all [Authorize] attributes
options.DefaultPolicy =
new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build();
// Add your scope policy (optional)
if (!string.IsNullOrEmpty(jwtOptions.Audience))
{
options.AddPolicy( options.AddPolicy(
nameof(ApiScope), nameof(ApiScope),
policy => policy =>
{ {
policy.AuthenticationSchemes.Add(
JwtBearerDefaults.AuthenticationScheme);
policy.RequireAuthenticatedUser(); policy.RequireAuthenticatedUser();
policy.RequireClaim("scope", jwtOptions.Audience); policy.RequireClaim("scope", jwtOptions.Audience);
})); });
}
});
} }
return services; return services;