Mechanika uprawnień ACL (dokumenty)
Podsumowanie:Podstawą obsługi uprawnień ACL dla dokumentów w nAxiom są szablony uprawnień konfigurowane na poziomie definicji dokumentu. Uprawnienia z szablonów są generowane w momencie utworzenia (pierwszego zapisu) nowego dokumentu. W cyklu przetwarzania dokumentu w procesie biznesowym uprawnienia do indywidualnych dokumentów można zmieniać:
- bezpośrednio, w wyniku ręcznej modyfikacji na formularzu (ikona kluczyka) lub w wyniku wykonania akcji Uprawnienia do rekordów
- pośrednio, przez zmianę składu grupy interesariuszy przypisanej do dokumentu.
Informacje o uprawnieniach są przechowywane w tabelach bazy danych i są podstawą do sprawdzania uprawnień, kiedy użytkownik próbuje wyświetlać, modyfikować i usuwać dokumenty.
Informacje o uprawnieniach są zapisywane w systemowych (schemat core) tabelach bazy danych, których nazwy zaczynają się od przedrostka ACL. Weryfikacja uprawnień dla każdego dokumentu polega na sprawdzeniu, czy bieżący użytkownik znajduje się w grupie uprawnionych (twórca dokumentu, posiadacz roli, członek grupy interesariuszy) oraz jaki ma zakres uprawnień (RUDA).
Tabela core.ACLTemplateEntries
W tej tabeli przechowywane są informacje o zdefiniowanych szablonach. Na podstawie danych z tej tabeli generowane są wpisy uprawnień dla tworzonych dokumentów.
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
CRUDA | nvarchar(MAX) | Zakres uprawnień ustawiony w szablonie | |
UserId | uniqueidentifier | Identyfikator użytkownika, wartość inna niż NULL wskazuje, że jest to szablon dla twórcy dokumentu | |
FillRule | int | Rodzaj uprawnionego, patrz przypis 1 poniżej | |
Description | nvarchar(MAX) | Opis szablonu uprawnień | |
BusinessDocumentId | int | Identyfikator definicji dokumentu, z którą jest powiązany szablon | |
StatusId | int | Identyfikator statusu, w którym ma obowiązywać szablon lub NULL dla szablonu ogólnego | |
OUInstanceId | int | Identyfikator jednostki organizacyjnej; patrz przypis 2 pod tabelą | |
StakeholderId | int | Identyfikator grupy interesariuszy przypisanej do dokumentu | |
RowGuid | uniqueidentifier | Unikatowy identyfikator szablonu |
Przypis 1: Kolumna FillRule może zawierać następujące wartości:
- 0: (nieobsługiwane)
- 1: twórca dokumentu
- 2: właściciel dokumentu (nieobsługiwane)
- 3: przełożony twórcy (nieobsługiwane)
- 4: przełożony właściciela (nieobsługiwane)
- 5: grupa interesariuszy
- 6: użytkownicy z wskazaną rolą
- 7: użytkownicy z wskazaną rolą z wskazanej jednostki organizacyjnej (wycofane)
- 8: użytkownicy z wskazaną rolą z wskazanej jednostki organizacyjnej i jej jednostkę podrzędnych (wycofane)
Przypis 2: W nAxiom 1.11.2.0 wycofano możliwość definiowania szablonów dla ról we wskazanych jednostkach i podjednostkach organizacyjnych, jednak istniejące szablony są nadal obsługiwane. Z tego względu w tabeli pozostawiono kolumnę OUInstanceId.
Tabela core.ACLTemplateEntryRoles
Tabela pomocnicza, zawiera informacje o rolach powiązanych z poszczególnymi szablonami uprawnień. Ta tabela jest w relacji jeden-do-wiele z tabelą core.ACLTemplateEntries.
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLTemplateEntryId | int | Identyfikator szablonu uprawnień (kolumna Id z tabeli core.ACLTemplateEntries) | |
RoleId | int | Identyfikator roli, dla której obowiązuje schemat uprawnień (kolumna Id z tabeli core.Roles) | |
RowGuid | uniqueidentifier | Unikatowy identyfikator rekordu |
Tabela core.ACLInstanceEntries
Szczegółowe wpisy uprawnień dla poszczególnych dokumentów; każdy dokument może mieć wiele wpisów, np. dla indywidualnych użytkowników, dla ról oraz dla użytkowników należących do grup interesariuszy. Ta tabela zawiera również zduplikowane kolumny systemowe z tabeli modelu danych na potrzeby funkcji tabelarycznej core.UserTasks_View. Opis tych kolumn pominięto.
Wpisy w tej tabeli są generowane/usuwane w wyniku następujących zdarzeń:
- Utworzenie dokumentu; po zapisaniu nowego dokumentu i ustawieniu pierwszego statusu zostają wygenerowane wpisy na podstawie szablonu ogólnego oraz szablonu dla pierwszego statusu.
- Zmiana statusu; po przejściu do kolejnego statusu zostają wygenerowane wpisy na podstawie szablonu dla bieżącego statusu; mogą również zostać wygenerowane/usunięte wpisy jeśli zmieni sią skład grupy interesariuszy.
- Zmiana uprawnień dla bieżącego dokumentu na formularzu (ikona kluczyka, wymagane uprawnienie do administrowania uprawnieniami).
- Wykonanie akcji uprawnień do rekordów.
- Wykonanie akcji odświeżenia uprawnień; ta akcja odświeża uprawnienia odpowiednio do zmian składu grupy interesariuszy.
- Wykonanie akcji systemowej Usuń rekord powoduje usunięcie wszystkich wpisów uprawnień dla danego dokumentu.
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLId | uniqueidentifier | Identyfikator dokumentu na potrzeby uprawnień (kolumna o tej samej nazwie z odpowiedniej tabeli modelu danych) | |
CanRead | bit | Uprawnienie do odczytu | |
CanUpdate | bit | Uprawnienie do aktualizacji; egzekwowane podczas próby zapisu zmienionych danych | |
CanDelete | bit | Uprawnienie usunięcia dokumentu; dotyczy usunięcia w trybie inline i akcji Usuń rekord | |
CanManage | bit | Uprawnienie do administrowania uprawnieniami | |
UserId | uniqueidentifier | Identyfikator uprawnionego użytkownika | |
StatusId | int | Identyfikator statusu, dla którego obowiązuje szablon uprawnień | |
OUInstanceId | int | Identyfikator jednostki organizacyjnej, wskazuje na szablon interesariuszy z dodaną rolą w jednostce | |
OUSubinstances | bit | Flaga wskazująca, czy uprawnienia mają obowiązywać w jednostkach podrzędnych danej jednostki organizacyjnej; wartość domyślna 0; patrz przypis pod tabelą | |
StakeholderId | int | Identyfikator grupy interesariuszy (core.Stakeholders), dla której obowiązuje zestaw uprawnień |
Przypis: W nAxiom 1.11.2.0 wycofano możliwość definiowania szablonów dla ról we wskazanych jednostkach i podjednostkach organizacyjnych, jednak istniejące szablony są nadal obsługiwane. Z tego względu w tabeli pozostawiono kolumnę OUSubinstances.
Tabela core.ACLInstanceEntryRole
Zawiera informacje o rolach powiązanych z danym wpisem uprawnień z tabeli core.ACLInstanceEntries.
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
ACLInstanceEntryId | int | Kolumna klucza głównego, identyfikator rekordu z tabeli core.ACLInstanceEntries | |
RoleId | int | Kolumna klucza głównego, identyfikator roli, której dotyczy dany wpis uprawnień; podczas sprawdzania uprawnień system szuka identyfikatora bieżącego użytkownika w tabeli core.UserProfileRoles |
Tabela core.ACLStakeholderEntries
Zawiera informacje o członkach grup interesariuszy.
Nazwa kolumny | Typ danych | Zezwól NULL | Opis |
---|---|---|---|
Id | int | Kolumna klucza głównego, identyfikator rekordu w tabeli | |
ACLId | uniqueidentifier | Identyfikator dokumentu, który ma przypisaną grupę interesariuszy (wartość z kolumny ACLId w tabeli dokumentu biznesowego) | |
UserProfileId | uniqueidentifier | Identyfikator użytkownika należącego do grupy interesariuszy (z tabeli core.UserProfiles); wpisy uprawnień dla indywidualnych | |
StakeholderId | int | Identyfikator grupy interesariuszy | |
OUInstanceId | int | Identyfikator jednostki organizacyjnej | |
RoleId | int | Identyfikator roli; jeśli dla danego dokumentu jest podana tylko rola, podczas sprawdzania uprawnień system szuka identyfikatora bieżącego użytkownika w tabeli core.UserProfileRoles; jeśli jest podana rola i jednostka, system szuka w tabeli core.OUInstanceUserRoles |
Powiązane tematy: