1. 12. 2009

PostNuke - Nový seriál : Práva

Ach ta práva . S těmi si vůbec nevím rady ... Zmatek nad zmatek ...
Pokud máte obdobné pocity, pak jistě uvítáte můj záměr rozběhnout seriál o právech.

Nejprve odkazy ...

 Vzhledem k tomu, že práva jsou poměrně podstatnou součástí PostNuke, je jim také věnována patřičná pozornost v originální dokumentaci tohoto systému. Nejprve odkaz na kapitolu v základní dokumentaci PostNuke. Následně pak dva zajímavé odkazy na další dokumenty - ke stažení příručka pnGuide a stránky pnHelp.
I my jsme se již okrajově právy zaobírali v článku Práva v PostNuke - jak dál? a to především v rámci posledního komentáře od Tacka. A nezapomeňme ani na kapitolu Práva v příručce Školního webu (i když upřímně tato část se zaobírá spíše konfigurací námi upraveného rozhraní).
Kromě dokumentace nesmíme zapomenout ani na diskusní fórum na originálním serveru PostNuke. A abychom nebyli pozadu ;-), otevíráme i vlastní diskusní fórum.

Jak fungují práva?

Nejprve stručně teorie. Systém práv obecně funguje na dvojím principu. Buď jsou práva nedílnou součástí objektu (známe z DOSu nebo Linuxu) nebo jsou oddělená od objektuve zvláštní struktuře, většinou databázové tabulce (účetnictví, evidence žáků apod.).
PostNuke využívá druhou variantu, přičemž práva ukládá ve své databázi do tabulky groups_perms. Přitom velmi důležité je pořadí řádků (konkrétně se jedná o pole pn_sequence). Jakmile totiž systém kontroluje práva, prochází řádky "odshora dolů" a jakmile zjistí, že může právo uplatnit, další řádky již systém nezajímá.
Vysvětlíme si na příkladu. Představte si, že máte téma na články Pro vybrané. Chcete nastavit práva tak, aby administrátoři mohli s článkem dělat, co uznají za vhodné, skupina Vybraní jej mohou komentovat, registrovaní uživatelé číst a neregistrvaní uživatelé takové články ani neuvidí. Pak musí být řádky nastaveny takto:

Skupina
Komponenta
Instance
Oprávnění
Administrátor
Články
Pro vybrané
Administrátor
Vybraní
Články
Pro vybrané
Komentář
Všechny skupiny
Články
Pro vybrané
Číst
Neregistrovaní
Články
Pro vybrané
Nic
Předpokládejme, že pracuje administrátor, který je zároveň ve skupině Vybraní. V takém případě se uplatní první řadek a ostatní řádky se při kontrole práv již neprochází. Takže se ani neomezí práva na pouhý komentář.
Předpokládejme, že se přihlásí uživatel, který patří do skupiny Vybraní, ale není administrátorem. Pak se projde první řádek, ale neuplatní se práva (uživatel přece není administrátorem). Druhý řádek však již vyhovuje a proto uživatel bude moci články z daného tématu komentovat. Další řádky se již neprochází.
Je-li uživatel registrovaný, ale není ani administrátor ani nepatří mezi vybrané, pak se neuplatní první ani druhý řádek, ale uplatní se řádek třetí. Čtvrtý se již neprochází.
Neregistrovanému uživateli pak vyhovuje až poslední řádek.
Vyzkoušejme si však nějaké změny.
Nejprve nastavíme slabší práva u druhého řádku a silnější práva u řádku třetího:

Skupina
Komponenta
Instance
Oprávnění
Administrátor
Články
Pro vybrané
Administrátor
Vybraní
Články
Pro vybrané
Číst
Všechny skupiny
Články
Pro vybrané
Komentář
Neregistrovaní
Články
Pro vybrané
Nic
Pro administrátora se chování nezmění a to ani tehdy, pokud pokud je ve skupině Vybraní. Uplatní se totiž ihned první řádek, takže ostatní jej nezajímají.
Přihlásí-li se však uživatel, který patří do skupiny Vybraní, ale není administrátorem, chování se změní.Prvnířádek se neuplatní, ale uplatní se druhý řádek. Takže skupina Vybraní může články v daném tématu pouze číst. Třetí řádek se již nprochází! Takže i když je uživatel registrovaný, nemůže článek komentovat!
Předpokládejme ale, že je uživatel registrovaný, ale není ani administrátor ani nepatří mezi vybrané. Pak se uplatní až třetí řádek a takový uživatel může příslušné články komentovat. Tedy zdánlivě paradoxně uživatel, který nepatří do skupiny Vybraní má silnější práva než ten, který mezi vybrané uživatele patří!
Neregistrovanému uživateli pak vyhovuje až poslední řádek a zde se nic nezměnilo.
Vraťme se k první tabulce a posuňme třetí řádek na první místo:

Skupina
Komponenta
Instance
Oprávnění
Všechny skupiny
Články
Pro vybrané
Číst
Administrátor
Články
Pro vybrané
Administrátor
Vybraní
Články
Pro vybrané
Komentář
Neregistrovaní
Články
Pro vybrané
Nic
Pro administrátora i skupinu uživatelů Vybraní se zásadním způsobem změní chování. Uvažujte - jak administrátoři, tak Vybraní "patří totiž i do Všech skupin". Takže pro všechny registrované uživatele se uplatní ihned první řádek a ostatní se již ignorují! Z toho plyne, že ani administrátor ani Vybraný se nedostane ke svým řádkům a tudíž je jedno, co tam je nastavené.
Pouze u neregistrovaného uživatele se zase nic nezměnilo.
Vraťme se k první tabulce a vnesme do ní trochu zmatek. Vpašujeme do tabulky snahu o nastavení práv pro Fotogalerii:

Skupina
Komponenta
Instance
Oprávnění
Administrátor
Články
Pro vybrané
Administrátor
Vybraní
Fotogalerie
Pro vybrané
Nic
Vybraní
Články
Pro vybrané
Komentář
Všechny skupiny
Články
Pro vybrané
Číst
Neregistrovaní
Články
Pro vybrané
Nic
Zde můžu být stručný - při kontrole přístupu k článkům z tématu Pro vybrané se vůbec nic nezměnilo. mohlo by to sice svádět k tomu, že skupině Vybraní se úplně zamezil přístup (nastavené oprávnění je Nic), ale to se týká úplně jiné kompenty ...

Pokud jste výše uvedené příklady pochopili, blahopřeji! Máte nad právy prakticky vyhráno!
Teď nás "pouze" čeká vysvětlování a uvádění konkrétních příkladů. Musíme si totiž nejdříve vysvětlit, co konkrétně znamená pojem Komponenta a Instance. A nesmíme zapomenout na to, že celý Postnuke se skládá z modulů a bloků ...
Takže pár dílů tohoto seriálu nás dozajista čeká.