17. 12. 2009

PostNuke - Práva v praxi : Ke stažení a Odkazník

V tomto díleseriálu o právech si projdeme moduly CmodsDownload (Ke stažení) a CmodsWebLink (Odkazník). Jelikož se jedná o moduly od stejného vývojového týmu, je princip práv prakticky shodný.

Komponenty

Práva pro moduly Cmods máte k dispozici v souborech modules/CmodsDownload/pnversion.php: a modules/CmodsWebLinks/pnversion.php:
  • 'CmodsDownload::Category' => 'Category name::Category ID' zajišťuje práva pro přístup do jednotlivých kategorií
  • 'CmodsDownload::Item'     => 'Itemname::ID' napomáhá přidávání položek do Download centra
  • 'CmodsDownload::Add'      => '::' napomáhá přidávání položek do Download centra
  • 'CmodsWebLinks::Category'  => 'Category name::Category ID' zajišťuje přístup k položkám uvnitř příslušné kategorie Odkazníku
  • 'CmodsWebLinks::Link'   => 'Category name:Link name:Link ID' upravuje práva přímo pro konkrétní odkazy
  • 'CmodsWebLinks::Add'   =>'::' napomáhá přidávání odkazů do katalogu
Považuji již za zbytečné popisovat konkrétní příklady instancí, takže pouze stručné doporučení. Maximálně využívejte komponenty 'CmodsDownload::Category a 'CmodsWebLinks::Category. Pro povolení přidávání položek pak nastavte právo Přidat u komponent CmodsDownload::Add a CmodsWebLinks::Add. Zároveň doporučuji využívat spíše ID než názvy kategorií.

Síla práv

Hned na začátku bych chtěl předeslat, že tyto moduly nemám do detailu prostudované, takže mi některá práva mohly uniknout. Prozatím mi jsou zřejmá tato práva:
  • None = Nic : dané položky v příslušné kategorii nejsou zobrazovány
  • Read = Číst : daní položky v příslušné kategorii je možné zobrazit
  • Edit = Úprava : uživatel může upravovat obsah položky a to i tehdy, pokud není jeho autorem (pozor, nepleťe si to s možností požádat o změnu obsahu...)
  • Add = Přidat : toto právo je využíváno u komponent CmodsDownload::Add a CmodsWebLinks::Add
  • Delete = Smazat : uživatel je oprávněn smazat položku a to i tehdy, pokud není jeho autorem
  • Admin = Administrátor : uživatel má plná práva a tudíž může plně konfigurovat modul

Omezujeme přístup

Představme si, že máme skupinu Žáci. Dále pak v rámci Download centra existuje kategorie Žákovské úložiště s ID=5 a uvnitř vnořené kategorie Výuka s ID=6 a Zábava s ID=15. Žáci mohou tyto kategorie plně administrovat. Registrovaní uživatelé si mohou prohlížet, ale neregistrovaní tyto kategorie nevidí. Práva budou nastavena následovně:

Skupina
Komponenta
Instance
Oprávnění
Žáci
CmodsDownload::Category
::(5|6|15)
Admnistrátor
Všichni uživatelé
CmodsDownload::Category
::(5|6|15)
Číst
Neregistrovaní
CmodsDownload::Category
::(5|6|15)
Nic
Všichni uživatelé
CmodsDownload::Add
::
Přidat
Poslední řádek s předchozími řádky zdánlivě nesouvisí, nicméně zajišťuje, že registrovaní uživatelé mohou poslat soubor do Download centra.
U tohoto příkladu však rozebereme dvě odlišné varianty zápisu instance:
  • ::(6|15) - Co se stane, když zapomeneme uvést ID hlavní kategorie? Otázkou je v jakém případě ...

    • Pokud u žáků, pak tato skupina nebude moci administrovat hlavní kategorii, ale vnořené kategorie již ano.
    • Pokud u registrovaných uživatelů, pak může dokonce nastat zvláštní případ, kdy hlavní kategorie nebude vůbec vidět, ale do vnořených kategorií se mohou uživatelé dostat... Jak? ... pokud znají správnou URL adresu.


  • ::5 - A co, když zapomeneme na vnořené kategorie? Pak například žáci by v takovém přpadě mohly spravovat soubory ke stažení v rámci kategorie Žákovské úložiště, ale ve vnořených kategorií již tyto pravomoce nemají ...