Extension:ToggleAnonRights

From MediaWiki.org
Jump to navigation Jump to search
MediaWiki extensions manual
OOjs UI icon advanced.svg
Toggle Anon Rights
Release status: stable
Implementation User rights
Description On-wiki toggling of anonymous users' permissions
Author(s) Ryan Schmidt (Skizzerztalk)
Latest version 1.2.1
MediaWiki 1.11+
License None (Public Domain)
Download ToggleAnonRights.php
Translate the ToggleAnonRights extension if it is available at translatewiki.net
Check usage and version matrix.

Usage[edit]

This extension allows anyone with the 'editinterface' permission to revoke permissions from anonymous users in emergency situations. This may be useful, for example, to prevent anonymous users from creating accounts when one has a large flood of automated account creations.

To use this extension, edit MediaWiki:Anonrights and add a bulleted list of rights to revoke from anonymous users, for example, the following in the page source would revoke their rights to edit and create new accounts:

* edit
* createaccount

Also, this can only be used to remove existing rights from anonymous users. You cannot add rights this way.

Removable rights[edit]

ToggleAnonRights allows removal of the following rights, in addition to other rights that anonymous users may receive:

* createaccount
* read
* edit
* createpage
* createtalk
* writeapi

Download instructions[edit]

Please cut and paste the code found below and place it in $IP/extension/ToggleAnonRights/ToggleAnonRights.php. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php.

Installation[edit]

To install this extension, add the following to the end of LocalSettings.php:

require_once("$IP/extensions/ToggleAnonRights/ToggleAnonRights.php");

ToggleAnonRights.php[edit]

<?php
/**
 * Toggle Anon Rights extension for MediaWiki
 * Allows toggling of various anonymous group permissions
 * Add rights in bulleted list format to globally disable them for anons, remove from the list to re-enable
 * THIS CAN ONLY BE USED TO REMOVE RIGHTS, NOT ADD THEM!
 *
 * @file
 * @ingroup Extensions
 * @version 1.2.1
 * @author Ryan Schmidt
 * @link http://www.mediawiki.org/wiki/Extension:ToggleAnonRights Documentation
 */

if( !defined( 'MEDIAWIKI' ) ) {
	echo( 'This file is an extension to the MediaWiki software and cannot be used standalone' );
	die( 1 );
}

// Extension credits that will show up on Special:Version
$wgExtensionCredits['other'][] = array(
	'name' => 'Toggle Anon Rights',
	'version' => '1.2.1',
	'author' => 'Ryan Schmidt',
	'url' => 'http://www.mediawiki.org/wiki/Extension:ToggleAnonRights',
	'description' => "On-wiki toggling of anonymous users' permissions",
);

$wgHooks['UserGetRights'][] = 'ToggleAnonRights';

function ToggleAnonRights( $user, &$aRights ) {
	if( $user->isLoggedIn() ) {
		// don't do anything, but return true to continue hook processing
		return true;
	}

	$pages = explode( "\n", wfMessage( 'anonrights' )->text() );

	foreach( $pages as $value ) {
		$right = trim( trim( trim( trim( $value ), "*" ) ), "*" ); // make sure ALL whitespace is removed
		$key = array_search( $right, $aRights );
		if( $key !== false ) {
			array_splice( $aRights, $key, 1 );
		}
	}
	return true;
}