Článek: AN0001562Aktualizováno::
Prostřednictvím oprávnění přiděleného určité roli v detailu třídy získává role právo na všechny sloupce v dané třídě. Obecně platí tato omezení:
-
Sloupec, který nemá povolenu editaci (rozlišuje se při vytvoření nebo při změně záznamu) nemůže být editován, i když uživatel má roli umožňující editaci.
-
Sloupec, který nemá povoleno zobrazení (rozlišuje se v seznamu záznamů, v detailu záznamů a v detailním seznamu záznamů) nemůže být zobrazen, i když uživatel má roli umožňující zobrazení.
-
Pokud je oprávnění přiděleno ve vztahu k určité organizační struktuře, uživatel má práva pouze na záznamy patřící do jeho organizační jednotky nebo do jí podřízených organizačních jednotek (v případě nastavení I přes podřízené).
Nad tuto obecnou úpravu lze omezit oprávnění na čtení nebo editaci jednotlivých sloupců prostřednictvím skriptů (pro seznam záznamů nebo detail záznamu) definovaných v detailu třídy na záložce Skripty. Rozhodnutí, zda sloupec má být zobrazen/povolen k editaci, lze založit na členství uživatele v roli a použít funkce IsUserInRole nebo IsUserInModelRole, kterými disponuje objekt skriptu Person. Podobně lze řídit oprávnění na zobrazení/stažení souborů ve sloupci typu Soubor.
Příklad
1. Nastavení sloupce pouze ke čtení
Tento skript pro detail záznamu definovaný v detailu třídy na záložce Skripty zakáže editaci sloupce "Tester" všem uživatelům, kteří nemají roli "project-manager" nebo "application-manager".
function OnAfterLoadColumns()
{
if ( !( OG.Person.IsUserInRole('project-manager') || OG.Person.IsUserInRole('application-manager')))
{
OGColumns.GetByCode('tester').ReadOnly = true;
}
}
Funkce IsUserInRole vrátí true, i když je daná role na modelu zakázána. Pokud chceme editaci povolit, pouze pokud je uživatel členem role a zároveň je role na daném modelu povolena, použijeme funkci IsUserInModelRole.
function OnAfterLoadColumns()
{
if ( !( OG.Person.IsUserInModelRole('project-manager',2) || OG.Person.IsUserInModelRole('application-manager',2)))
{
OGColumns.GetByCode('tester').ReadOnly = true;
}
}
2. Skrytí sloupce
Tento skript pro detail záznamu definovaný v detailu třídy na záložce Skripty skryje sloupec "Tester" všem uživatelům, kteří nemají roli "project-manager" nebo "application-manager" nebo je mají, ale tyto role nejsou na modelu Id=2 povoleny.
function OnAfterLoadColumns()
{
if ( !( OG.Person.IsUserInModelRole('project-manager',2) || OG.Person.IsUserInModelRole('application-manager',2)))
{
OGColumns.GetByCode('tester').Visible = false;
}
}
Zároveň se skrytím sloupce dojde k posunu ostatních prvků na stránce. Pokud polohu ostatních prvků nechceme ovlivnit a chceme místo dosavadního, nyní skrývaného prvku ponechat prázdné místo, použijeme vlastnost HideWithBlankSpace datového typu OG ColumnClassDefUserSet.
function OnAfterLoadColumns()
{
if ( !( OG.Person.IsUserInModelRole('project-manager',2) || OG.Person.IsUserInModelRole('application-manager',2)))
{
OGColumns.GetByCode('tester').Visible = false;
OGColumns.GetByCode('tester').HideWithBlankSpace =true;
}
}
3. Zabránění zobrazení/stažení souboru
Tento skript pro sloupec typu Soubor zakáže zobrazení/stažení souborů v tomto sloupci všem uživatelům, kteří nemají roli "project-manager" nebo "application-manager".
if ( !( OG.Person.IsUserInModelRole('project-manager',2) || OG.Person.IsUserInModelRole('application-manager',2)))
{
OGForm.SetError('You are not authorized to download or display the file content.');
return false;
}