On Thu, 27 Jan 2005 15:58:25 +0100 Moritz Karbach mailinglist@karba.ch wrote:
Hi,
as my very private Wiki grew larger, a few people liked to use it as well. So I needed to protect the sites, that are really private. Since some kind of user rights is scheduled for version 1.5, here comes a quickhack:
Wiki Version: 1.3.5 (maybe it works on later versions as well)
Insert the following into Title.php, function userCanRead(), right after the globals have been defined (for me it's line 550):
# inserted by m:o global $wgRequireUser; $siteName = $this->getPrefixedText(); # pagename $requiredUser = $wgRequireUser[$name]; $allowed = true; foreach( $wgRequireUser as $siteRegExp => $requiredUser ){ $check= preg_match("/$siteRegExp/", "$siteName"); if( $check==1 && $wgUser->getName()!=$requiredUser ) { $allowed = false; } } if( ! $allowed ) return false; # /inserted by m:o
Then insert the following in your LocalSettings.php at the end, just before the '?>':
# # inserted by m:o # # set access rights # # usage: # "regular expression that matches the site you want to protect" => "required user" # # examples: # "^Linux" matches all sites beginning with "Linux" # "Linux" matches all sites containing "Linux" # "Linux$" % ending with "Linux" # $wgRequireUser = array ( "^Hauptseite:private$" => "Mo", "^Tbd$" => "Mo", "^Desy" => "Mo", "^Grid" => "Mo", "^Logbook$" => "Mo" );
Nice! I've been looking for something like this. (Sorry, I haven't studied enough of the Mediawiki code to comment on the security aspect yet.)
Thanks, Jacob