Cloud Events API styður hæfnina að takmarka API-aðgang á reitastigsstigi. Reitir geta verið lokaðir fyrir lestur, skrif eða hvort tveggja í gegnum stillingarborðið — án þess að breyta neinum AL-kóða.
| Tegund | Gildi | API les? | API skrifar? | Lýsing |
|---|---|---|---|---|
| Both | 0 | ✗ | ✗ | Reitur er algerlega útilokaður frá API |
| Read | 1 | ✗ | ✓ | Reitur getur verið skrifaður en er látinn þegjandi við lestur |
| Write | 2 | ✓ | ✗ | Reitur má vera lesinn en skrif eru stöðvuð með villu |
| Bypass | 3 | ✓ | ✓ | Takmörkun óvirk — reitur er aðgengilegur alla vega (notað til að undanskilja reiti úr breiðari takmarkana) |
Data.Records.Get, CSV.Records.Get)Reitir með Read eða Both tegund eru þegjandi slepptir frá útgangi: enginn villudagar, reiturinn birtist einfaldlega ekki í JSON-svaritöflum. Þetta tryggir bakwardstengda samhæfni.
Data.Records.Set)Ef kallari reynir að skrifa í reit sem er lokaður með Write eða Both tegund, skilar API villu með skýru skilaboði: "Field 'FieldName' is write-restricted in table 'TableName'." Skrifun fer ekki fram þrátt fyrir villu — örar breytingar á öðrum reitum í sömu beiðni eru framkvæmdar áður en villan kemur upp.
Kerfið styður tvö algildisgildi til að setja takmarkanir á breiðum grundvelli án þess að búa til færslur fyrir hvern reit eða hverja töflu:
| Algildisgildi | Merking | Staðfestingarregla |
|---|---|---|
| Svæðisnúmer = 0 | Allir reitir í tilgreindri töflu | Töflunúmer verður að vera gild tafla (eða 0) |
| Töflunúmer = 0 | Allar töflur fyrir notandann | Svæðisnúmer er sjálfkrafa sett í 0 (ekki hægt að tilgreina reit án töflu) |
Þegar athugað er hvort reitur sé takmarkaður, metur kerfið færslur í þessari röð:
Fyrsta samsvörun gildir. Ef engin færsla finnst á neinu stigi er reiturinn ótakmarkaður.
<Öll svæði>| Tafla | Reitur | Tegund | Áhrif |
|---|---|---|---|
| Customer (18) | Name (2) | Read | Einungis þessi reitur er lokaður frá lestur |
| Customer (18) | 0 (allir) | Write | Allir reitir í Customer eru lokaðir frá skrifum |
| 0 (allar) | 0 (allir) | Both | Allar töflur og allir reitir eru algerlega lokaðir |
Valmynd → Þjónusta → Cloud Events → Reitaðgangstakmörk (Field Access Restrictions)
Stillingarsíðan sýnir þrjár dálkar:
Both, Read, Write eða BypassAuk þess er hægt að takmarkaðara notkun:
(All Users) eða ákveðinn nafn BC-notandaÞegar (All Users) er valinn á tegund Both, Read eða Write, gildir takmörkun um alla API-kallara nema þeir sem hafa sérstaka Bypass-færslu stillt fyrir sig.
Customer).Credit Limit (LCY)).Both, Read, Write eða Bypass.Athugið: Þegar BC útfærsla er með Azure AD auðkenningu (service principal) er auðkennirinn settur út sem ENTRA/{clientId} útlit. AAD-notendur eru ekki með BC-notendanöfn, svo notendatengdar takmarkanir eiga aðeins við um gagnaðgenga BC-notendur, ekki API-þjónustur.
Loka lestur á viðkvæmum fjárhagsreitum:
| Tafla | Reitur | Tegund | Notandi |
|---|---|---|---|
| Customer | Credit Limit (LCY) | Both | (All Users) |
| Customer | Balance (LCY) | Read | (All Users) |
| Customer | Balance Due (LCY) | Read | (All Users) |
Undanskilja tiltekinn samþættingarnotanda:
| Tafla | Reitur | Tegund | Notandi |
|---|---|---|---|
| Customer | Credit Limit (LCY) | Both | (All Users) |
| Customer | Credit Limit (LCY) | Bypass | SVC_INT_USR |
Í þessu dæmi geta allir notendur/API-þjónustur ekki lesið né skrifað Credit Limit (LCY), nema SVC_INT_USR-notandinn sem fær fullan aðgang.
| Reitur nr. | Heiti reits | Tegund | Lýsing |
|---|---|---|---|
| 1 | Table No. | Integer | Töflunúmer töflunnar sem takmarkaður reitur tilheyrir |
| 2 | Field No. | Integer | Reitanúmer reitsins sem er takmarkaður |
| 3 | User Name | Code[50] | BC-notendanafn. (All Users) = allar keyrslur |
| 4 | Restriction Type | Enum | Both (0), Read (1), Write (2), Bypass (3) |
| 5 | Table Name | Text[250] | Heiti töflu (ritlæst, sótt sjálfkrafa) |
| 6 | Field Name | Text[250] | Heiti reits (ritlæst, sótt sjálfkrafa) |
Þessi kóðaeining útfærir athuganarrök fyrir reitaðgangstakmörk.
Opinberar aðferðir:
/// <summary>
/// Athugar hvort reitur sé lokaður frá lestur fyrir gefinn notanda.
/// </summary>
procedure IsReadRestricted(TableNo: Integer; FieldNo: Integer; UserName: Code[50]): Boolean
/// <summary>
/// Athugar hvort reitur sé lokaður frá skrifum fyrir gefinn notanda.
/// </summary>
procedure IsWriteRestricted(TableNo: Integer; FieldNo: Integer; UserName: Code[50]): Boolean
/// <summary>
/// Skilar lista yfir alla takmarkaða reiti í töflu fyrir gefinn notanda.
/// </summary>
procedure GetRestrictedFields(TableNo: Integer; UserName: Code[50]; var CloudEventsFieldAccess: Record "CE Field Access")
Reitaðgangstakmörk eru framfylgt sjálfkrafa af Data.Records.Get og Data.Records.Set meðhöndlun skilaboðategunda. Þú þarft ekki að kalla á Cloud Events Field Access Mgt kóðaeininguna beint nema þú sért að smíða eigin viðbætur ofan á Cloud Events grunninn.
Ef þú vilt athuga hvort ákveðinn reitur sé lokaður í kóða:
var
CloudEventsFieldAccessMgt: Codeunit "CE Field Access Mgt";
begin
if CloudEventsFieldAccessMgt.IsWriteRestricted(Database::Customer, 21, UserId()) then
Error('Reitur er lokaður frá skrifum.');
end;
(All Users) takmörkun og Bypass-færslu fyrir ákveðinn notanda, þá fær Bypass-notandinn alltaf fullan aðgang.© Origo – Cloud Events Base Extension