SmartExchange · .NET 10 · Chapter 03
CRM annotations and Diagram
CRM deklaruje, ktoré cesty medzi entitami sú dostupné pre autorizáciu. Rovnaké metadáta riadia výber contextu, validáciu scope aj SQL mapovanie vzťahu.
Deklarácie pre oba export príklady
Person → Company
[CrmAuthorizationRelation("companyIds",
nameof(Person.PersonInCompanies),
nameof(PersonInCompany.Company))]Poskytuje companyIds cez spojovaciu entitu.
InterestedParty → Project
[CrmAuthorizationRelation("projectIds",
nameof(InterestedParty.Project))]Poskytuje projectIds cez deklarovanú Project referenciu.
Obe anotácie spracuje DiagramCrm.Generate(). Oba aliasy sa použijú v podmienkach príslušných derived roles. Ani jedna anotácia nezapína export; akciu musí explicitne povoliť resource policy.
Už implementované metadáta
| Trieda / member | Výstup / použitie |
|---|---|
DiagramCrm.Generate(assemblies) | Vytvorí CRM diagram existujúcim reflection postupom vrátane ACL anotácií a vzťahov. |
DiagramClass.AuthorizationRelations | Deklarácie patriace danému resource. |
DiagramAuthorizationRelation | AttributeName, NavigationPath, odvodený TargetEntity. |
DiagramAcl z CrmAclAttribute | Legacy entity/permission kódy pre adapter. Číselné identifikátory zostávajú na tejto konverznej hranici. |
Diagram rozpozná ciele navigácií; autorizačný registry overí použiteľnosť vzťahu a vytvorí neutrálne join kroky. Používame existujúce foreign-key/reverse-navigation metadáta; SQL cesty nezapisujeme do policy.
Sedem deklarovaných vzťahov
| Resource | Policy alias | CRM navigation |
|---|---|---|
| Person | companyIds | PersonInCompanies → Company |
| Company | personIds | PersonInCompanies → Person |
| Project | interestedPartyIds | InterestedPartys |
| InterestedParty | projectIds / investorIds | Project / Investor |
| Investor | interestedPartyIds / projectIds | InterestedParties / InterestedParties → Project |
Cerbos pozná názov relationship atribútu vo výraze, nedostáva CRM graf ani FK metadáta. Pri plánovaní listu ponechá neznáme atribúty záznamu vo výslednej podmienke. Ich databázový význam dodá naše SQL mapovanie.