AccessControl
Je rozšíření, které umožňuje nastavovat a omezovat přístup ke stránkám přímo uživatelům. Původní verze rozšíření accesscontrol-0.8 příliš našim potřebám nevyhovovala a navíc obsahovala drobné nedostatky:
- Za každou skupinou v elementu accesscontrol musely následovat dvě oddělovací čárky a to včetně poslední skupiny v seznamu. Pokud tomu tak nebylo, nevytáhnul skript seznam skupin správně.
- Jmenný prostor pro vytváření uživatelských skupin bylo možné nastavit pouze "natvrdo" na jednu skupinu přímo v kódu rozšíření.
- Nebylo možné současně používat systémové skupiny a uživatelské skupiny. Buď jedno, nebo druhé
- Nebylo možné nastavit pouze právo čtení na jednotlivce, vždy pouze na skupinu
- Rozšíření postrádalo standardní lokalizaci používanou v MediaWiki
Navíc kód rozšíření byl slušně řečeno velmi nepřehledný, proto jsem toto rozšíření přeprogramoval. V současnosti jej lze tedy používat následujícím způsobem.
Chce-li někdo omezit přístup k některé stránce, musí buď nastavit některou z existujících systémových skupin, nebo nejprve založit vlastní uživatelskou skupinu.
Uživatelskou skupinu tvoří množina uživatelských jmen, které jsou položkami první úrovně odrážkového seznamu. Název této uživatelské skupiny pak tvoří titul stránky s tímto seznamem, což může být libovolná stránka v libovolném jmenném prostoru. Lze tedy jak založit vlastní jmenný prostor, tak využít pro založení uživatelské skupiny některý stávající, který může mít přístup chráněný i jinak než přes AccessControl. Viz Nápověda:Jak omezit přístup ke stránce .
Postup pro vytvoření takové stránky je následující:
- V již existující stránce vytvořím (zatím neplatný) odkaz na uživatelskou skupinu. Zvolím si název kupř. Moje:Skupina
- Kliknutím na tento odkaz a založením stránky mi tak vznikne jmenným prostor s názvem Moje, který bude zahrnovat stránku Skupina. Jiní uživatelé si mohou pro své uživatelské skupiny založit třeba jmenný prostor Naše, který také může mj. obsahovat stránku s názvem Skupina
- Do této stránky pak umístím seznam uživatelů, kterým chci povolit přístup ke své stránce. Použiji přitom následující syntaxi:
* Já * Jiný uživatel * Další uživatel (ro) |
Do uživatelského seznamu je třeba zapsat uživatelské jméno tak jak s ním pracuje wiki, tj. s velkým počátečním písmenem |
Tím, že jsem uživateli "Další uživatel" přidal za jméno (ro)
jsem mu nastavil pouze právo pro čtení. Nebude-li tedy současně členem jiné skupiny s právem editovat mou stránku, pak bude moci její obsah pouze prohlížet, nikoliv upravovat.
Přístup k této uživatelské skupině pak mohu rovnou ochránit přidáním elementu accesscontrol
<accesscontrol>Moje:skupina</accesscontrol> |
Aplikace práv je už ze zmíněného patrná. Do stránky u které budete chtít omezit přístup vložíte element accesscontrol se seznamem skupin. Kromě uživatelských skupin můžete nastavit také přístup pro členy systémových skupin.
<accesscontrol>Moje:Skupina,Naše:Skupina (ro),bureucrat</accesscontrol> |
Jak si můžete povšimnout, readonly přístup lze nastavit také na celou skupinu. Pokud tedy nebude uživatel členem i některé jiné skupiny s právem k editaci, bude moct stránku pouze prohlížet.
Členové skupiny sysop mají ( pokud to není zakázáno přímo v rozšíření hodnotou proměnné $wgAdminCanReadAll ) automaticky právo číst všechny stránky
|
Každý kdo ke stránce nebude mít přístup pak bude automaticky přesměrován na některou z předem nastavených systémových stránek, které se nacházejí v systémovém jmenném prostoru wiki ( v našem případě DCEwiki ) s informací proč jim byl přístup zamezen.
Naše výchozí pravidla
- Anonymní uživatelé na stránky chráněné elementem accesscontrol nemají přístup nikdy
- Stránky nechráněné mohou anonymní uživatelé pouze číst
- Přihlášení uživatelé mají přístup na stránky chráněné elementem accesscontrol vždy pouze na základě svého členství v některé ze systémových, nebo uživatelských skupin
- Uživatelé co jsou členy skupiny Správci (sysop) mohou stránky chráněné elementem accesscontrol editovat vždy