dotnet-cqrs/Svrnty.CQRS.Grpc.Generators
Mathias Beaulieu-Duncan 86d87424ab feat(security): add ICommandAuthorizationCheck/IQueryAuthorizationCheck seam
Introduces a non-breaking, multi-instance authorization-check pipeline
that runs alongside the existing single-instance auth services.

Motivation
- Cross-cutting checks (proof-of-work, mobile attestation, rate-limit
  gates, IP allow-lists) don't belong in consumer auth services — they
  ship from framework modules and self-apply via attributes.
- The existing ICommandAuthorizationService takes only a Type; checks
  need the request *instance* to read payload fields (e.g. an Altcha
  solution carried on the command).

Shape
- New abstractions: ICommandAuthorizationCheck, IQueryAuthorizationCheck,
  CommandAuthorizationCheckContext, QueryAuthorizationCheckContext.
- Context carries (Type, Instance, IServiceProvider, Items dict). The
  Items dict lets sibling checks signal one another — e.g. a future
  mobile-attestation check stamps "mobile_attested" for the Altcha
  check to read as a bypass.
- AND semantics: framework resolves IEnumerable<…Check>, runs each in
  registration order, first non-Allowed short-circuits.
- Wired into MinimalApi (commands + queries, POST + GET) and the
  Svrnty.CQRS.Grpc.Generators source generator (commands, queries,
  dynamic queries). In all paths the checks run AFTER the instance
  is materialized and validated, BEFORE handler invocation.

Backward compatibility
- No registered checks = today's behavior exactly.
- ICommandAuthorizationService / IQueryAuthorizationService signatures
  unchanged; consumers' existing auth services keep working untouched.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:21:20 -04:00
..
build Refactor proto generation from source generator to MSBuild task 2026-01-26 14:35:56 -05:00
Helpers Apply dotnet format with new editorconfig rules 2026-03-12 03:30:50 -04:00
Models Apply dotnet format with new editorconfig rules 2026-03-12 03:30:50 -04:00
GenerateProtoFileTask.cs Refactor proto generation from source generator to MSBuild task 2026-01-26 14:35:56 -05:00
GrpcGenerator.cs feat(security): add ICommandAuthorizationCheck/IQueryAuthorizationCheck seam 2026-05-12 16:21:20 -04:00
ProtoFileGenerator.cs Handle generic types in proto message name generation 2026-02-19 18:56:37 -05:00
ProtoTypeMapper.cs Handle generic types in proto message name generation 2026-02-19 18:56:37 -05:00
Svrnty.CQRS.Grpc.Generators.csproj fix nuget package for Generator assembly? 2025-11-07 12:48:00 -05:00