Define consumer policies
Last updated:
Use AddConsumerAuthorizationPolicies to declare additive product policies while preserving framework policy ownership.
Warning
The public builder surface exists, but complete runtime evaluation, collision enforcement, handler integration, and WS-005 readiness remain in progress.
Prerequisites
- Choose a consumer-owned policy namespace such as
Acme.Projects.*. - Identify the minimum required framework policy and roles.
- Implement any consumer-owned requirement handler against consumer-owned services and persistence.
Register a policy
builder.Services
.AddTrombettaSaaS(
builder.Configuration.GetRequiredSection("TrombettaSaaS"))
.AddConsumerAuthorizationPolicies(policies =>
{
policies
.AddPolicy("Acme.Projects.Edit")
.RequireFrameworkPolicy(
FrameworkAuthorizationPolicies.OrganizationsView)
.RequireOrganizationRoles(
OrganizationRole.Owner,
OrganizationRole.Administrator)
.AddRequirement("Acme.Projects.Edit.Requirement");
});
Consumer policies are additive. Registration does not automatically implement a consumer requirement handler or grant a framework operation.
Naming and composition rules
- Names beginning with
Trombetta.SaaS.are reserved. - Duplicate consumer names and framework collisions must fail during composition or startup.
- Consumer code cannot redefine framework roles or replace framework handlers.
- A consumer requirement cannot fabricate organization context or accept unvalidated identifiers.
Verify the result
Verify startup rejection for blank, duplicate, reserved, and colliding names. Test every consumer requirement with current membership, foreign organization, role change, membership removal, and dependency failure.
Next steps
Apply the policy to ASP.NET Core endpoints and server-side application operations.