765cc632d5
Remove the Order demo (entity/feature/repo/config/gRPC/proto) and the three pre-marketplace migrations; regenerate a fresh InitialBaseline migration. Stand up the REST surface (PingController + System/Ping CQRS) proving the Mediator -> behaviors -> OperationResult -> ApiResult envelope end to end. Close wiring gaps: register LoggingBehavior (outermost) and add the built-in rate limiter (per-IP global + otp/auth/sensitive policies), placed before authentication. Add current-user + audit plumbing: ICurrentUser (HttpContext + null impls), rename BaseEntity audit fields to CreatedAt/ModifiedAt (DateTimeOffset) + CreatedById/ModifiedById, stamped by a new AuditFieldInterceptor. Introduce five cross-cutting seams (IDateTimeProvider, IFieldEncryptor, ICacheService, IObjectStorage, INotificationDispatcher) with in-memory/local mocks registered via AddCrossCuttingSeams. Add Baya.Test.Foundation (encryptor, audit interceptor, ping handler) and update docs, contracts (swagger.v1.json), handoff, report, and mocks registry.
32 lines
837 B
C#
32 lines
837 B
C#
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Baya.Web.Plugins.Grpc.Services;
|
|
|
|
namespace Baya.Web.Plugins.Grpc;
|
|
|
|
public static class GrpcPluginStartup
|
|
{
|
|
public static IServiceCollection ConfigureGrpcPluginServices(this IServiceCollection services)
|
|
{
|
|
|
|
|
|
services.AddGrpc();
|
|
services.AddGrpcReflection();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static void ConfigureGrpcPipeline(this WebApplication app)
|
|
{
|
|
|
|
app.MapGrpcService<UserGrpcServices>();
|
|
app.MapGrpcReflectionService();
|
|
|
|
app.MapGet("/GrpcUser", async context =>
|
|
{
|
|
await context.Response.WriteAsync(
|
|
"Communication with this gRPC endpoint must be made through a gRPC client.");
|
|
});
|
|
}
|
|
} |