Architecture deep-dives from the team behind AppointMe — the patterns we reach for when building a real modular-monolith product, written up the way we'd want to read them.
“The current user” is really three questions in a trench coat. Splitting it into two clean abstractions — identity (who you are) and principal (what you can do) — keeps authorization and business rules from tangling together.
How that clean handler signature actually gets fed: two lazy resolvers, an ambient AsyncLocal holder, and four framework seams — ASP.NET Core, Wolverine, Hangfire and domain events — wired so no handler ever knows the difference.