[Mediawiki-l] [quickhack] require a specific user to view a page

Moritz Karbach mailinglist at karba.ch
Wed Feb 2 11:35:35 UTC 2005


Hi,

I found out how to require specific users for certain page categories. This 
should be more flexible and somewhat safer than my previous quickhack, since 
the template security hole doesn't occur any more (pages aquire the 
categories of a template).

In the meantime I upgraded to Mediawiki 1.4beta5, so this is only tested with 
this version.

Here are the changes:

-----------------------------------------
LocalSettings.php at the end:

#
# inserted by m:o
#
# set access rights
#
# usage:
# - "category" => "required_user"
# - 'required_user' can also be a list of users, separeted with blanks
# - the first expression witch matches the sitename will be used. If there are 
other
#    expressions that match, they will be ignored.
#
$wgRequireUser = array (
        "Privat" => "Mo",
        "Grid" => "Mo Max Christoph",
        "H1MC" => "Mo Max Christoph"
);

-----------------------------------------
includes/Title.php line 843:

# inserted by m:o
global $wgRequireUser;

// get categories as array
$parentCategories = $this->getParentCategories();

if( !empty($parentCategories) ) //prevents php warning for uncategorized pages
{
 // go through all categories wich have restrictions
 foreach(  $wgRequireUser as $category => $requiredUser )
 {
  // go through all categories to which a page belongs to
  foreach( $parentCategories as $siteCategory => $wikiSite )
  {
   // is the page in a category that is restricted?
   if( preg_match("/:".$category."$/", $siteCategory)==1 )
   //if( $siteCategory == "Kategorie:".$category )
   {
    // ...then check, whether the user is the right one!
    $user = $wgUser->getName();
    $isUsrAllowed = preg_match("/\b$user\b/", "$requiredUser");

    // not the right one? -> go away!
    if( $isUsrAllowed!=1 )
    {
     return false;
    }
   }
  }
 }
}
# /inserted by m:o

Cheers,

- Moritz



More information about the MediaWiki-l mailing list