AccessControl

De Light City V3 - Documentation

<languages/> <translate> Software MediaWiki, na kterém běží projekty Wikimedia Foundation, nebyl navržen jako sofistikovaný CMS systém<tvar|ref><ref name="cms" /></>.</translate> <ref follow="cms"> <translate> Charakteristickým rysem CMS (zkratka z angl. "Content Management System") systémů pro správu obsahu jsou mechanismy, které pracují s širokou škálou nastavení uživatelských práv.</translate> </ref> <translate> {{<tvar|1>elink|http://www.mediawiki.org/wiki/Extension:AccessControl</>|AccessControl}} tento nedostatek řeší. {{<tvar|2>link|accesscontrol-history</>|Vyvíjí se od září 2009}} a tohle je manuál k připravované verzi 3.0. </translate>

  • <translate> AccessControl umožňuje aby v rámci jedné instance MediaWiki mohl existovat veřejně dostupný obsah, i privátní stránky. V tomto manuálu najdete návod, {{<tvar|1>link|public-and-private</>|jak udržovat veřejný i neveřejný obsah v rámci jedné stránky}}.</translate>
  • <translate> AccessControl umožňuje, aby sami autoři obsahu rozhodovali o tom, kdo bude mít možnost zasahovat do obsahu stránky na které pracují. A tuhle ochranu stránky mohou kdykoliv jednoduchým způsobem zapnout, nebo naopak vypnout.</translate>
  • <translate> I když je AccessControl založen na kontrole obsahu stránky, nepřináší z hlediska výkonu zvýšenou zátěž webového serveru. Spíš naopak. {{<tvar|1>link|how-accesscontrol-work</>|Obsah stránky kontroluje ještě před zpracováním do HTML kódu}} a jeho odesláním na stranu webového prohlížeče klienta. Pokud nemá uživatel na chráněnou stránku přístup, je ihned {{<tvar|2>link|accesscontrol-info</>|přesměrován}}.</translate>
  • <translate> AccessControl je naprogramován tak, aby nešlo žádným doposud známým způsobem získat obsah chráněné stránky, takže wiki může obsahovat i důvěrný obsah. Umí ošetřit i {{<tvar|1>link|accesscontrol-export</>|situace, pro které standardní MediaWiki žádné jiné bezpečnostní mechanismy nemá}}.</translate>
  • <translate> Chráněné stránky lze v kombinaci s dalšími možnostmi, které nabízí MediaWiki a její rozšíření, využívat jako {{<tvar|1>link|mediawiki-private-channel</>|skvělý prostředek k privátní komunikaci}}, kdy si uživatel sám rozhoduje, co bude sledovat a jakým způsobem má být o novinkách informován.</translate>

<translate> Kdo všechno používá AccessControl?</translate>

<translate> Pokud vás zajímá, jaké verze rozšíření AcccessControl se používají a kde, podívejte se na {{<tvar|1>elink|https://wikiapiary.com/wiki/Extension:AccessControl</>|WikiApiary}}.</translate>
<translate> Pokud budete mít pocit, že je tam těch webů málo, uvědomte si že AccessControl používají především wiki, které nejsou tak otevřené jako projekty Wikimedia Foundation. Většinou ani nemají veřejně dostupné API a obvykle omezují i přístup na speciální stránky, přes které lze získat data o jejich konfiguraci.</translate>
<translate> Pokud wiki registrovaná na WikiApiary používá AccessControl a má na některé stránce, přes kterou robot doluje data, neplatný odkaz<tvar|ref><ref name="invalid-link" /></>, nezjistí se o její konfiguraci také nic, protože robot skončí na {{<tvar|1>link|accesscontrol-info</>|stránce s oznámením, že anonymní uživatelé mají přístup omezen}}.</translate>

<ref follow="invalid-link"> <translate> To je případ {{<tvar|1>elink|https://wikiapiary.com/wiki/DCEwiki</>|DCEWiki}}, která je zaregistrovaná na WikiApiary, ale na stránce, kterou vrací API má několik neplatných odkazů. Proto ji v {{<tvar|2>elink|https://wikiapiary.com/wiki/Extension:AccessControl</>| přehledu webů co používají rozšíření AccessControl}} nenajdete i přes to, že ho používá.</translate> </ref>

<translate>

O spolehlivosti rozšíření AccessControl svědčí fakt, že za celou dobu reálného nasazení na wiki {{<tvar|1>elink|https://support.dce.felk.cvut.cz/</>|DCE FEL ČVUT}} nebyl zaznamenán jediný případ vandalizace stránek či zneužití (nebo úniku) chráněného obsahu.

</translate>
<translate> Prostudujte důkladně tento manuál. Je důležité znát jak AccessControl funguje, abyste byli připraveni řešit situaci, pokud by někdo udělal chybu, nebo se pokusil {{<tvar|1>link|template-atack</>|zneužít některou šablonu}}.</translate>
<translate> Budete-li spokojeni s tím, jak funguje rozšíření AccessControl na vaší wiki, můžete na oplátku {{<tvar|1>elink|https://www.thewoodcraft.org/wiki/index.php/Donate</>|podpořit TheWoodcraft.Org}}. Je to wiki, na které se verze 3.0 vyvíjela a kterou financuje jeho autor.</translate>

<translate>

Základní konfigurace MediaWiki před instalací rozšíření AccessControl

<tvar|1>MediaWiki</>, software na kterém běží <tvar|2>Wikipedia</>, vznikla proto, aby pomohla přivést na svět do nedávné doby utopickou myšlenku, že kvalitní obsah internetových stránek může vznikat vzájemnou spoluprací všech uživatelů, tedy včetně těch anonymních. Díky benevolentnímu přístupu se brzy stala oblíbeným terčem psychopatů a frustrátů, jejichž největší radostí je – škodit. Proto se zavedly uživatelské skupiny, vybavené různými pravomocemi, a byrokratické mechanismy pro jejich udílení.

Standardní MediaWiki pracuje hlavně s následujícími skupinami: </translate>

<translate> anonymní uživatel</translate>
<translate> Je každý nepřihlášený uživatel, který je v rámci MediaWiki identifikován svou IP adresou.</translate>
<translate> přihlášený uživatel</translate> ('user')
<translate> Tuhle skupinu má každý registrovaný a řádně přihlášený uživatel. V rámci MediaWiki je identifikován svým uživatelským jménem.</translate>
<translate> administrátor</translate> ('sysop')
<translate> Uživatel, který je v této skupině může vykonávat činnosti nutné při údržbě wiki (například mazat stránky, vracet změny, atp.). Zařazen může být do této skupiny trvale, ale i dočasně.</translate>
<translate> byrokrat</translate> ('bureaucrat')
<translate> Pouze uživatel z této skupiny může udílet práva ostatním uživatelům.</translate>
'bot'
<translate> Je to skupina vyhrazená pro uživatele, kteří často editují obsah wiki, případně vykonávají hromadné operace pomocí nejrůznějších skriptů. Některé operace uživatelů z této skupiny se nezaznamenávají, aby se tím zbytečně nezatěžoval systém MediaWiki a jejich akce probíhaly co nejrychleji. Kdyby tomu tak nebylo, mohly by na stránce <tvar|1>Special:Recentchanges</> uniknout pozornosti jiné, nežádoucí změny.</translate>

<translate> Existují i další skupiny, které si pro svou potřebu zavádějí některá rozšíření. Ovšem vždy platí, že v rámci skupiny mají všichni členové stejná práva.</translate> <translate> Pokud chcete mít v MediaWiki kromě veřejně dostupného obsahu také obsah určený vyhrazený jen pro vybranou množinu uživatelů, zjistíte, že systém uživatelských práv založený na členství ve skupinách nestačí. </translate>

<translate>

Pokud nemá MediaWiki nainstalované rozšíření AccessControl, lze zabránit zobrazení obsahu stránky jedině tak, že se přístup do vybraného jmenného prostoru povolí pouze pro vybranou skupinu uživatelů a všem ostatním se do něj přístup preventivně zakáže. Je to nešťastné řešení: </translate>

  • <translate> Anonymní uživatel žádnou skupinu práv, na kterou by bylo možné aplikovat nějaká pravidla nemá, takže veškerý obsah wiki (nebo vyhrazeného jmenného prostoru) by musel být vyhrazen jen pro přihlášené uživatelé s přiřazenou skupinou. Ale jinak by se na něj nikdo jiný nedostal. Ovšem {{<tvar|1>link|accesscontrol-export</>|existují metody, jakými se dá u wiki co nepoužívá AccessControl k neveřejnému obsahu dostat}}.</translate>
  • <translate> Z dlouhodobého hlediska je to na nic, protože dříve či později do wiki, nebo jejího vyhrazeného jmenného prostoru, ke kterému bude mít přístup jen omezený okruh uživatelů, nebude nikdo psát.</translate>
  • <translate> Většina uživatelů nemá zájem věnovat svůj čas tvorbě obsahu, který nelze veřejně prezentovat. A obsah, na který se nedá dostat má pro ostatní nulovou informační hodnotu – stejně jako kdyby neexistoval.</translate>
  • <translate>

Postupně přestanou takové stránky navštěvovat i ti co volali po jejich uzavření, protože nebudou mít obsah, který by je zajímal a kvůli němuž by se na ně vraceli. A wiki bez obsahu ztrácí smysl.

</translate>

<translate> Wiki je živý organismus, jemuž dává smysl všeobecné sdílení informací, které obsahuje. Každý (tedy i anonymní) uživatel by měl mít možnost číst její obsah, pokud tomu nebrání licence, nebo smluvní podmínky provozovatele wiki. A pokud uživatel splní podmínky vyžadované při registraci uživatelského účtu, tak by měl mít možnost – již jako přihlášený uživatel – participovat i na tvorbě obsahu.

Proto je prvním řádkem v konfiguračním souboru <tvar|config>LocalSettings.php</> povolena akce <tvar|action>'view'</> pro všechny uživatele – včetně těch anonymních. A těmi ostatními preventivně zakázány akce, přes které by mohli uživatelé anonymně zapisovat do vaší wiki: </translate>

$wgGroupPermissions['*']['read']            = true;
$wgGroupPermissions['*']['createaccount']   = false;
$wgGroupPermissions['*']['edit']            = false;
$wgGroupPermissions['*']['writeapi']        = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
<translate> S takovým nastavením bude mít k editaci stránek vaší instance MediaWiki přístup pouze registrovaný a řádně přihlášený uživatel – to je výchozí předpoklad k tomu, aby rozšíření AccessControl fungovalo jak má.</translate>

<translate> Pokud máte pocit, že je to vůči anonymním návštěvníkům příliš restriktivní, uvědomte si, že vaše wiki nejspíš nikdy nebude mít dostatek bdělých administrátorů, co by včas odstranili nežádoucí změny ze strany vandalů! A jenom vy jste zodpovědní za důvěryhodnost vaší instance MediaWiki a za kvalitu jejího obsahu ručíte svým jménem. Pro malé wiki tedy vždy platí následující premisa: </translate>

<translate> To, že se uživatel může podílet se na tvorbě obsahu není právo, ale privilegium!</translate>

<translate>

Další doporučené nastavení pro <tvar|config>LocalSettings.php</>

Rozšíření AccessControl, je primárně určeno k ochraně obsahu a přístup na speciální stránky MediaWiki neřeší. Nicméně není důvod k tomu, aby na většinu z nich měl anonymní uživatel přístup.

Doporučuji tedy omezit přístup na speciální stránky. Existuje na to rozšíření MediaWiki <tvar|1>DisableSpecialPages</>, ale je dlouhodobě neudržované, takže pokud chcete, můžete použít v konfiguraci vašeho souboru <tvar|config>LocalSettings.php</> stejný kód, jako se používá na wiki <tvar|2>TheWoodcraft.org</></translate>:

 …
 function disableSomeSpecialPages(&$list) {
     global $wgUser;
     if ( is_array( $wgUser->mRights ) && in_array( 'createpage', $wgUser->mRights ) ) {
         return true;
     } else {
         if ($wgUser->mId > 0 ) {
             return true;
         }
         unset($list['Mypage']);
         foreach( array(
             'Activeusers',
             'Allmessages',
             'Allpages',
             'Ancientpages',
             'ApiSandbox',
             'Blankpage',
             'BlockList',
             'Boilerplates',
             'Booksources',
             'BrokenRedirects',
             'CategoryTree',
             'ComparePages',
             'Contributions',
             'CreateCategory',
             'CreateClass',
             'CreateForm',
             'CreateTemplate',
             'Deadendpages',
             'DoubleRedirects',
             'ExpandTemplates',
             'Export',
             'ExportTranslations',
             'Fewestrevisions',
             'FileDuplicateSearch',
             'Forms',
             'FormEdit',
             'FormStart',
             'LanguageStats',
             'LinkSearch',
             'ListDuplicatedFiles',
             'Listfiles',
             'Listgrouprights',
             'Listredirects',
             'Listusers',
             'Log',
             'Lonelypages',
             'Longpages',
             'ManageMessageGroups',
             'MediaStatistics',
             'MessageGroupStats',
             'MIMEsearch',
             'Mostcategories',
             'Mostimages',
             'Mostinterwikis',
             'Mostlinked',
             'Mostlinkedcategories',
             'Mostlinkedtemplates',
             'Mostrevisions',
             'Movepage',
             'MultiPageEdit',
             'Newimages',
             'Newpages',
             'PagesWithProp',
             'PagesWithoutScans',
             'PageTranslation',
             'Preferences',
             'Prefixindex',
             'Protectedpages',
             'Protectedtitles',
             'RandomInCategory',
             'Randompage',
             'Randomredirect',
             'Redirect',
             'ResetTokens',
             'RunQuery',
             'SearchTranslations',
             'Shortpages',
             'Statistics',
             'SupportedLanguages',
             'TrackingCategories',
             'Translate',
             'Translations',
             'TranslationStats',
             'TranslationStash',
             'Uncategorizedcategories',
             'Uncategorizedimages',
             'Uncategorizedpages',
             'Uncategorizedtemplates',
             'Unusedimages',
             'Unusedtemplates',
             'Wantedfiles',
             'Wantedpages',
             'Wantedtemplates',
             'Watchlist',
             'Withoutinterwiki'
             ) as $i ) {
             unset( $list[$i] );
         }
     }
     return true;
 }
 $wgHooks['SpecialPage_initList'][]='disableSomeSpecialPages';
 …

<translate>

Rozšířená práva specifická pro vybraná rozšíření

</translate>

<translate> Také práva která do vaší MediaWiki přidávají některá rozšíření,mohou ve výsledku – díky svému výchozímu nastavení – představovat bezpečnostní "díru", přes kterou by mohl neoprávněný uživatel získat chráněný obsah – například rozšíření <tvar

<translate> U wiki <tvar|1>TheWoodcraft.org</> bylo nutné nastavit tyto proměnné:</translate>

 // Extension:LookupUser
 $wgGroupPermissions['*']['lookupuser'] = false;

 // Extension:Translate
 $wgGroupPermissions['*']['pagetranslation'] = false;

<translate>

Instalace

Instalace rozšíření AccessControl je velice jednoduchá: </translate>

  1. <translate> Naklonujte z git repozitáře, nebo vybalte ze staženého tarballu, zdrojové kódy do adresáře <tvar|path>extensions/AccessControl/</> vaší instance MediaWiki.</translate>
  2. <translate> Pak do konfiguračního souboru <tvar|config>LocalSettings.php</> přidejte následující řádku</translate>:
wfLoadExtension( 'AccessControl' )

<translate> Jakmile soubor <tvar|config>LocalSettings.php</> uložíte, začne vaše wiki AccessControl používat.

Jak pracuje AccessControl se stránkou MediaWiki

Veškerý obsah AccessControl kontroluje na straně serveru – dřív, než z něj parser MediaWiki vygeneruje HTML kód, který bude doručen webovému prohlížeči na straně klienta. Pokud během kontroly AccessControl narazí na kód, který mu sdělí že je obsah stránky chráněný, zkontroluje jestli uživatel, který požadavek odeslal, může přistupovat k obsahu. </translate>

editors
<translate> mají plná práva na všechny operace</translate>
visitors
<translate> mají právo pouze na čtení obsahu</translate>

<translate> Pokud nemá právo ani na čtení <tvar|1>(visitors)</>, přeruší AccessControl další zpracování stránky a {{<tvar|2>link|accesscontrol-info</>|místo ní vrátí HTML kód stránky s upozorněním}}, že se pokusil dostat na stránku ke které nemá přístup.</translate> <translate>

Jak se AccessControl dozví, že jde o chráněnou stránku?

Existují tři možné způsoby, jimiž lze AccessControl informovat o tom, že je obsah stránky chráněný: </translate>

  1. <translate> {{<tvar|1>link|accesscontrol-template-options</>|Parametrem šablony}}</translate>
  2. <translate> {{<tvar|1>link|accesscontrol-template-name</>|Názvem použité šablony}}</translate>
  3. <translate> {{<tvar|1>link|accesscontrol-tag</>|Použitím tagu accesscontrol}}</translate>
<translate> Na jedné stránce můžete použít různé způsoby jak přes rozšíření AccessControl předat informaci, koho může pustit na stránku, ale rozhodne to, které bude mít poslední slovo!. Můžete toho s výhodou využít pokud chcete mít v rámci jedné stránky obsah pro různé skupiny uživatelů i veřejný obsah. Je doporučeno, místo tagu <tvar

<translate>

Šablony a jejich parametry

Klíčovou roli u MediaWiki hraje transkluze<tvar|ref1><ref name="transclusion" /></>. Jde o mechanismus, který umožňuje vložit do stránky obsah z jiné stránky. Nejčastěji se takto vkládají stránky ze jmenného prostoru Šablona (<tvar|1>Template</>), kterým lze předávat další argumenty, jimiž lze modifikovat wiki kód vygenerovaný na základě jejich obsahu<tvar|ref2><ref name="extensions" /></>.</translate> <ref follow="extensions"> <translate> Pokud bude mít vaše instance wiki nainstalovaná {{<tvar|1>link|extension</>|doporučená rozšíření}}, bude možné, abyste pomocí šablon realizovali co vás napadne.</translate> </ref> <ref follow="transclusion"> <translate> Transkluzi lze v podstatě považovat za elektronickou verzi kompilace, kdy se obsah jednoho dokumentu sestavuje z dokumentů jiných. Pojem jako takový <tvar|1>(transclusion)</> je novotvar, který údajně vymyslel americký sociolog, filozof a průkopník informačních technologií <tvar|2>Ted Nelson</> viz internetový článek {{<tvar|3>elink|https://www.bitoff.cz/nmi18/</>|Web, který nebyl}} z r. 2018 (autor: Jan Vlnas)</translate> </ref> <translate> Oddělovačem argumentů předávaných šabloně je svislítko <tvar|1>|</>. Prvním argumentem je vždy jméno stránky (šablony), jejíž obsah se má zpracovat a za ním mohou (ale nemusí) následovat další.</translate>

{{template | A | B | C }‌}

<translate> Argumenty se zpracovávají postupně.</translate>

{‌{template | 1 = A | 2 = B | 3 = C }‌}

<translate> A mohou být také očíslované, nebo pojmenované.</translate>

{‌{template | first = A | second = B | etc = C }‌}

<translate> Pokud jsou očíslované, nebo pojmenované, mohou být předány v libovolném pořadí.</translate>

{‌{template | 2 = B | 3 = C | 1 = A }‌}
<translate> Pokud šablona s pojmenovaným či očíslovaným argumentem nepracuje, tak předanou hodnotu ignoruje. To znamená, že se ani nezobrazí ve výsledném HTML kódu stránky a právě toho využívá AccessControl.</translate>

<translate>

Rozdíl mezi parametrem a atributem

Tohle není atribut identifikovaný parametrem!</translate>

{‌{template | e‌‌ditAllowedUsers TestUser }‌}

<translate> Tohle je parametr. Za parametrem následuje znak <tvar|1>=</> a po něm seznam jmen uživatelů, resp. skupin uživatelů.</translate>

{‌{template | e‌ditAllowedUsers = TestUser }‌}

<translate>

Ochrana stránky parametrem šablony

</translate>

1>$wgAdminCanReadAll</> hodnotu <tvar

<translate> AccessControl pracuje s kódem stránky dřív, než dojde na zpracování šablony. Takže, pokud u libovolné šablony najde v atributech některý z následujících parametrů, ví, že bude obsahovat informace, přes které získá {{<tvar|1>link|accesscontrol-accesslist</>|seznam uživatelů}}, se kterým bude dál pracovat.</translate>

isProtectedBy – <translate> seznam skupin uživatelů</translate>
readOnlyAllowedGroups – <translate> skupiny uživatelů pouze s read-only přístupem</translate>
editAllowedGroups – <translate> skupiny uživatelů s právem k editaci</translate>
readOnlyAllowedUsers – <translate> seznam uživatelů co mohou obsah stránek pouze číst</translate>
editAllowedUsers – <translate> seznam uživatelů s právem k editaci</translate>

<translate> V rámci jedné šablony lze použít všechny uvedené parametry najednou, proto bylo pomocí odsazení naznačeno, jakou mají z hlediska práv vůči sobě hierarchické postavení. Více se dozvíte v popisu jednotlivých parametrů, kde budou uvedeny i příklady.</translate>

editAllowedUsers

<translate> Použitím tohoto parametru se z obyčejné šablony stane {{<tvar|1>link|accesslist</>|seznam uživatelů}}. Každý uživatel, jehož jméno bude uvedeno v tomto parametru bude mít právo k editaci stránky do níž bude šablona s tímto parametrem vložena. A také všech stránek, které ji použijí v parametru <tvar|2>isProtectedBy</>. Je-li uvedeno uživatelů víc, oddělují se jejich uživatelská jména čárkou.</translate>

…
| e‌ditAllowedUsers = Kili, Quido
…

isProtectedBy

<translate> Přes tento parametrem získá AccessControl seznam wiki stránek, ze kterých se pokusí vytáhnout informace o tom, kdo a jaký typ přístupu má na stránku povolen. Pokud se v tomto seznamu objeví uživatelské jméno, prohledá AccessControl výchozí jmenné prostory a s největší pravděpodobností narazí na uživatelskou stránku ze které se pokusí získat seznam uživatelů. I když je to pochopitelně možné, nedoporučuji využívat pro seznamy uživatelů uživatelské stránky!

Takový seznam je totiž u nové verze automaticky chráněn přes AccessControl a tudíž by se na ni už nikdo jiný nedostal. Pokud chcete, použijte pro seznam uživatelů, kterým budete chránit jiné stránky raději stránku z hlavního jmenného prostoru, nebo podstránku. Takto by vypadalo využití podstránky <tvar|1>accesslist</> uživatele <tvar|2>TestUser</>, se skupinou uživatelů při ochraně stránky jiné. </translate>

…
| isProtectBy = TestUser/accesslist
…

<translate> U původního řešení ochrany stránek, pomocí tagu <tvar

readOnlyAllowedGroups

<translate> Tento parametr má větší váhu než <tvar|1>isProtectedBy</>. I on akceptuje pouze seznam skupin uživatelů. Ovšem všichni uživatelé z těchto skupin budou mít právo stránku, do které je šablona s tímto parametrem vložena, pouze číst. A to bez ohledu na to, jestli mají v uživatelských seznamech předaných přes parametr <tvar|1>isProtectedBy</> právo k editaci, nebo jen ke čtení.

Proto by měl být u šablony s tímto parametrem použitý i parametr <tvar|1>editAllowedUsers</> přinejmenším se jménem editora stránky. Jinak se k ní nedostane nikdo jiný než administrátor. </translate>

editAllowedGroups

<translate> Rovněž tento parametr akceptuje pouze seznamy skupin uživatelů. Na rozdíl od uživatelů ze seznamu v parametru <tvar|1>readOnlyAllowedGroups</> uživatelé z těchto skupin mají právo stránku editovat. A to bez ohledu na to jaká mají výchozí práva v rámci skupin, předaných parametrem <tvar|2>isProtectedBy</>, i to že jsou uvedeni ve skupině, která má právo pouze ke čtení obsahu.</translate>

…
| isProtectBy = test-user
| r‌eadOnlyAllowedGroups = groupB
| e‌ditAllowedGroups = groupA
…

<translate> Pokud by v případě, který demonstruje výše uvedený kód byl uživatel jak ve skupině <tvar|1>groupB</>, která má právo jen na čtení, i ve skupině <tvar|2>groupA</>, bude mít jeho právo na editaci přednost!</translate>

readOnlyAllowedUsers

<translate> Na druhou stranu se hodí, když máme možnost zabanovat uživatele, ze skupiny, která má právo na editaci stránky. A právě k tomu je určen tento parametr. Pokud v něm AccessControl najde jméno aktuálního uživatele, nastaví mu pouze read-only přístup. Bez ohledu na to, jestli má v rámci některé skupiny předané parametrem <tvar|1>isProtectedBy</> nebo <tvar|2>editAllowedGroups</> nastavené právo k editaci.

Další zpracování šablony

Pokud AccessControl na základě obsahu uvedených parametrů vyhodnotí, že jako uživatel máte na stránku přístup povolen, klidně se mohou tyhle parametry v použité šabloně dál zpracovat.</translate>

{‌{Template a‌ccesscontrol
| Tahle stránka žádný externí seznam nepoužívá, protože se chrání sama
| e‌ditAllowedUsers = TestUser
| Tohle je seznam uživatelů podle verze 3.0
}‌}
<translate> I když šablona obsahuje v názvu řetězec 'accesscontrol', je místo prvního atributu zpracován obsah parametru <tvar

<translate>

Ochrana stránky pomocí tagu

</translate>

<translate> Podpora tagu <tvar

<translate> Starší verze rozšíření AccessControl používaly k ochraně stránky pouze párový tag <tvar|tag><a‌ccesscontrol></>.

Pokud použijete na stránce místo šablony párový tag <tvar|tag><a‌ccesscontrol></> s vaším uživatelským jménem – budete mít přístup na takovou stránku jen vy. Vložený kód bude vypadat podobně, jako u následující ukázky. Jen místo <tvar|1>Username</> musíte napsat svoje uživatelské jméno.</translate>

<a‌‌ccesscontrol>Username</a‌ccesscontrol>

<translate> Pokud chcete, aby smělo na tuhle stránku víc uživatelů, máte dvě možnosti. Buď můžete přidat jejich uživatelská jména, jako v následujícím příkladu.</translate>

<a‌ccesscontrol>Vaše uživatelské jméno, TestUser, Další uživatel</a‌ccesscontrol>

<translate> Nebo si můžete použít {{<tvar|1>link|accesscontrol-accesslist</>|seznam uživatelů}}. Pokud si vytvoříte takový seznam na stránce <tvar|test>test-page</>, bude to vypadat takto:</translate>

<a‌ccesscontrol>test-page</a‌ccesscontrol>

<translate> Použití seznamu je výhodné, pokud stejná skupina uživatelů pracuje s větším množstvím chráněných stránek.</translate> <translate>

Ochrana obsahem prvního parametru šablony

</translate>

<translate> Stránku chráněnou šablonou s řetězcem accesscontrol v názvu nelze použít jako {{<tvar|1>link|not-accesslist</>|seznam uživatelů}} k ochraně jiných stránek!</translate>

<translate> Ochrana stránek pomocí tagu <tvar|tag><a‌ccesscontrol></> má jednu velkou nevýhodu – chráněné stránky je obtížné vyhledat. Naopak stránku, která používá šablonu lze dohledat velice snadno, pokud použijete následující postup:</translate>

  1. <translate> Vyhledejte si na stránce <tvar|1>Special:Templates</> (pokud šablona existuje) nebo <tvar|2>Special:Wantedtemplates</> (pokud šablona ještě neexistuje) jméno šablony a klikněte na něj.</translate>
  2. <translate> Pokud jste přihlášený uživatel, dostanete se i na editační stránku neexistující šablony (anonymní uživatel je v takovém případě automaticky přesměrován pryč).</translate>
  3. <translate> Povšimněte si, odkazu Odkazuje sem (Whats link here) v menu nalevo. Ten vede na speciální stránku <tvar|1>Special:Whatlinkshere</>.</translate>
  4. <translate> Kliknete-li na něj, tak vám okamžitě vygeneruje seznam stránek, které tuto šablonu používají. Pokud k nim máte přístup, bez problémů se na ně přes tyto odkazy dostanete. Pokud ne, {{<tvar|1>link|accesscontrol-info</>|přesměruje vás to pryč}}.</translate>

<translate> Proto byla do nové verze rozšíření AccessControl 3.0, zahrnuta alternativa, která umožňuje postupně nahrazovat tag <tvar|tag><a‌ccesscontrol></>, který byl nutný u předchozích verzí, šablonou.

Tuto šablonu si můžete pojmenovat jak chcete, důležité je pouze to aby měla v názvu řetězec <tvar|1>a‌ccesscontrol</>. Pokud jí předáte jako první parametr původní obsah tagu <tvar|tag><a‌ccesscontrol></> (seznam uživatelů, resp. uživatelských skupin, oddělených čárkou), bude fungovat stejně, ale můžete přidat i další parametry, které ta šablona může zpracovat, pokud bude mít uživatel na stránku přístup.

Pro AccessControl není vůbec důležité, jestli tahle šablona bude existovat, nebo ne. Pokud na testovací stránce <tvar|test>test-page</> tedy použijete místo tagu, nebo parametrizované šablony následující wiki kód, u kterého nahradíte řetězec <tvar|1>Username</> svým uživatelským jménem, bude ochrana stránky fungovat úplně stejně, jako kdybyste použili tag <tvar|tag><a‌ccesscontrol></>.</translate>

{‌{Template accesscontrol|Username}‌}

<translate> Pokud neexistuje šablona <tvar|1>Template a‌ccesscontrol</>, tak se místo ní zobrazuje pouze červeně zbarvený odkaz na neexistující stránku. Nic vám ale nebrání si tuto šablonu založit a využít její obsah. Když kliknete na tento odkaz, můžete napsat do obsahu šablony následující kód. {{<tvar|2>link|only-example-code</>|V žádném případě ho nekopírujte!}}, protože obsahuje skryté znaky, takže by nefungoval:</translate>

Page {‌{PAGENAME}‌} is protected by AccessControl.
Access is allowed for: {‌{‌{1|}‌}‌}
‌{‌{2|}‌}‌}

<translate> Když se pak vrátíte k testovací stránce <tvar|test>test-page</>, chráněné přes takto pojmenovanou šablonu a uděláte refresh, zobrazí se vám místo odkazu na neexistující šablonu text, za kterým bude následovat seznam uživatelů a skupin, co budou mít ke stránku přístup.

Pak se odhlašte a {{<tvar|1>link|accesscontrol-test</>|vyzkoušejte}}, jestli AccessControl stránku zobrazí i pokud se na ni pokusíte přistoupit anonymně. Pokud se na stránku dostanete jako anonymní uživatel, pak to znamená, že jste někde něco nastavili špatně.

Pokud se na ni ovšem nedostanete ani jako přihlášený uživatel, tak je možné, že jste zadali neplatné uživatelské jméno, nebo neplatné jméno uživatelské skupiny – v takovém případě vám nezbyde, než požádat o pomoc uživatele, který je členem skupiny 'sysop', aby vaši chybu opravil.

Také si můžete vyzkoušet, jak to bude vypadat, když šabloně použité na stránce <tvar|test>test-page</> předáte další parametry:</translate>

{‌{Template accesscontrol
| Username, test-page, TestUser, Čtenáři (ro)
| Next content in the second attribute 
| Other atributes…
}‌}

<translate> Jak můžete sami vidět, použití šablony otevírá další možnosti.</translate>

<translate> Pokud ale použijete v některém z atributů {{<tvar|1>link|accesscontrol-template-options</>|pojmenovaný parametr, se kterým pracuje AccessControl}}, bude mít jeho zpracování přednost!</translate>

<translate>

Jak probíhá kontrola?

</translate>

<translate> Tento manuál je připraven tak, abyste si jej mohli naimportovat do svojí wiki a postupně vyzkoušet (a otestovat) přes tuto stránku všechny možné kombinace a způsoby ochrany stránky. Výchozím předpokladem je, že si pro tento účel založíte testovací stránku <tvar

<translate> Pokud necháte konfigurační proměnnou <tvar|1>$wgAccessControlNamespaces</> na pokoji, bude AccessControl při kontrole chráněné stránky, narazí-i na položku, kterou lze interpretovat jako prvek určený k ochraně stránky<tvar|ref><ref name="protection" /></>, která obsahuje řetězec <tvar|2>test-page</> postupovat takto: </translate>

  1. <translate> Zkontroluje, zdali <tvar|1>test-page</> není náhodou uživatelské jméno.</translate>
  2. <translate> Pak zkontroluje, jestli se tak náhodou nejmenuje nějaká stránka v hlavním jmenném prostoru. Pokud ano, tak se z ní pokusí vydolovat seznam uživatelů.</translate>
  3. <translate> Pak se podívá, jestli se taková stránka náhodou nevyskytuje také ve jmenném prostoru vyhrazeném pro uživatelské stránky <tvar|1>User:</>. Jistě vám v tuto chvíli došlo, že by v takovém případě musel existovat uživatel se jménem <tvar|1>test-page</>. Pokud by takový uživatel existoval a měl na svojí uživatelské stránce kód, který by bylo možné interpretovat jako seznam uživatelů, tak ho AccessControl použije.</translate>

<ref follow="protection"> <translate> Tohle je důležitý bod. Ani zkušeným programátorům MediaWiki na první dobrou nedocvakne, že AccessControl přináší jen minimální zvýšení nároků na výkon webového serveru. Pokud stránka ochranu nemá, nedělá AccessControl nic. A pokud ochranu má, pokračuje ve zpracování stránky jen pokud nalezne aktuálního uživatele v některé z položek parametrizované šablony, nebo v seznamu oprávněných uživatelů. To proběhne zpravidla dřív, než MediaWiki vrátí nějaký HTML kód. A pokud uživatel nemá právo přistupovat k obsahu chráněné stránky je ihned přesměrován na výchozí stránku s upozorněním, že se pokouší přistupovat na stránku která je chráněná přes AccessControl. To znamená, že pokud není zrovna vypnuto přesměrování (<tvar|1>$wgAccessControlRedirect</> má hodnotu <tvar|2>false</>) je další zpracování obsahu původní stránky přerušeno.</translate> </ref> <translate> Výsledkem bude pole (array), ve kterém budou dva klíče: <tvar|1>"editors"</> a <tvar|2>"visitors"</>. AccessControl tohle pole zkontroluje a pokud v něm najde vaše uživatelské jméno, bude pokračovat ve zpracování stránky.

U nové syntaxe, která je založená na parametrech šablony lze může ten, kdo nastavuje přístupová práva ke stránce, zajistit aby se AccessControl nezdržoval prohledáváním všechny jmenných prostorů nastavených v proměnné <tvar|1>$wgAccessControlNamespaces</>.

Stačí uvést jméno do parametru <tvar|1>isProtectedBy</>, nebo <tvar|2>readOnlyAllowedGroups</> či <tvar|3>editAllowedGroups</> uvést jméno stránky s uživatelským seznamem, včetně jmenného prostoru. Takže uživatel <tvar|4>TestUser</> by místo svého uživatelského jména napsal do příslušného parametru <tvar|5>User:TestUser</>. Pochopitelně se tím zkrátí proces zpracování chráněné stránky. </translate>

<translate> Pro anonymní uživatele používá MediaWiki jako jméno zpravidla IP adresu, ze které na její stránku lezou. Teoreticky by tedy bylo možné povolit přístup anonymnímu uživateli pro jeho IP adresu. V praxi jsem to ale zatím nezkusil.</translate>

<translate>

Globální konfigurační proměnné

V konfiguračním souboru <tvar|config>LocalSettings.php</> lze použít u rozšíření AccessControl verze 3.x následující globální proměnné: </translate>

$wgAccessControlRedirect

<translate> Ve výchozím stavu je hodnota této proměnné <tvar|1>true</>. Uživatele, který nemá právo přistupovat k obsahu stránky AccessControl automaticky přesměruje na stránku <tvar|info>MediaWiki:Deny_user</>, kde se mu zobrazí (lokalizované) oznámení, že se pokusil dostat na chráněnou stránku, ke které nemá přístup povolen. Tohle automatické přesměrování lze vypnout, nastavením proměnné <tvar|2>$wgAccessControlRedirect</> na hodnotu <tvar|3>false</>:</translate>

$wgAccessControlRedirect = false;

<translate> I když se dá přesměrování vypnout, vypínejte ho jen když je to nutné. Automatické přesměrování se nepoužívá proto, aby chránilo stránku. </translate>

  • <translate> Ani při vypnutém přesměrování se nepovolaný uživatel k chráněnému obsahu nedostane.</translate>
  • <translate> Přesměrování šetří čas a výkon webového serveru.</translate>
  • <translate> Je zbytečné aby server pokračoval ve zpracování obsahu stránky, je-li zřejmé, že uživatel na stránku nebude mít přístup. Anonymní uživatel "by default" má právo pouze na čtení obsahu veřejně přístupných stránek. Na stránkách chráněných přes AccessControl nemá co pohledávat.</translate>
  • <translate> Taky je zbytečné pokračovat v dalším zpracování obsahu stránky, pokud je zřejmé, že uživatel, přes to že je řádně přihlášený nemá k jejímu obsahu přístup (tedy ani právo ke čtení).</translate>

<translate> Pokud AccessControl zjistí, že uživatel nemá na stránku přístup, přeruší další zpracování původní stránky a okamžitě přesměruje na stránku <tvar
<translate> Můžete si přesměrování dočasně vypnout třeba pokud vás zajímá jak rychle se zpracuje obsah stránky, nebo když potřebujete vidět kontrolní zprávy, které se generují jako komentáře do HTML kódu. Pokud byste přesměrování nevypnuli, tak byste viděli pouze to, co se týká zpracování cílové stránky <tvar

$wgAdminCanReadAll

<translate> AccessControl je naprogramován tak, aby uživatelé s administrátorskými právy (skupina 'sysop') mohli v případě nouze pomáhat uživatelům, co se díky chybě v nastavení uživatelského seznamu odstřihli od vlastní stránky. Proto je výchozí hodnota této proměnné <tvar|1>true</>.

Nicméně někomu takto benevolentní přístup nemusí vyhovovat. Obzvláště pokud má ve své wiki obsah, který má být přístupný jenom vybraným uživatelům. Proto zde existuje možnost tohle privilegované postavení administrátorů vypnout nastavením. </translate>

$wgAdminCanReadAll = false;

$wgAccessToHistory

<translate> Je na vás, jestli povolíte zobrazení historie stránky anonymním uživatelům, nebo ne. Osobně jsem toho názoru, že prohlížení historie stránky a změn wikikódu má být výsadou přihlášeného uživatele. Proto je výchozí nastavení <tvar|1>false</>.

Přes historii se může uživatel dostat ke zobrazení rozdílových souborů. To je užitečné, pokud chceme umožnit aby si mohl uživatel udělat představu o změnách ke kterým došlo na stránce v průběhu času. Za určitých okolností by však mohlo při zobrazení rozdílových souborů dojít ke kompromitaci obsahu chráněné stránky.

Pokud tedy chcete zobrazování historie anonymním uživatelům povolit, udělejte na svojí MediaWiki {{<tvar|1>link|accesscontrol-test</>|důkladné testy}}, abyste měli jistotu, že nedojde touto cestou ke kompromitaci chráněného obsahu. Zobrazování historie a rozdílovách souborů povolíte nastavením: </translate>

$wgAccessToHistory = false;
<translate> Jestli má tahle wiki povoleno zobrazování historie nebo ne zjistíte klikem [[<tvar|1>AccessControl&action=history</>|na tento odkaz]]. Pokud je zobrazování historie pro anonymní uživatele vypnuté, neuvidíte jako anonymní uživatel nic, pokud nebudete rovnou přesměrováni na stránku <tvar

$wgAccessControlNamespaces

<translate> Původně AccessControl hledal uživatelské seznamy pouze na stránkách v hlavním jmenném prostoru. Nová verze 3.x počítá s tím, že se stránky, které obsahují seznamy uživatelů mohou vyskytovat i jinde.

Tahle proměnná existuje především proto, aby nebylo nutné pokaždé psát jméno stránky s uživatelským seznamem včetně jmenného prostoru, ve kterém se nachází, v globální proměnné <tvar|1>$wgAccessControlNamespaces</>, je pole (array), s číselnými identifikátory jmenných prostorů, ve kterých se AccessControl postupně pokusí vyhledat uživatelský seznam identifikovaný jménem stránky, pokud není uveden včetně jména uživatelského prostoru.

Při psaní jména uživatelského prostoru může snadno dojít k chybě. Obzvláště proto, že MediaWiki má tendenci nahrazovat kanonické názvy lokalizovanou verzí. AccessControl akceptuje oboje, ale doporučuji místo lokalizované verze jmenného prostoru preferovat kanonické jméno. Takže místo <tvar|1>Uživatel:</> použijte radši <tvar|2>User:</>.

Ve výchozím stavu se používají níže uvedené jmenné prostory. Ale můžete si přes <tvar|config>LocalSetting.php</> nastavit jiné. Postupně se projdou všechny:</translate>

0 - NS_MAIN <translate> hlavní jmenný prostor, ze kterého se načítají stránky u kterých není jmenný prostor implicitně uveden</translate>
12 - NS_USER <translate> jmenný prostor pro uživatelské stránky; AccessControl předpokládá, že si každý bude chtít udržovat seznam uživatelů, kterým bude chránit přístup na svoje stránky udržovat v rámci vlastní uživatelské stránky.</translate>

<translate>

Seznamy uživatelů

U nové verze může jako seznam uživatelů posloužit libovolná stránka, na které je použitý minimálně jeden parametr, na jehož základě lze získat seznam uživatelů. </translate>

<translate> Chráněná stránka je automaticky nedostupná anonymním uživatelům. Pokud chcete publikovat část jejího obsahu veřejně, přečtěte si, {{<tvar|1>link|public-and-private</>|jak mít veřejný i privátní obsah na jedné stránce}}.</translate>
<translate> Pokud se s rozšířením AccessControl teprve seznamujete, nedělejte první pokusy s nastavením jako uživatel, který má administrátorská práva (skupina 'sysop') a také nevypínejte přesměrování! Ochráníte se tak před vlastní nepozorností a blbostí, jelikož vám AccessControl nedovolí uložit stránku, na kterou byste se znovu nemuseli dostat. Pokud se vám něco takového stane, přečtěte si {{<tvar|1>link|accesscontrol-deny</>|co dělat, když se nemůžete dostat na stránku}}.</translate>

<translate>

Správa uživatelů a skupin přes formulář

Od MediaWiki verze 1.23+ lze parametrizované šablony editovat díky rozšíření <tvar|1>Page Forms</>, přes formuláře.</translate> <translate>

Původní syntaxe seznamu uživatelů

</translate>

<translate> Nekategorizované {{<tvar|1>link|accesscontrol-accesslist</>|uživatelské seznamy}} u wiki, která používala starou syntaxi se daly vyhledat pouze přes některé uživatelské jméno ze seznamu. Ovšem pokud se hledaný řetězec vyskytoval i na stránce, ke které neměl uživatel přístup, tak se k výsledkům vyhledávání nedostal. To sice pro AccessControl verze 3.0 neplatí, ale i tak {{<tvar|2>link|template-is-better</>|je lepší místo tagu <tvar|tag><a‌ccesscontrol></> k ochraně obsahu stránky používat šablonu}}.</translate>

<translate> AccessControl verze 3.0 je od základu přepracovaný, nicméně kvůli zpětné kompatibility podporuje i původní syntaxi pro seznamy uživatelů, jaká se používala do verze ≤ 2.6.

Tato syntaxe používá jako seznam uživatelů stránku, na které se jméno každého uživatele, co má být členem skupiny, umístí na řádku, která začíná znakem pro odrážku (znak <tvar|1>'*'</>). Za ním následuje mezera a teprve pak uživatelské jméno.

Pro testovacího uživatele se jménem <tvar|1>TestUser</> tedy vypadá příslušný řádek takto:</translate>

* TestUser

<translate> Pokud má mít uživatel právo pouze na čtení obsahu, přidejte za jeho jméno řetězec <tvar|1>(ro)</>:</translate>

* TestUser (ro)

<translate> Takto vytvořený seznam uživatelů je obyčejná wiki stránka, která sama o sobě žádným způsobem chráněna není.

AccessControl však umožňuje, aby se stránka ochránila sama. Takže pokud chcete udělat a vyzkoušet takový seznam ze stránky <tvar|test>test-page</>, měl by vypadat její obsah takto. Pouze s tím rozdílem, že místo jména testovacího uživatele <tvar|1>TestUser</> použijete své uživatelské jméno.</translate>

* TestUser
<a‌ccesscontrol>test-page</a‌ccesscontrol>
[‌[Category:AccessLists]‌]
<translate> Kategorizace uživatelských seznamů tohoto typu je nutná proto, že se z hlediska obsahu neliší od běžné wiki stránky a tím pádem je není snadné dodatečně vyhledat.</translate>

<translate>

Uzamčení stránky pomocí standardního mechanismu MediaWiki

Kupodivu některé uživatele rozšíření AccessControl nikdy nenapadlo, že by mohla být stránka chráněna sama sebou. Většinou se pokoušeli vyřešit ochranu seznamů uživatelů jinými, někdy zcela nesmyslnými způsoby.

Jsou však situace, kdy je lepší zvolit jinou ochranu stránky než přes AccessControl.

Jedním z nástrojů, jakým MediaWiki čelí vandalismu, je zamykání stránek. Ovšem tuhle výsadu mají pouze administrátoři, {{<tvar|1>link|mediawiki-groups</>|uživatelé ze skupiny 'sysop'}}, která disponuje právo k zablokování editace stránky (<tvar|2>block</>). Pokud uživatel mezi ně nepatří, tak tímto způsobem stránku chránit nemůže.

Jsou ovšem situace, kdy je lepší preventivně možnost editace stránky omezit. Typicky v případě šablony. Prostřednictvím hojně používané šablony, lze totiž zneužitím rozšíření AccessControl zakázat přístup všem uživatelům. Proto je vhodné její obsah preventivně uzamknout ('protect'). Její obsah bude dál veřejně přístupný, ovšem měnit její kód bude moci jen ten, kdo bude mít rovněž adminstrátorská práva ('sysop').

Ostatně, změny obsahu šablony by se měly testovat na jiné, testovací šabloně a teprve po jejich důkladném otestování kopírovat do šablony, která se již používá.</translate> <translate>

Umístěním stránky do vyhrazeného jmenného prostoru

Kromě standardních jmenných prostorů, si můžete nadefinovat v rámci konfiguračního souboru <tvar|config>LocalSettings.php</> i své vlastní jmenné prostory. Dají se využít mnoha způsoby. A mimo jiné se dá u nich nastavením proměnné <tvar|1>$wgNamespaceProtection</> upravit přístupová práva tak, aby kupř. na editaci stránek v tomto jmenném prostoru měly právo jen vybrané skupiny uživatelů MediaWiki.

Následující ukázkový kód demonstruje, jak si můžete vytvořit vlastní jmenný prostor <tvar|1>NS_PRIVATE</> s ID <tvar|2>1234</>, ve kterému by mohli dělat změny pouze uživatelé s přiděleným právem <tvar|3>userrights</> (což jsou ve výchozím stavu pouze byrokraté):</translate>

define("NS_PRIVATE", 1234);
$wgExtraNamespaces = 
    array(NS_PRIVATE => "private"
    );
$wgNamespaceProtection[NS_PRIVATE] = array( 'userrights' );

<translate> Pokud chcete takovým způsobem omezit práva u jiných, již existujících jmenných prostorů, stačí pouze změnit výchozí nastavení jmenného prostoru.

</translate> <translate>

Testy

Každý, kdo chce svoje stránky chránit přes rozšíření AccessControl, by měl znát způsoby, jimiž se lze dostat ke chráněnému obsahu MediaWiki, pokud je někde chyba.

Pokud máte tuhle stránku naimportovanou vlastní instance MediaWiki, můžete využít níže uvedené odkazy k testování.

Založte si stránku <tvar|test>test-page</> a na ní si vyzkoušejte jak si nastavit ochranu stránky, {{<tvar|1>link|accesscontrol-accesslist</>|jak se udělá uživatelský seznam}}, jak se s ním pracuje, a {{<tvar|3>link|how-accesscontrol-detect</>|jak s jeho pomocí chránit jiné stránky}}. Je důležité abyste pochopili, jak to všechno funguje. </translate>

<translate> Dejte si pozor na to, abyste pro sebe na stránce <tvar

<translate> Při testování vašich stránek doporučuji používat dva různé webové prohlížeče. Přes jeden přistupujte na stránku jako přihlášený uživatel, a přes ten druhý testujte paralelně anonymní přístup.

Pokud budete chtít zjistit co v průběhu zpracování stránky rozšíření AccessControl dělá, můžete využít debugovací zprávy připravené v kódu. Poznáte je podle toho, že za nimi na řádku následuje komentář s klíčovým slovem DEBUG.

Tyto zprávy svůj obsah vypisují do stránky přes funkci <tvar|1>printDebug()</>. Na stránce nejsou vidět. Dostanete se k nim, jen když se podíváte do HTML kódu stránky.

Připravte se na to, že některé zprávy mohou vyvolat chybu PHP. Nemusíte si toho všímat. Po zakomentování kontrolního výpisu zase zmizí. </translate>

<translate> Pokud přijdete na nějaký další postup, který zde není uveden a by mohl vést k potenciální kompromitaci stránky, neváhejte a napište!</translate>

<translate>

Vyhledávání

Za normálních okolností, vyhledání najde hledaný řetězec i na stránkách chráněných přes AccessControl. Pokud však uživatel nemá právo přistupovat k obsahu stránky, bude místo kontextu zobrazen náhradní text. A pokud se pokusí přejít na tuto stránku, bude automaticky přesměrován pryč.

Přístup k wiki kódu a historii stránky

Pokud nezměníte výchozí hodnotu konfigurační proměnné <tvar|1>$wgAccessToHistory</> na <tvar|2>true</>, tak se anonymní uživatel k historii stránky, byť není chráněna rozšířením AccessControl, nedostane. A nedostane se ani k jejímu wikikódu.

Jediná historie změn, u které je žádoucí zachovat přístup i pro anonymní uživatele, je na stránce <tvar|1>Special:Recentchanges</> (historie posledních změn). Odkazy, přes které lze zobrazit rozdílové změny (diff) jsou pak buď neaktivní, nebo jsou při pokusu o zobrazení rozdílových změn, není-li vypnuto přesměrování přes proměnnou <tvar|2>$wgAccessControlRedirect</>, přesměrováni na stránku <tvar|info>MediaWiki:Deny user</>. </translate>

<translate>

Je pouze na vás, jestli výchozí restriktivní přístup zmírníte, nebo ne. Na historii a obsah chráněných stránek se touto cestou nikdo nedostane. Nicméně opakované procházení historie a generování rozdílových stránek může zbytečně zatěžovat váš webový server – to je důvod, proč není zobrazování historie stránek, wiki kódu stránek a rozdílových souborů ve výchozím stavu povoleno.

Pokud používáte AccessControl, můžete bez obav přístup k historii povolit. Jakmile dotěrný robot narazí na některou z chráněných stránek, bude okamžitě odklizen na {{<tvar|1>link|accesscontrol-info</>|informační stránku}}, která ukončí další procházení obsahu.</translate>

<translate>

Dostane se anonymní uživatel ke zobrazení rozdílových změn?

To, můžete snadno a rychle zjistit. [[<tvar|1>Special:Diff//next</>|Tenhle odkaz vede na rozdílový soubor, který byl vytvořen při poslední úpravě hlavní stránky této wiki]].

  1. přihlášený uživatel by se měl ke zobrazení rozdílů bez problému dostat
  2. anonymní uživatel by měl být přesměrován pryč

</translate>

<translate> Pokud vám vrtá hlavou, jakým způsobem se dostalo do této stránky ID revize vaší hlavní stránky, tak jste právě narazili na tajemství kouzelných slůvek – <tvar

<translate>

Je zde povolen přístup ke speciální stránce, která zobrazuje rozdíly v obsahu stránek?

Od MediaWiki 1.23+ je k dispozici {{<tvar|1>elink|https://www.mediawiki.org/wiki/Help:Diff</>|speciální stránka}}, přes kterou si lze zobrazit obarvený výstup, podobný jako vrací utilita <tvar|2>diff</>, pro libovolnou revizi obsahu.

Je-li tahle stránka dostupná zde, zjistíte přes tento link: <tvar|diff>Special:Diff</>.

  1. Pokud není zakázán přístup na stránku <tvar|diff>Special:Diff</> (viz výše, {{<tvar|1>link|config-extra</>|doporučené nastavení konfiguračního souboru <tvar|config>LocalSettings.php</>}}), zobrazí se formulář, do kterého lze zadat ID libovolné revize.
  2. Pokud je zakázán přístup na stránku <tvar|diff>Special:Diff</>, bude anonymní uživatel přesměrován pryč, resp. mu MediaWiki sdělí, že žádná taková stránka neexistuje.

Zobrazení wikikódu stránky

Zobrazení zdrojového kódu stránky je pro anonymní uživatele povoleno pouze, je-li proměnná <tvar|1>$wgAccessToHistory</> nastavena na hodnotu <tvar|2>true</>. Pak můžete na stránkách použít následující formát odkazu, kterým se anonymnímu uživateli zobrazí editační okno stránky s jejím wikikódem, ovšem bez možnosti editace obsahu.

Pokud bude editace obsahu možná, máte nejspíš chybu v konfiguraci souboru <tvar|config>LocalSettings.php</>.

Zobrazení wiki kódu nechráněné Hlavní stránky (Main Page)

Chcete-li umožnit anonymním uživatelům aby si mohli kopírovat obsah stránek vaší wiki do vlastní instance MediaWiki, můžete jim pomoci tak, že přidáte na své stránce odkaz na příslušnou stránku v následující formě: <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Main_Page&action=edit</>

Pokud je povoleno zobrazování historie a kódu nechráněných stránek. tak se jim po kliku na tento odkaz, otevře editační okno s wiki kódem stránky (v read-only módu), ze kterého si jej mohou zkopírovat.

Zobrazení konkrétní verze obsahu nechráněné stránky

I odkazování na konkrétní starší verzi stránky je závislé na nastavení proměnné <tvar|1>$wgAccessToHistory</>. Pokud chcete odkazovat na konkrétní revize obsahu, musí být její hodnota <tvar|2>true</>. Při volání stránky musíte uvést také číslo konkrétní revize: <tvar|3>

http://57.128.4.144/mediawiki/index.php?title=Main_Page&oldid=</>

Při volání konkrétní revize přes parametr <tvar|1>"oldid"</> vůbec nezáleží na názvu stránky, předávaném v parametru <tvar|2>"title"</> – rozhodující je číslo revize.

Jak otestuji, že moje stránky chrání AccessControl?

Následující série testů předpokládá, že již máte v této wiki vytvořenou testovací stránku <tvar|test>test-page</>, na kterém jste se učili, jakým způsobem nastavit ochranu stránky. Pro následující test by měla být stránka <tvar|test>test-page</> nastavená jako self-protect.

Přímý přístup<tvar|1>

http://57.128.4.144/mediawiki/index.php/Test-page</>
Oprávněnému uživateli se stránka zobrazí. Každý jiný bude přesměrován pryč.

Přístup přes akci "view" <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&action=view</>
Oprávněnému uživateli se stránka zobrazí. Každý jiný bude přesměrován pryč.

Přístup přes akci "edit" <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&action=edit</>
Oprávněnému uživateli se zobrazí editační okno stránky s jejím wiki kódem. Každý jiný bude přesměrován pryč.

Přístup přes akci "history" <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&action=history</>
Oprávněnému uživateli se zobrazí historie chráněné stránky. Každý jiný bude přesměrován pryč.

Přístup na prohlížení revizí přes "action" (view) <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&action=view&oldid=</>
Oprávněný uživatel může procházet historií revizí. Každý jiný bude přesměrován pryč

Přístup k prohlížení revizí stránky přes "direction" <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&direction=prev&oldid=</>
Oprávněný uživatel může procházet historií revizí. Každý jiný bude přesměrován pryč.

Přístup ke zobrazení rozdílové stránky pro poslední revizi stránky přes "diff" <tvar|1>

http://57.128.4.144/mediawiki/index.php?title=Test-page&diff=prev&oldid=</>
Oprávněný uživatel uvidí aktuální rozdíl v obsahu stránky <tvar|test>test-page</> při poslední revizí. Každý jiný bude přesměrován pryč.

Pak tuhle sadu testů zopakujte přihlášeni jako uživatel s právem na editaci stránky <tvar|test>test-page</>.

A potom znovu tuhle sadu testů, ovšem přihlášeni jako uživatel, který sice nemá právo zasahovat do obsahu stránky <tvar|test>test-page</>, ale může si ho číst. </translate>

<translate> Doporučuji vyzkoušet tuhle sérii testů pro situaci, že je self-protect stránky <tvar

<translate>

Test přístupu ke chráněnému obsahu přes REDIRECT

Přesměrování je základní funkcionalita MediaWiki, která umožňuje přistupovat na stránku přes jiné, alternativní názvy. V podstatě jde o mechanismus podobný transkluzi<tvar|ref><ref name="transclusion" /></>, rozdíl je pouze v tom, že z obsahu na který cílová stránka přes odkazuje rovnou generuje obsah. U starších verzí rošíření AccessControl bylo možné tímto způsobem obejít ochranu stránky.

Vytvořte si tedy stránku s následujícím obsahem a pak vykoušejte, zda-li se přes ni dostanete jako neoprávěný uživatel na stránku <tvar|test>test-page</>, nebo ne. <tvar|1>

#REDIRECT [[test-page]]

</>

</translate> <translate>

Test přístupu ke chráněnému obsahu přes transkluzi

Vložení chráněné stránky

Pokud vložíte do jiné stránky stránku, která má obsah chráněný přes AccessControl, měly by pro ni automaticky platit stejná práva jako u vložené stránky. Pokud to takhle nefunguje, je to chyba!

Vložení stránky z hlavního jmenného prostoru vypadá takto: <tvar|1>

{‌{:test-page}‌}

</> Pokud vkládáte stránku z jiného jmenného prostoru, musíte uvést jeho jméno. I když je možné používat i lokalizované názvy jmenných prostorů, používejte pokud možno kanonické jméno jmenného prostoru, odvozené z angličtiny. <tvar|1>

{‌{:User:TestUser}‌}

</>

Vložení chráněné šablony

Transkluze chráněné šablony probíhá (a vypadá) podobně, jako transkluze stránky z hlavního jmenného prostoru. Rozdíl je pouze v tom, že pokud nepoužijete před názvem stránky <tvar|test>test-page</> dvojtečku, bude systém MediaWiki automaticky předpokládat, že jde o stránku ze jmenného prostoru Šablona (Template): <tvar|1>

{‌{test-page}‌}

</>

Pokud by šlo o šablonu, která by byla nějakým způsobem chráněná přes AccessControl, tak se může stránka, do níž je šablona vložena, chovat různě.

Vícenásobná transkluze

Vícenásobná transkluze může za určitých okolností vést k tomu, že se pak na stránku nedostane nikdo – ani administrátor ('sysop')! Bohužel nelze k tomu říct nic konkrétního, protože se mi to stalo pouze jednou, při testování během vývoje, takže je dost dobře možné, že příčina byla dávno odstraněna.

Nicméně vícenásobná transkluze funguje i u chráněných stránek, ale moc ji nedoporučuji. Při zřetězení většího počtu chráněných stránek, stačí k odstřižení uživatele (případně celé skupiny) drobná změna práv u některé mezilehlé stránky. </translate>

Protected - Include - Include
Protected - Changed x Not access

<translate>

Pozor na rozšíření Labeled Section Transclusion

<tvar|1>Labeled Section Transclusion</> je v kombinaci s rozšířením <tvar|2>DynamicPageList (third party)</> či <tvar|3>SubPageList</> skvělý nástroj na tvorbu šablon generujících dynamický obsah stránek. Ale pozor na jeho zneužití!

Zneužití nehrozí ze strany anonymních uživatelů, protože nemají právo na editaci stránky. Riziko hrozí pouze se strany přihlášeného uživatele.

Ovšem zas tak jednoduché to není. V podstatě jde o zneužití stejného {{<tvar|1>link|public-and-private</>|mechanismu, jakým lze spravovat na jedné stránce soukromý i veřejný obsah}}.

Pro získání chráněného obsahu stránky by musel útočník znát nejenom jméno chráněné stránky, ale také jméno nechráněné sekce. Pravděpodobnost zneužití je tedy velmi malá, nicméně existuje. </translate>

<translate> Posuzujte pečlivě každého, kdo má zájem o úživatelský účet na vaší wiki. Ten kdo má skutečný zájem o spolupráci by měl mít pro vás pochopení. Ostatně, je mnohem lepší být ostražitý než dodatečně řešit rozsáhlé škody.</translate>

<translate>

Test, zdali se dá obsah chráněné stránky získat exportem

Pro usnadnění sdílení obsahu má MediaWiki k dispozici speciální stránku <tvar|1>Special:Export</> přes kterou lze vyexportovat obsah wiki stránky, včetně historie a vložených šablon do XML souboru. Obsah tohoto souboru pak lze naimportovat do jiné instance MediaWiki přes speciální stránku <tvar|2>Special:Import</>.

Je to užitečný mechanismus, který umožňuje přenášet hotové šablony i manuálové stránky. Bohužel pro wiki s chráněným obsahem představuje určité riziko, pokud má právo k exportu každý přihlášený uživatel.

I ochranu u starší verze rozšíření AccessControl bylo možné tímto způsobem obejít. U verze 3.0 je tomu ale jinak.

  • Stránka se přeskočí pokud uživatel na stránku přístup nemá.
  • Pokud má read-only přístup, tak se vyexportuje pouze aktuální verze stránky.
  • Kompletní export, včetně historie změn je přístupný pouze uživatelům s právem k editaci.

</translate>

<translate> Import stránky není nutné řešit, přesto, že je možné importem upraveného souboru možné změnit obsah stránky. Jenže to by musela být stránka před importem odstraněna. A pro uživatele který by tohle mohl udělat není problém data změnit jinou, méně komplikovanou cestou.</translate>

<translate>

Tipy

Nepoužívejte v parametrech které zpracovává rozšíření AccessControl šablony!

Pokud vás napadlo, že byste místo jména uživatele, nebo uživatelské skupiny použili šablonu, tak si uvědomte, že AccessControl pracuje s neinterpretovaným wiki kódem stránky, takže se pokusí vyhodnotit jako jméno řetězec znaků a ne až výsledek transkluze, jak byste očekávali. Viz příklad: <tvar|1>

<a‌ccesscontrol>{‌{‌{nobody}‌}‌}</a‌ccesscontrol>

</>

V tomto konkrétním případě by se AccessControl pokusil vyhledat uživatele, jehož jméno by odpovídalo řetězci <tvar|1>‌{{‌{nobody}}}</>, což je nonsens. Takový uživatel určitě existovat nebude. A u parametrizované šablony by mohl být výsledek zcela nepředvídatelný, takže si ani netroufám domýšlet co by se vlastně AccessControl pokusil vyhledat. Jisté je pouze to, že to nejspíš existovat nebude, protože MediaWiki takové řetězce v názvu stránky neakceptuje.

Když je uvedena jako seznam uživatelů neexistující stránka ( skupina ) nebo neplatné uživatelské jméno

Pokud máte svoji instanci wiki nastavenou jako case-sensitive, tak se může velice snadno stát, že omylem napíšete uživatelské jméno, či jméno stránky se skupinou uživatelů špatně. Stačí zaměnit, přidat, nebo vynechat jedno písmeno a jste v háji.

Pokud se vám něco takového stalo, přečtěte si co dělat {{<tvar|1>link|accesscontrol-deny</>|když se nemůžete dostat na stránku}}.</translate> <translate>

Nekopírujte slepě kód z těchto stránek!

  • Ukázkový wikikód z příkladů na této stránce samozřejmě můžete použít i na vlastní wiki – a v některých případech je to i výslovně doporučeno. ale v žádném případě nekopírujte kód z této stránky metodou <tvar|1>copy & paste</>!. Čekalo by vás totiž nemilé překvapení.
  • Aby tahle stránka mohla být veřejně přístupná i na wiki co již používá AccessControl, byla do řetězců, které by za normálních okolností AccessControl vyhodnotil jako ochraný prvek stránky, doplněna neviditelná mezera s nulovou šířkou.(<tvar|1>U+200C</> znak <tvar|2>ZERO WIDTH NON-JOINER &‌#8204;</>). Jde o netisknutelný znak, který nevidíte ale z hlediska PHP jde o regulérní znak, který zabraňuje nežádoucí interpretaci řetězců ať již na straně serveru (parametry pro AccessControl), nebo na straně prohlížeče (HTML entity).

</translate>

<translate> Pokud byste zkopírovali řetězec s neviditelnou mezerou, tak byste pak marně pátrali, proč vám rozšíření AccessControl nefunguje tak jak má!</translate>

<translate>

Stránka chráněná šablonou s řetězcem accesscontrol v názvu není uživatelský seznam!

Je to použitelné řešení, pokud jednu stránku mezi sebou sdílí pár uživatelů, nebo pokud bychom chtěli mít k dispozici šablonu, pro dočasné omezení přístupu k obsahu stránky. Stačí do prvního parametru šablony nasázet uživatelská jména a hotovo. A pokud chcete, můžete mezi nimi použít i jméno seznamu uživatelů. Kupříkladu uživatelé ze seznamu na stránce Čtenáři by v tomto případě sice nemohli obsah stránky <tvar|test>test-page</> měnit, nicméně by ho mohli stránku číst a sledovat její změny. </translate>

<translate> Pokud se ale pokusíte takovou stránku <tvar

<translate>

Když se nemůžete dostat na stránku

Nepanikařte!

Pokud jste omylem vyřadili ze sezamu uživatelů oprávěných k editaci stránky svoje jméno a znáte jiného uživatele, který má k editaci stránky povolen přístup, můžete ho zkusit požádat aby vaši chybu napravil a opět vás do seznamu přidal.

Pokud nikoho takového neznáte a žádný jiný uživatel na stránku přístup nemá, musíte požádat o pomoc některého uživatele, co má administrátorská práva ('sysop').

Ten vám ale nepomůže, pokud je privilegované postavení této skupiny uživatelů je přes <tvar|1>$wgAdminCanReadAll</> zakázáno, nebo pokud se vám stane, že podařilo zablokovat přístup ke stránce takovým způsobem, že se na ni nedostane ani administrátor (uživatel ve skupině 'sysop'). Taková situace může nastat např. v případě vícenásobné transkluze.

Pak máte pouze jedinou možnost.

Pokud nemáte přístup ke konfiguračnímu souboru <tvar|config>LocalSettings.php</>, musíte požádat toho kdo takový přístup má, aby dočasně rozšíření AccessControl deaktivoval, abyste mohli opravit vadný záznam, nebo aby ho opravil za vás – nejjednodušší a nejrychlejší je, obsah stránky kompletně smazat. Vy si ho pak můžete vydolovat z předchozí revize a jemu to zkrátí na minimum čas potřebný k vyřešení vašeho problému. </translate>

<translate> Uvědomte si, že po dobu kdy není rozšíření AccessControl aktivní může každý uživatel číst obsah stránek, které jím mají být chráněny! Proto je žádoucí problém vyřešit co nejrychleji a ihned poté rozšíření AccessControl opět zapnout.</translate>

<translate>

Dělejte přes uložením stránky náhledy

Pokud uděláte před uložením obsahu stránky co se má chránit přes AccessControl náhled. Tak v případě, že jste nevypnuli přesměrování (<tvar|1>$wgAccessControlRedirect</>) a {{<tvar|2>link|mediawiki-groups</>|nepatříte do skupiny 'sysop'}}, dojde okamžitě {{<tvar|3>link|accesscontrol-info</>|k přesměrování}}, které vám zabrání v uložení změn.

To vás ochrání před tím, abyste se "odřízli" od stránky v případě, že byste zapoměli povolit přístup k editaci obsahu stránky sobě.</translate> <translate>

Využití MediaWiki k soukromé komunikaci

MediaWiki může nahradit e-mailovou konferenci.

Pokud chce skupina uživatelů mezi sebou diskutovat bez účasti veřejnosti, stačí aby si "uzamkla" pro sebe diskuzní stránku k nějaké stránce. Stránka může obsahovat veřejný obsah k tématu diskuze a na chráněné diskuzní stránce mohou paralelně debatovat.

Stačí, aby měl uživatel nastavené sledování této diskuzní stránky. Pokud se změní její obsah, uvidí v záhlaví upozornění.

Jen na něm záleží bude-li chtít dostávat také notifikace o změnách přes e-mail.</translate> <translate>

Veřejný i neveřejný obsah na jedné stránce

AccessControl vždy chrání celou stránku a to napříč stránkami do kterých je chráněná stránka vložená prostřednictvím transkluze<tvar|ref><ref name="transclusion" /></>, ale pokud máte nainstalované rozšíření <tvar|1>Labeled Section Transclusion</> existuje způsob jak vystavit obsah chráněné stránky tak, aby byl veřejně dostupný.

Pokud máte tenhle manuál naimportovaný do své instance MediaWiki, která má k dispozici rozšíření <tvar|1>Labeled Section Transclusion</>, můžete si to vyzkoušet u testovací stránky <tvar|test>test-page</>.

  1. Nastavte si stránku <tvar|test>test-page</> tak, aby byla chráněná přes AccessControl.
  2. A pod šablonu, či tag, kterým bude chráněna přidejte novou sekci, pojmenovanou <tvar|1>PUBLIC</>.
  3. Do ní umístěte obsah, který budete chtít publikovat bez ochrany.

Veškerý obsah této sekce (včetně podsekcí) pak nabídnete přes jinou, nechráněnou stránku, do které vložíte následující kód: <tvar|1>

{‌{#lsth:test-page|PUBLIC}‌}

</>

Podobným způsobem můžete dokonce v rámci jedné stránky spravovat obsah sdílený mezi různé skupiny uživatelů. Pro AccessControl je totiž rozhodující oprávnění, které se vyskytne na stránce jako poslední. Každou sekci lze tedy chránit samostatně a pokud bude na samém konci stránky oprávnění, které vás nechá stránku editovat, můžete je spravovat všechny najednou.

Jejich obsah pak můžete publikovat podobným způsobem jako stránku pro anonymní uživatele.</translate> <translate>

Ochrání AccessControl stránky při použití DPL?

Rozšíření <tvar|1>DynamicPageList (third party)</> se využívá u šablon, které generují automaticky obsah stránky<tvar|ref><ref name="content" /></>. {{<tvar|1>link|accesscontrol-lsth</>|Kompromitace obsahu hrozí}} podobně jako u rozšíření <tvar|2>Labeled Section Transclusion</>, ale jen v případě, že je citlivý obsah umístěn v sekci, kterou lze vytáhnout přes její název. Při natažení obsahu, který bude obsahovat kód, co si AccessControl vyloží jako ochranný prvek, bude automaticky chráněn veškerý vygenerovaný obsah.

To pochopitelně může být kontraproduktivní, pokud někdo umístí chráněnou stránku do kategorie, ze které se obsah generuje. Používejte proto důsledně při psaní perexů a anotací tagy <tvar|1><section></>, které umožní ze stránky publikovat pouze to co chcete. </translate> <ref follow="content"> <translate> Veškerý obsah hlavní stránky webu <tvar|1>TheWoodcraft.Org</> se generuje přes parametrizovanou šablonu <tvar|2>Template:content</>. Pokud chcete, můžete ji použít i vy.</translate> </ref> <translate>

Historie verzí rozšíření AccessControl

Verze 1.0

První verze rozšíření AccessControl (1.x) vznikla jako vylepšená alternativa k rozšíření <tvar|1>Group Based Access Control</> pro MediaWiki verze 1.12.x

Verze 1.1 až 1.3

Tyto verze fungovaly u MediaWiki ≤ 1.17. Od května 2012 se stal kód rozšíření součástí oficiálního git repozitáře MediaWiki.

  • Od pozdějších verzí se lišily tím, že akceptovaly také skupiny MediaWiki, ovšem pouze v kanonické formě. Tj. muselo se použít 'sysop', místo 'Správce'.
  • A tag <tvar|tag><accesscontrol></> se mohl na stránce objevit i vícekrát.
  • Také již bylo možné použít proměnnou <tvar|1>$wgAdminCanReadAll</>

Verze 2.0 a 2.2

MediaWiki verze 1.18, sebou přinesla změny, kvůli nimž bylo nutné rozšíření přepsat. Byl odstraněn nevyužívaný kód a protože u tahle verze již neakceptovala standardní skupiny MediaWiki, bylo navýšeno hlavní číslo verze na 2.0.

Pro tuto verzi, byly uvolněny dvě subverze a byla použitelná až do MediaWiki verze 1.20

  • Tahle verze již pracovala pouze s {{<tvar|1>link|accesscontrol-old-syntax</>|uživatelskými seznamy určenými ke zpracování přes Accesscontrol}}
  • Na stránkách zpracovávala pouze první výskyt tagu accesscontrol
  • A pokud jméno uživatele bylo na více než jednom seznamu, pak se použil automaticky ten co mu poskytoval vyšší práva (edit)

S těmito verzemi se ale táhnul i nepříjemný problém. Pokud se při vyhledávání na stránkách MediaWiki našel hledaný řetězec i na chráněné stránce, tak se na stránce objevila chyba a neoprávněný (anonymní) uživatel se tak nedostal k výsledkům vůbec. Uspokojivě vyřešila tenhle problém až verze 3.0.

Verze 2.2

Protože se od MediaWiki verze ≥ 1.21 začal používat nový framework <tvar|1>ContentHandler</>, který umožňuje měnit typ wiki stránky podle obsahu, bylo nutné kód rozšíření upravit, aby mohl dál fungovat.

Výsledkem byl AccessControl verze 2.2, uvolněný v říjnu 2013 a tahle úprava kódu prodloužila použitelnost verze 2.x až k současným verzím MediaWiki.

Verze 2.5

V srpnu 2015 byla uvolněna verze 2.5, u které se nově objevila proměnná <tvar|1>$wgAccessControlRedirect</>. Díky ní bylo možné neoprávněného uživatele přesměrovat na informační stránku, na které se dozvěděl, že se pokusil dostat ke chráněnému stránku.

Tahle úprava sebou ale přinesla jiný {{<tvar|1>link|how-accesscontrol-work</>|efekt, již zmíněný výše}} a to, že se tím významně ušetřila práce webovému serveru, protože mohl indexovacím robotům nabídnout náhradní obsah.

Tato verze byla poslední, kterou se podařilo dostat do oficiálního repozitáře MediaWiki a fungovala, dokud do ní Siebrand Mazeland neposlal změny, které sice měly umožnit registraci tohoto rozšíření přes funkci <tvar|1>$wfLoadExtensions()</>, ale znemožnily jeho fungování pro starší verze MediaWiki < 1.25

Jako maintaner rozšíření AccessControl jsem tomu nemohl zabránit, protože mi v té době již nefungovalo přihlašování do Gerritu. Nemohl jsem tedy změny odmítnout a vynutit si kód, který by umožnil používat oba způsoby registrace, jako to umožňují jiná rozšíření.

Verze 2.5.1

Tahle verze implementovala novou proměnnou <tvar|1>$wgAccessToHistory</>, která měla umožnit anonymním uživatelům přístup k historii a wikikódu nechráněných stránek. Byla uvolněna na konci února 2016, ale díky nekompatibilnímu kódu, který prošel do oficiálního repozitáře rozšíření, se do něj nikdy nedostala.

Verze 2.6

Jádro kódu je u verze 2.6 stejné jako verze 2.5, ale kvůli registraci přes <tvar|1>$wfLoadExtensions()</> vyžaduje MediaWiki ≥ 2.5

Verze z Hackatonu 2019

Ve dnech 17.–20. května 2019 se konal v Praze (Česká republika) Wikimedia Hackaton 2019. Těsně před touto akcí mne kontaktoval Nicolas Nallet, jestli bychom se při této příležitosti nesetkali, abychom mohli společně rozšíření AccessControl vylepšit.

Sešli jsme se a Nicolas přišel s nápadem, jak by se dalo efektivně při práci s uživatelským seznamem využívat rozšíření <tvar|1>Page Forms</>. Výsledkem byl rozšířený kód, na kterém mohl Nicolas provést první testy již během Hackatonu. Nicméně tou dobou jsem byl již rozhodnut, kód rozšíření radikálně předělat.

Verze 3.0

Beta verze rozšíření byla hotova asi týden. A přesně měsíc po konci Hackatonu 2019 byla uvolněna a nabídnuta k testování pre-release verze.

Vydání finální verze bylo spojeno s dokončením této uživatelské dokumentace, protože kód byl kompletně přepsaný a přináší řadu novinek. </translate> <translate>

Doporučená a osvědčená rozšíření

<tvar|1>AccessControl</> je rozšíření, které nemá žádné závislosti. Nicméně vřele doporučuji, aby ve vaší wiki nechyběla následující sada rozšíření, která vám umožní v prostředí MediaWiki programovat sofistikované šablony s využitím wiki kódu. </translate>

<translate>

Není důvod pro jednoduché šablony instalovat Scribunto

a programovat v Lua!</translate>

DynamicPageList (third party)
<translate> Sofistikované rozšíření, které umožňuje generovat pomocí šablony dynamický obsah stránek.</translate>
Labeled Section Transclusion
<translate> Umožňuje vytahovat z obsahu stránek vybrané sekce</translate>
Loops
<translate> Umožňuje používat v šablonách smyčky.</translate>
MyVariable
<translate> Přidává několik užitečných kouzelných slůvek, s nimiž lze dále pracovat v šablonách.</translate>
Page Forms
<translate> Umožňuje spravovat seznamy uživatelů s nimiž pracuje AccessControl prostřednictvím formulářů.</translate>
ParserFunctions
<translate> Nabízí širokou paletu funkcí, které umožňují sofistikované naprogramování šablony.</translate>
SubPageList
<translate> Umožňuje vylistovat podstránky jako seznam, který lze dále zpracovávat pomocí funkcí, které nabízí rozšíření ParserFunctions, smyček, aj.</translate>
Translate
<translate> Rozšíření pro překlady obsahu pro multijazyčné wiki</translate>
Variables
<translate> Umožňuje v šablonách definovat a používat proměnné.</translate>

<translate>

Zmíněná rozšíření

</translate>

DisableSpecialPages
<translate> Neudržované rozšíření, které umožňovalo vypnout speciální stránky. Zde je uvedeno {{<tvar|1>link|config-extra</>|alternativní řešení pomocí vlastní funkce}}.</translate>
Scribunto
<translate> Rozšíření, které umožňuje programovat moduly v jazyce Lua</translate>

<translate>

Reference

</translate> <references /> <translate>

Kotvy použité na stránce

</translate>

<translate> Kotva</translate> <translate> Popis</translate>
accesscontrol-accesslist <translate> Seznamy oprávěných uživatelů a jejich použití</translate>
accesscontrol-deny <translate> Co dělat, když jste si zablokovali přístup na stránku</translate>
accesscontrol-dpl 1>DynamicPageList (third party)</></translate>
accesscontrol-export <translate> Pasáž věnovaná omezení při exportu dat z MediaWiki</translate>
accesscontrol-history <translate> Odkaz na historický přehled vývoje rozšíření AccessControl</translate>
accesscontrol-info info>MediaWiki:Deny user</></translate>
accesscontrol-install <translate> Kotva na kapitolu k instalaci rozšíření</translate>
accesscontrol-lsth 1>Labeled Section Transclusion</></translate>
accesscontrol-old-syntax <translate> Kapitola věnovaná původní syntaxi seznamů uživatelů</translate>
accesscontrol-tag tag><a‌ccesscontrol></></translate>
accesscontrol-test test>test-page</></translate>
accesscontrol-template-options <translate> Ochrana stránky parametrizovanou šablonou</translate>
accesscontrol-template-name tag><a‌ccesscontrol></>)</translate>
config-basic <translate> Výchozí konfigurace wiki před instalací rozšíření AccessControl</translate>
config-extension-rights <translate> Preventivní omezení práv, která sebou tahají rozšíření</translate>
config-extra <translate> Omezení přístupu ke speciálním stránkám</translate>
how-accesscontrol-detect <translate> Odkaz na pasáž, kde se píše jak detekuje chráněný obsah</translate>
how-accesscontrol-work <translate> Odkaz na pasáž, kde se rozebírá jakým způsobem se kontroluje obsah stránky</translate>
mediawiki-groups <translate> Uživatelské skupiny mediawiki</translate>
mediawiki-preview <translate> Doporučený postup při uložení změn po editaci stránky s chráněným obsahem</translate>
namespace-private config>LocalSettings.php</> přístupová správa jen pro vybrané skupiny uživatelů.</translate>
mediawiki-private-channel <translate> Jak využívat ochrany stránek přes AccessControl k privátní komunikaci.</translate>
not-accesslist <translate> Upozornění, že chování pojmenované šablony je jiné, než u šablony, co používá options</translate>
only-example-code <translate> Varování před bezduchým kopírováním kódu</translate>
option-template <translate> Varování před použitím šablony místo jména uživatele, či seznamu uživatelů</translate>
page-lock <translate> Zamykání stránek. Kdy a kde ho použít.</translate>
public-and-private <translate> Postup jak míchat na jedné stránce soukromý a veřejný obsah.</translate>
template-atack <translate> Jak lze napadnout wiki zneužitím parametru rozšíření AccessControl.</translate>
template-is-better tag><a‌ccesscontrol></></translate>
template-tag-difference 1>a‌ccesscontrol</> v názvu (totéž platí i ohledně zpracování obsahu tagu <tvar|tag><a‌ccesscontrol></></translate>