Kapitola 02 / 09
ENSK

SmartExchange · .NET 10 · Chapter 02

Packages and boundaries

Štyri .NET 10 knižnice sú zatiaľ v MicroApps. Tvoria spoločný kód, ktorý publikujeme ako NuGet balíky pre obe aplikácie.

Shared code · Intaker + Web APIReviewed · 2026-10-27

Aktuálne projekty → spoločné balíky

ProjectTriedy a interfacesZodpovednosť
BmcGroup.Authorization.ContractsAuthorizationGrant, AuthorizationPrincipal, request/resource/plan records; IAuthorizationGrantReader, IAuthorizationContextResolver, IAuthorizationPolicyClient; expression records.Stabilné kontrakty nezávislé od Cerbos transportu a SQL. Štyri zdrojové súbory.
BmcGroup.Authorization.SmartExchangeLegacySqlAuthorizationGrantAdapter, SmartExchangeAuthorizationContextResolver, SmartExchangeAuthorizationRelationshipRegistry, SmartExchangeAuthorizationScopeValidator.SmartExchange grants, normalizácia/validácia scope a CRM metadáta vzťahov.
BmcGroup.Authorization.CerbosCerbosAuthorizationPolicyClient, CerbosQueryPlanMapper, AuthorizationOptions, CerbosAuthorizationOptions.Spoločné gRPC pripojenie, PlanResources request a preklad odpovede.
BmcGroup.Authorization.SqlKataIAuthorizationQueryAdapter, SqlKataAuthorizationQueryAdapter, AuthorizationSqlMappingFactory; SQL mapping/value/relationship records.Preklad podporovaného plánu do parametrizovanej query podľa dôveryhodného mapovania.

BmcGroup.CRM a BmcGroup.CRM.Diagram už patria do NuGet solution. SmartExchange autorizačnej vrstve dodávajú anotácie entít a generované metadáta.

Umiestnenie je stále POC. Všetky štyri autorizačné projekty zostávajú v MicroApps solution. Presun/publikovanie ešte neprebehli; zlúčenie balíkov nie je implementované. Aplikácie budú používať publikované PackageReference, nikdy referenciu cez solution na zdrojový NuGet projekt.

Čo zostáva v aplikáciách

Intaker · MicroAppsWeb API · vlastná solution
MicroApplication.OnInitialization(): vytvorí klienta z konfigurácie.Nakonfiguruje rovnakého klienta cez rovnaký kontrakt pripojenia.
OnMessageAxtionExportXlsx: user/product, template a export workflow.Endpoint: prihlásený user/product, action a query pre entitu.
ExportAuthorizationResourceCatalog.GetMapping() a ExportQueryBuilder.ApplyAuthorizationPlan().Dodá aliasy/mapovanie API query a zavolá spoločný SQL adapter pred count/paging.

Web API bude používať rovnaké štyri autorizačné balíky a kompatibilné CRM metadáta. SqlKata je použiteľná aj mimo Intakera. Iná query technológia potrebuje iný enforcement adapter; resolver a Cerbos plánovanie zostávajú spoločné.

Postup dodania

Presun spoločných knižníc do NuGet solution → publikovanie kompatibilných balíkov → prechod Intakera na package references → integrácia Web API. ExportQueryBuilder ani template/plugin spracovanie sa do spoločnej autorizačnej vrstvy nepresúvajú.

Rovnaké balíky pre oba exporty

Spoločné volaniePerson exportInterestedParty export
ResolveAsync()Person + Company grantsInterestedParty + Project + Investor grants
PlanResourcesAsync()Person / exportInterestedParty / export
GetRelationships() + Create()companyIds → PersonInCompany → CompanyprojectIds → Project
Apply()Pridá Company EXISTSPridá Project EXISTS

Sú to rozdiely konfigurácie a dát, nie dve autorizačné implementácie. Obe dokumentačné policies aj ich requests sú jasne oddelené od nasadenej default verzie.