Przejdź do treści

GrantAssignment (Core RBAC)

GrantAssignment (nadanie uprawnień) to zasób reprezentujący przypisanie uprawnień: komu przypisane (assignedTo – Party, PartyRole, Position lub OrganizationUnit), względem kogo/czego obowiązujące (scope – kontekst organizacyjny), co nadane (granted – referencje do Capability), w jakim okresie (period), na jakiej podstawie (basis) i kto nadał (givenBy). Jest to konkretne przypisanie (grant) w czasie, nie abstrakcyjna „Permission".

Użycie międzymodułowe: kadry (uprawnienia pracowników i przełożonych), księgowość (uprawnienia do zatwierdzania), magazyn (uprawnienia operacyjne), delegacje między jednostkami itd. Obecnie źródłem przypisań są kadry.

Rozszerza DomainResource.


1. Zakres i zastosowanie

GrantAssignment = pojedyncze przypisanie uprawnienia: - assignedTo (0..1) – komu przypisane: Reference do Party, PartyRole, Position lub OrganizationUnit. PartyRole pozwala przypisać uprawnienie osobie w konkretnej roli (np. jako pracownik). - scope (0..) – względem kogo/czego obowiązujące: Reference do strony w roli, jednostki organizacyjnej lub stanowiska (kontekst organizacyjny lub zakres autorytetu); w kadrach – PartyRole pracownika, którego dotyczy uprawnienie przełożonego. - granted (0..) – co nadane: lista referencji do Capability. - period (0..1) – okres obowiązywania przypisania. - basis (0..1) – podstawa prawna / merytoryczna przypisania (CodeableConcept; kody nadaje wdrożenie). - givenBy (0..1) – kto nadał przypisanie (Reference do PartyRole / użytkownika).

Powiązanie z zatrudnieniem (Employment) niesie attribute[] (employment-id), a filtr basedOn w zapytaniu przyjmuje identyfikator zatrudnienia. status (z DomainResource) – kody nadaje wdrożenie.


2. Struktura (pola)

Poza polami z DomainResource (id, resourceType, meta, owner, comment, category, status, type, contained, attribute):

Nazwa Kard. Typ Opis
assignedTo 0..1 Reference(Party | PartyRole | Position | OrganizationUnit) komu – odbiorca: osoba (Party), osoba w roli (PartyRole), stanowisko lub jednostka org
scope 0..* Reference(PartyRole | OrganizationUnit | Position) względem kogo/czego – zakres (kadry: strona w roli pracownika)
granted 0..* Reference(Capability) co nadane – przyznane zdolności (referencje do Capability)
period 0..1 Period Okres obowiązywania (start, end); brak końca = nadal ważne
basis 0..1 CodeableConcept Podstawa prawna / merytoryczna (kody nadaje wdrożenie)
givenBy 0..1 Reference(PartyRole) Przyznał – strona w roli / użytkownik (dla audytu)

Uwagi: - assignedTo = komu; scope = względem kogo/czego; granted = co jest nadane - GrantAssignment nie ma pola identifier; przypisanie wyszukuje się po assignedTo, granted, scope, basedOn - attribute[] w kadrach (system https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type): direct-only (tylko bezpośredni podwładni), employment-id (zatrudnienie, z którego wynika uprawnienie), order-path (ścieżka w hierarchii)


3. Przykład

Przypisanie: pracownik w roli przełożonego ma uprawnienie względem podwładnego

{
  "resourceType": "GrantAssignment",
  "assignedTo": {
    "type": "PartyRole",
    "identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "employee-1001" },
    "display": "Employee"
  },
  "scope": [{
    "type": "PartyRole",
    "identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "employee-2002" },
    "display": "Employee"
  }],
  "granted": [{
    "type": "Capability",
    "identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "<kod uprawnienia>" }
  }],
  "attribute": [
    { "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type", "code": "direct-only" }] }, "value": [{ "valueString": "1" }] },
    { "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type", "code": "employment-id" }] }, "value": [{ "valueString": "5005" }] }
  ]
}
Wynik: pracownik employee-1001 posiada wskazane uprawnienie względem pracownika employee-2002; przypisanie wynika z zatrudnienia 5005. Przestrzenie system są parametrem wdrożenia (deployment).


4. Operacje

Parametry filtrów mają postać system|value (attribute: code|value). Odpowiedź to koperta { "items": [...], "nextToken": null }, stronicowana parametrami count (domyślnie 20) i offset (domyślnie 0).

Operacja Parametry Odpowiedź
GET /v1/grant-assignments assignedTo (przestrzeń wewnętrzna Party), granted (przestrzeń wewnętrzna Capability), basedOn (przestrzeń wewnętrzna Employment), scope (przestrzeń wewnętrzna Party), attribute[] (direct-only|<wartość>), count, offset 200 koperta z GrantAssignment[]

Przykłady zapytań:

GET /v1/grant-assignments?assignedTo=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|1001
GET /v1/grant-assignments?scope=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|2002&granted=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|<kod uprawnienia>

Zasób jest tylko do odczytu; brak POST/PATCH/DELETE i tras z {id}.


5. Wyrównanie do ERP

System Odpowiednik Uwagi
SAP HCM / S/4HANA User role assignment (PFCG), user master GrantAssignment = użytkownik przypisany do roli z zakresem dat
SAP SuccessFactors Role assignment, delegated permissions Przypisanie z efektywną datą, scope
Oracle HCM Cloud Role assignment (person, job, org) Przypisanie z zakresem dat
Workday Security assignment, delegated security, acting assignment Worker/position/org + security group + period
Microsoft Dynamics 365 Security role assignment to user, team assignment User = assignedTo; Role = granted; Org = scope

6. Audyt i Compliance

  • givenBy – kto nadał przypisanie (ścieżka audytu)
  • attribute[].employment-id – zatrudnienie, z którego wynika przypisanie
  • meta.lastModified / added / versionId – znaczniki czasowe i wersja (Meta)
  • status – aktywne vs. wycofane przypisania (kody nadaje wdrożenie); period – wygaśnięcie

7. Zasoby powiązane

Capability — Pojedyncze uprawnienie
Przegląd Core RBAC — Model RBAC cross-module