WebToDate/Neveřejná část/Tipy a návody: Porovnání verzí
m Stránka WebToDate 4.1/Neveřejná část/Tipy a návody přemístěna na stránku WebToDate/Neveřejná část/Tipy a návody |
|||
| (Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.) | |||
| Řádek 1: | Řádek 1: | ||
[[Category:WebToDate | [[Category:WebToDate Neveřejná část]] | ||
[[Category:Neveřejná část]] | [[Category:Neveřejná část]] | ||
== Vytváření pravidel modulu == | == Vytváření pravidel modulu == | ||
| Řádek 34: | Řádek 34: | ||
Pro stránky platí, že se vždy nacházejí v právě jednom uzlu stromu kategorií, takže zde je situace jasná a vyhodnocuje se na základě právě této jedné kategorie. | Pro stránky platí, že se vždy nacházejí v právě jednom uzlu stromu kategorií, takže zde je situace jasná a vyhodnocuje se na základě právě této jedné kategorie. | ||
== Implementace řízení přístupu k jednotlivým zprávám == | |||
Standardně se modul Neveřejná část používá na znepřístupnění části webové prezentace anonymním uživatelům pravidly, která definují hromadný výběr neveřejného obsahu - např. zprávy a stránky z dané kategorie apod. V případě, že nelze nějakým hromadným způsobem stanovit, který obsah je neveřejný, lze možnost volit co je a co není veřejné delegovat na uživatele spravující obsah, a to pomocí práce s hodnotami nějakého vstupního pole. | |||
V tomto případě postupujte následovně: | |||
* V [[../../Referenční/Struktura_obsahu|přizpůsobitelné struktuře databáze zpráv]] definujte nějaké pole, které bude vyznačovat, zda je zpráva veřejná nebo neveřejná. | |||
* Zvažte možné hodnoty pro toto pole a volitelně pro něj nadefinujte [[../../Referenční/Struktura_obsahu#Číselníky|číselník]]. Pokud existuje jen jedna skupina uživatelů, kteří mohou daný neveřejný obsah zobrazovat, postačí vkládat např. hodnotu 1 u zpráv, které jsou neveřejné, a nevyplňovat (nebo hodnotu 0) u veřejně přístupných zpráv. Pokud existuje např. více skupin a u zpráv je zároveň vhodné definovat, pro kterou skupinu je zpráva určena, může číselník nabývat např. hodnot 1,2,3 (tři skupiny uživatelů). Pokud používáte číselník, mějte na paměti, že do databáze se ukládají (a tím pádem zde porovnávají) [[../../Referenční/Struktura_obsahu#Číselníky|hodnoty číselníku]], nikoli systémové nebo lokalizované názvy položek číselníku. | |||
* Založte nové [[../Reference#Pravidla|pravidlo modulu]] podle následujícího otisku obrazovky. Vzhledem k tomu, že více kritérií v pravidle se spojuje logickou spojkou "a zároveň", typicky půjde o samostatné pravidlo, které využívá jen možnost '''Vstupní pole obsahuje hodnotu'''. | |||
[[Image:neverejnacast-pravidla-pole-hodnota.png|center]] | |||
* Pomocí nastavení [[../Reference#Neveřejné zprávy|'''Administrace''' - '''Neveřejné zprávy''']] zahrňte toto pravidlo do použitých pravidel. V tu chvíli jsou zprávy vyhovující tomuto kritériu neveřejné. | |||
* Pomocí nastavení [[../Reference#Uživatelé|'''Administrace''' - '''Uživatelé''']] přiřaďte toto pravidlo skupině nebo skupinám uživatelů, kteří k těmto zprávám mají mít přístup. | |||
Poslední krok platí pro případ, kdy se nerozlišují okruhy zpráv pomocí hodnoty daného pole. Pokud různé hodnoty mají vyznačovat, že různé skupiny uživatelů mají k různým zprávám přístup, je třeba definovat další pravidla. Tedy v [[../Reference#Neveřejné zprávy|'''Administrace''' - '''Neveřejné zprávy''']] se použije jen jedno pravidlo definující, že pokud dané pole obsahuje hodnotu ''NOTNULL'' (jakoukoli neprázdnou), je zpráva neveřejná, ale v [[../Reference#Uživatelé|'''Administrace''' - '''Uživatelé''']] se nastaví pro každou skupinu jiné pravidlo, tj. např. pokud má zpráva v daném poli hodnotu 1, je přístupná skupině A, pokud hodnotu 2, je přístupná skupině B apod. | |||
Aktuální verze z 3. 6. 2014, 13:40
Vytváření pravidel modulu
Při vytváření pravidel modulu je vhodné si uvědomit, že modul sám o sobě nezajišťuje přímou závislost mezi pravidly určujícími, které položky nejsou veřejně přístupné a pravidly určujícími, která skupina uživatelů má přístup ke kterým zprávám. Při nevhodné definici těchto pravidel lze tak např. vytvořit stav, kdy existují zprávy, ke kterým nemá přístup nikdo. Jednoduchý příklad vedoucí k tomuto nežádoucímu jevu je následující:
Ve stromu kategorií WebToDate máme kategorii K0, která má přímo podřízené kategorie K1 a K2. Pravidlo pro veřejně nepřístupné zprávy nadefinujeme tak, že se jedná o položky z kategorie K0 včetně všech podkategorií. V modulu Registrace a personalizace máme dvě skupiny uživatelů A a B. Pro každou skupinu nadefinujeme jedno pravidlo – pro skupinu A přístup do kategorie K1 a pro skupinu B přístup do kategorie K2. V takovém případě jsou pravidla korektně nadefinovaná, jednoduše se rozliší neveřejné zprávy od veřejných apod., ale zprávy vložené přímo do kategorie K0 nejsou přístupné nikomu – jsou označeny jako neveřejné, ale pro žádnou skupinu uživatelů k nim není zřízen přístup.
V tomto příkladu patrně budeme chtít, aby zprávy přímo vložené do kategorie K0 byly přístupné oběma skupinám uživatelů A i B. Pro tyto účely musíme v modulu definovat ještě jedno pravidlo, která vybírá zprávy z kategorie K0 (pouze z této kategorie, bez podkategorií). Toto pravidlo pak přiřadíme jak skupině A tak skupině B, čímž dosáhneme požadovaného efektu – obsah celé kategorie K0 a všech jejích podkategorií není veřejně přístupný, zprávy přímo v kategorii K0 zobrazí skupina A i B, zprávy z kategorie K1 pouze skupina A a zprávy z kategorie K2 pouze skupina B.
Zabezpečení přístupu ke stránkám a souborům z databáze zdrojů
Od verze WebToDate 4.0 je zaveden strom kategorií, který umožňuje opatřit vhodnými metadaty nejen zprávy, ale i stránky a soubory (v databázi zdrojů). Zatímco dřívější verze tohoto modulu umožňovaly řídit přístup pouze k samotným zprávám, od verze WebToDate 4.0 je toto možné díky stromu kategorií i pro stránky a soubory. Je tudíž možné vytvářet kompletní neveřejné zóny, kde se kontroluje přístup ke všem zmíněným typům objektů.
Pro jiné typy objektů než zprávy v prvé řadě platí, že přístupová práva může modul kontrolovat jen v případě, že objekt se zobrazuje dynamicky. Ani tato podmínka ale nestačí – ve WebToDate lze volit, zda se objekty tohoto typu uloží do veřejné nebo privátní zóny. Pokud je třeba zajistit přístup pouze vybrané skupině registrovaných uživatelů, musí být chráněné objekty uloženy v privátní zóně. V opačném případě jsou tyto objekty uloženy v adresáři přímo přístupném přes www server (wwwroot) a pokud kdokoliv zjistí URL objektu, může jej v takovém případě bez omezení zobrazit či stáhnout, i kdyby podléhal pravidlům modulu.
Funkce Kontrola dat vyhledává stránky a soubory, které podle pravidel modulu patří do neveřejné části, ale jsou volně vystaveny v tomto veřejně přístupném adresáři.
Optimální nasazení z hlediska zátěže
Při vyhodnocování pravidel modul postupuje následovně:
- při vyhodnocování toho, zda je zpráva veřejná nebo neveřejná se vyhodnocují postupně zadaná pravidla tak dlouho, dokud se nezjistí, že zpráva není veřejně přístupná nebo jsou vyhodnocena všechna pravidla. Toto vyhodnocování se spouští při zobrazení každé zprávy.
- při vyhodnocování toho, zda je zpráva přístupná danému uživateli se vyhodnocují postupně pravidla pro skupinu ve které se uživatel nachází tak dlouho, dokud se nezjistí, že zprávu lze uživateli zobrazit nebo jsou vyhodnocena všechna pravidla. Toto vyhodnocování se spouští pouze pokud je v předchozím kroku zjištěno, že zpráva není veřejně přístupná.
Z výše uvedených skutečností vyplývá, že počet pravidel je vhodné udržet co nejmenší, přičemž daleko důležitější to je pro pravidla zařazená jako pravidla pro Neveřejné zprávy. Tato pravidla se spouštějí při každém zobrazení zprávy, a tudíž v celkovém objemu více zatěžují server. Doporučení je tedy následující:
- Pro výkon serveru je nejlepší, když je pravidlo určující, jak se pozná veřejná zpráva od neveřejné, jen jedno.
- Pravidel pro skupiny uživatelů může být i více, ale počet těchto pravidel (nastavených pro jednu konkrétní skupinu uživatelů) je vždy vhodné udržovat co nejmenší.
Zprávy a zdroje ve více kategoriích
Zprávy i zdroje lze ve WebToDate zařadit do více než jedné kategorie, přičemž právě jedna kategorie je označena jako výchozí.
Pro tento modul je zařazení do výchozí kategorie irelevantní, zpráva se považuje za neveřejnou v případě, že alespoň jedna kategorie, do které je zařazena, je označena v pravidlech modulu jako neveřejná, lhostejno, zda se jedná o výchozí nebo další kategorii.
Pro stránky platí, že se vždy nacházejí v právě jednom uzlu stromu kategorií, takže zde je situace jasná a vyhodnocuje se na základě právě této jedné kategorie.
Implementace řízení přístupu k jednotlivým zprávám
Standardně se modul Neveřejná část používá na znepřístupnění části webové prezentace anonymním uživatelům pravidly, která definují hromadný výběr neveřejného obsahu - např. zprávy a stránky z dané kategorie apod. V případě, že nelze nějakým hromadným způsobem stanovit, který obsah je neveřejný, lze možnost volit co je a co není veřejné delegovat na uživatele spravující obsah, a to pomocí práce s hodnotami nějakého vstupního pole.
V tomto případě postupujte následovně:
- V přizpůsobitelné struktuře databáze zpráv definujte nějaké pole, které bude vyznačovat, zda je zpráva veřejná nebo neveřejná.
- Zvažte možné hodnoty pro toto pole a volitelně pro něj nadefinujte číselník. Pokud existuje jen jedna skupina uživatelů, kteří mohou daný neveřejný obsah zobrazovat, postačí vkládat např. hodnotu 1 u zpráv, které jsou neveřejné, a nevyplňovat (nebo hodnotu 0) u veřejně přístupných zpráv. Pokud existuje např. více skupin a u zpráv je zároveň vhodné definovat, pro kterou skupinu je zpráva určena, může číselník nabývat např. hodnot 1,2,3 (tři skupiny uživatelů). Pokud používáte číselník, mějte na paměti, že do databáze se ukládají (a tím pádem zde porovnávají) hodnoty číselníku, nikoli systémové nebo lokalizované názvy položek číselníku.
- Založte nové pravidlo modulu podle následujícího otisku obrazovky. Vzhledem k tomu, že více kritérií v pravidle se spojuje logickou spojkou "a zároveň", typicky půjde o samostatné pravidlo, které využívá jen možnost Vstupní pole obsahuje hodnotu.

- Pomocí nastavení Administrace - Neveřejné zprávy zahrňte toto pravidlo do použitých pravidel. V tu chvíli jsou zprávy vyhovující tomuto kritériu neveřejné.
- Pomocí nastavení Administrace - Uživatelé přiřaďte toto pravidlo skupině nebo skupinám uživatelů, kteří k těmto zprávám mají mít přístup.
Poslední krok platí pro případ, kdy se nerozlišují okruhy zpráv pomocí hodnoty daného pole. Pokud různé hodnoty mají vyznačovat, že různé skupiny uživatelů mají k různým zprávám přístup, je třeba definovat další pravidla. Tedy v Administrace - Neveřejné zprávy se použije jen jedno pravidlo definující, že pokud dané pole obsahuje hodnotu NOTNULL (jakoukoli neprázdnou), je zpráva neveřejná, ale v Administrace - Uživatelé se nastaví pro každou skupinu jiné pravidlo, tj. např. pokud má zpráva v daném poli hodnotu 1, je přístupná skupině A, pokud hodnotu 2, je přístupná skupině B apod.