Skip to content

Commit a954055

Browse files
committed
Revert sample to UseCleanArchitectureMultitenancy
1 parent f240e0d commit a954055

File tree

4 files changed

+76
-1
lines changed

4 files changed

+76
-1
lines changed

docs/samples/multitenancy/header-and-route-resolution.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,33 @@ Document a sample that shows deterministic tenant resolution from route first, h
7373
});
7474
// Step 3: (End) Configure multitenancy resolution defaults
7575
```
76-
4. Register services with `AddCleanArchitectureMultitenancy` then `AddCleanArchitectureMultitenancyAspNetCore(autoUseMiddleware: false)`; place `UseCleanArchitectureMultitenancy` after routing and before authentication/authorization.
76+
4. Register services with `AddCleanArchitectureMultitenancy` then `AddCleanArchitectureMultitenancyAspNetCore(autoUseMiddleware: false)`; add `UseCleanArchitectureMultitenancy` after routing and before authentication/authorization.
77+
- `samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/DependencyInjection.cs`:
78+
```csharp
79+
// Step 4: (Begin) Multitenancy ASP.NET Core registration imports
80+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore;
81+
// Step 4: (End) Multitenancy ASP.NET Core registration imports
82+
```
83+
```csharp
84+
// Step 4: (Begin) Register multitenancy services and ASP.NET Core adapter
85+
builder.Services.AddCleanArchitectureMultitenancy();
86+
builder.Services.AddCleanArchitectureMultitenancyAspNetCore(autoUseMiddleware: false);
87+
// Step 4: (End) Register multitenancy services and ASP.NET Core adapter
88+
```
89+
- `samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/Program.cs`:
90+
```csharp
91+
// Step 4: (Begin) Multitenancy middleware import
92+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore.Middleware;
93+
// Step 4: (End) Multitenancy middleware import
94+
```
95+
```csharp
96+
// Step 4: (Begin) Add multitenancy middleware between routing and auth
97+
app.UseRouting();
98+
app.UseCleanArchitectureMultitenancy();
99+
app.UseAuthentication();
100+
app.UseAuthorization();
101+
// Step 4: (End) Add multitenancy middleware between routing and auth
102+
```
77103
5. Add route conventions that group tenant-bound APIs under `/tenants/{tenantId}/...`; keep health/status endpoints outside the group for anonymous access.
78104
6. Decorate tenant-bound endpoints with `RequireTenant`, and mark public endpoints with `AllowAnonymousTenant` to keep resolution optional without enforcement.
79105
7. Enable `TenantExceptionHandler`/ProblemDetails so unresolved tenants return 400, missing tenants return 404, and suspended tenants return 403.

samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,37 @@ builder.Services.Configure<MultitenancyOptions>(options =>
5858
// Step 3: (End) Configure multitenancy resolution defaults
5959
```
6060

61+
### Step 4: Register multitenancy services and middleware
62+
Register the core and ASP.NET Core services, then add the middleware between routing and auth.
63+
64+
`samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/DependencyInjection.cs`:
65+
```csharp
66+
// Step 4: (Begin) Multitenancy ASP.NET Core registration imports
67+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore;
68+
// Step 4: (End) Multitenancy ASP.NET Core registration imports
69+
```
70+
```csharp
71+
// Step 4: (Begin) Register multitenancy services and ASP.NET Core adapter
72+
builder.Services.AddCleanArchitectureMultitenancy();
73+
builder.Services.AddCleanArchitectureMultitenancyAspNetCore(autoUseMiddleware: false);
74+
// Step 4: (End) Register multitenancy services and ASP.NET Core adapter
75+
```
76+
77+
`samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/Program.cs`:
78+
```csharp
79+
// Step 4: (Begin) Multitenancy middleware import
80+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore.Middleware;
81+
// Step 4: (End) Multitenancy middleware import
82+
```
83+
```csharp
84+
// Step 4: (Begin) Add multitenancy middleware between routing and auth
85+
app.UseRouting();
86+
app.UseCleanArchitectureMultitenancy();
87+
app.UseAuthentication();
88+
app.UseAuthorization();
89+
// Step 4: (End) Add multitenancy middleware between routing and auth
90+
```
91+
6192
## Build
6293

6394
Run `dotnet build -tl` to build the solution.

samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/DependencyInjection.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
using CleanArchitecture.Extensions.Multitenancy;
44
using CleanArchitecture.Extensions.Multitenancy.Configuration;
55
// Step 3: (End) Multitenancy configuration imports
6+
// Step 4: (Begin) Multitenancy ASP.NET Core registration imports
7+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore;
8+
// Step 4: (End) Multitenancy ASP.NET Core registration imports
69
using CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution.Application.Common.Interfaces;
710
using CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution.Infrastructure.Data;
811
using CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution.Web.Services;
@@ -45,6 +48,11 @@ public static void AddWebServices(this IHostApplicationBuilder builder)
4548
});
4649
// Step 3: (End) Configure multitenancy resolution defaults
4750

51+
// Step 4: (Begin) Register multitenancy services and ASP.NET Core adapter
52+
builder.Services.AddCleanArchitectureMultitenancy();
53+
builder.Services.AddCleanArchitectureMultitenancyAspNetCore(autoUseMiddleware: false);
54+
// Step 4: (End) Register multitenancy services and ASP.NET Core adapter
55+
4856

4957
// Customise default API behaviour
5058
builder.Services.Configure<ApiBehaviorOptions>(options =>

samples/CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution/src/Web/Program.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// Step 4: (Begin) Multitenancy middleware import
2+
using CleanArchitecture.Extensions.Multitenancy.AspNetCore.Middleware;
3+
// Step 4: (End) Multitenancy middleware import
14
using CleanArchitecture.Extensions.Samples.Multitenancy.HeaderAndRouteResolution.Infrastructure.Data;
25

36
var builder = WebApplication.CreateBuilder(args);
@@ -34,6 +37,13 @@
3437

3538
app.UseExceptionHandler(options => { });
3639

40+
// Step 4: (Begin) Add multitenancy middleware between routing and auth
41+
app.UseRouting();
42+
app.UseCleanArchitectureMultitenancy();
43+
app.UseAuthentication();
44+
app.UseAuthorization();
45+
// Step 4: (End) Add multitenancy middleware between routing and auth
46+
3747
app.Map("/", () => Results.Redirect("/api"));
3848

3949
app.MapEndpoints();

0 commit comments

Comments
 (0)