Práva

Z tymy.cz
Přejít na: navigace, hledání

Práva slouží k přesnému vymezení co bude kterému uživateli povoleno a co zakázáno. Uplatňují se v celé aplikaci - od jednoduchých stránek jako je Seznam týmu až po komplexní logiku implementovanou v hlasování. Proto je dobré vědět, jak práva fungují a jak je správně definovat.

Začneme trochou teorie - vysvětlením principu - a pak se podíváme jak práva definovat.

Obsah

Druhy práv

Ve vaší aplikaci na tymy.cz exitují 3 druhy práv

  1. práva na stránku
  2. systémová práva
  3. uživatelská práva

Co do způsobu definice práv se jednotlivé typy neliší. Rozdíl je v jejich využití a také existuje drobná odlišnost při vyhodnocení uživatelských práv.

Práva na stránku

Celá aplikace na tymy.cz je vlastně skupina stránek. Existuje např. stránka na vložení docházky, stránka na zobrazení docházky, stránka s diskuzí atd. Uživatel si vyžádá zobrazení stránky většinou tak, že klikne na odkaz v menu nebo na jiné stránce. Než se ovšem kterákoliv stránka zobrazí, otestuje se, zda má přihlášený uživatel právo ji vidět. Pokud mu někdo (administrátor) prohlížení stránky zakázal, zobrazí se pouze chybová hláška. Tato práva, která se automaticky kontrolují před vstupem na stránku jsou překvapivě označována jako práva na stránku.

A nyní jedna důležitá věc. Práva na stránky se implicitně nevytvářejí a pokud ho administrátor sám nenadefinuje, jsou všechny stránky přístupné všem. Co to znamená a jak to funguje?

Zjednodušeně řečeno - právo na stránku vytvoříte až tehdy, pokud chcete určitým uživatelům extra zakázat přístup do nějaké oblasti aplikace. Tento zákaz bude platit "navíc" k systémovým právům (viz dále). V praxi se stránková práva příliš nevyužívají. Akce které by neměli provádět všichni uživatelé omezují systémová práva (například omezení vytváření nových akcí). Stránkové právo je jakási ochrana navíc, když např. neaktivním členům zakážete prohlížet seznam týmu.

Systémová práva

Zde je jádro pro nastavování oprávnění pro základní akce v aplikaci, ale začněme od příkladu.

Nemělo by příliš smysl, aby všichni uživatelé mohli dělat vše. Aby každý mohl zakládat týmové akce, ankety, upravovat údaje jiných členů týmu atd. Proto je pro každou akci v systému, která by dle názoru autora měla podléhat omezení, definováno systémové právo. Před provedením akce se pak právo testuje proti aktuálnímu uživateli.

Systémová práva nabízejí detailnější kontrolu oproti stránkovým právům. Například správa uživatelů (klik na Údaje uživatele v hlavním menu). Stránkovým právem buď povolíte přístup na celou stránku, nebo ho zakážete. Existují ale systémová práva, pomocí kterých lze definovat kdo může měnit údaje jiných uživatelů, kdo může zakládat uživatele, kdo je může mazat atd.

Všechna systémová práva jsou vytvořena při instalaci aplikace a admin nemá možnost je mazat nebo vytvářet - může pouze měnit jejich definici (pravidla přístupu).

Systémová práva sice umožňují detailně nastavit chování aplikace, na druhou stranu daní za tyto možnosti je relativně zdlouhavá definice. Např. máte nového člena, kterému chcete povolit spravovat ostatní uživatele. U každého systémového práva vztahujícím se ke správě uživatelů byste mohli přidat tohto člena, ale to by byla poměrně pracné (nebo přinejmenším otravné). Proto byly navíc zavedeny uživatelské role.

Člen týmu může mít přidělené určité role - např. správce uživatelů. Roli lze přidělit jedním zaškrtnutím v definici člena. Práva v systému potom mohou být definovaná nejen podle konkrétních členů, ale také podle rolí. To je případ většiny systémových práv. Role jsou zatím pevně zakódované v aplikaci a jsou rozšiřovány jen vyjímečné s novým vývojem.

Uživatelská práva

Tato práva jsou zcela otevřená adminům týmu. Je možné je vytvářet, pojmenovat, mazat a upravovat. Využívají se pak většinou k nastavení přístupu k objektům, které jsou vytvářené adminy. Těmito objekty v tuto chvíli mohou být diskuze nebo ankety. Obojí je již plně nastavitelné přes webové rozhraní, takže když admin vytváří diskuzi nebo anketu, může vybrat pomocí uživatelského práva kdo danou anketu (diskuzi) uvidí, bude moct přispívat či hlasovat atd.

Uživatelská práva jsou poměrně mocným nástrojem, který umožňuje do detailu nastavit přístup uživatelů. V současné době probíhá další vývoj, který doufejme umožní nastavit uživatelská práva na konkrétní akce, tedy např. specifikovat kdo danou akci vidí, může se k ní přihlásit a může zadat výslednou docházku. Rovněž reporty docházky budou mít podporu uživatelských práv, ale zatím ještě není dopsána ani konfigurace reportů přes web.

Definice práva

Definice práv se provádí pomocí odkazu Oprávnění na hlavní stránce. Definovat práva může pouze administrátor, nebo uživatel s rolí admin.

Stránka je rozdělena na 3 části podle typu jednotlivých práv. Možnosti v jednotlivých částech se mírně liší, ale princip již byl popsán výše. Práva na stránku můžete vytvářet, mazat a upravovat. Nemůžete jim ovšem změnit jméno, protože jsou vázány ke konkrétním stránkám v aplikaci. Po smazání stránkového práva je stránka přístupná všem (implicitní stav). Systémová práva nelze vytvářet a mazat, lze pouze upravit jejich definici. Uživatelská práva lze upravit, mazat a vytvářet s vlastním jménem.

Při vlastní definici práva pomocí zašktávátek (checkboxů) vybíráte uživatele (nebo celé skupiny), kteří budou mít přístup povolen nebo zakázán. Skupiny lze vybrat podle statusů a podle rolí. [-Detaily o statusech a rolích lze najít na stránce o správě uživatelů.-] Jednotlivá nastavení lze kombinovat. Můžete např. povolit přístup pro všechny správce uživatelů a zakázat pro konkrétní osobu, tj. kombinace role a člena. Nebo povolit přístup správcům docházky mimo aktivních členů - kombinace role a statusu. U složitějších kombinací je vhodné ověřit si chování v dolní čísti stránky (viz dále). Uživatelé s rolí admin se ověřují speciálně, viz Vyhodnocení práva.

V dolní části stránky je vidět kteří uživatelé mají povolený přístup dle uložené definice práva. To znamená, že je zobrazen stav při posledním uložení resp. úvodním nahrání práva. Když měníte definci práva zaškrtáváním položek, tento náhled uživatelů se nemění. Je znovu aktualizován až když definici uložíte příslušným tlačítkem.

Vyhodnocení práva

Konkrétní právo se vyhodnocuje podle zadaných kriterií. Předpokládá se, že co není zakázáno je povoleno. Tedy pokud je v definci pouze zakázáno pár uživatelů (či skupina), ostatním je přístup povolen. Úplně "čisté" právo bez jediného zaškrtnutí rovněž povolí všechny uživatele. Na druhou stranu pokud v definici práva pouze povolíte určité uživatele či skupiny, předpokládá se že ostatní mají mít přístup zakázaný.

Není přinosem zde do podrobna vysvětlovat logiku vyhodnocení, snadnější je vše si vyzkoušet na nějakém právu přímo v praxi.

Vyhodnocení práv se většinou provádí co nejdříve a tato práva tak ovlivňují již vzhled hlavního menu. Např. pokud nemáte právo číst nějakou diskuzi, neuvidíte ji ani v menu - obdobně pro hlasování v anketách. Není to tak, že byste mohli kliknout na odkaz a až potom by byla zobrazena chybová hláška o nedostatečném oprávnění.

Neexistující práva

Jak již bylo řečeno, pokud neexistuje stránkové právo, je přístup ke stránce povolen. Systémové právo existuje vždy, protože nelze vymazat. Jestliže někde bude chybět, je to chyba systému a kontrola práva neprojde. Pokud neexistuje uživatelské právo, je přístup pro danou operaci odepřen. Tato situace může poměrně snadno nastat, protože pokud mažete uživatelské právo, neprovádí se kontrola jestli není někde použité. Zodpovědnost je na vás. Jestliže si tedy např. nastavíte čtení diskuze podle nějakého práva a jeho definici potom smažete, nebude možné tuto diskuzi dále číst.

Role ADMIN

Zkráceně řečeno - Admin může vše. Jestliže uživatel je admin nebo má roli admin, defince práva není vůbec zkoumána. Má to ovšem jednu vyjímku. Toto platí pro práva na stránku a systémová práva. U uživatelských práv byl původně stejný princip, ale nyní se uživatelská práva "poctivě" vyhodnocují a může se tak stát, že bude adminovi odepřen přístup.

Tato změna byla zavedena z toho důvodu, že někdy může být odepření přístupu pro admina žádoucí. Např. využíváte-li anketu jako evidenci s omezením pro hlasování na jediného zodpovědného člena, je matoucí aby ve výsledcích byly prázdné sloupce s hlasováním pro všechny adminy. Pokud vám tento příklad nepomohl ale spíše naopak, smiřte se prostě s tvrzením že občas se hodí mít právo nepřístupné pro adminy. Na druhou stranu kterýkoliv admin si může definci uživatelských práv upravit dle svých potřeb.