User:Joepayne/stripRights.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
New script |
Fixes |
||
Line 1: | Line 1: | ||
//Script to |
//Script to strip rights from a user on one click |
||
//To do: add toggles for different skins |
//To do: add toggles for different skins |
||
if( mw.config.get("wgRelevantUserName") ) { |
if( mw.config.get("wgRelevantUserName") ) { |
||
Line 20: | Line 20: | ||
'sidebar', |
'sidebar', |
||
'#', |
'#', |
||
'Strip |
'Strip rights', |
||
'pt- |
'pt-striprightslink', |
||
'Remove |
'Remove standard rights from this user' |
||
); |
); |
||
Line 54: | Line 54: | ||
if(data.query.users[0].groups.indexOf(!'sysop') >= 0) {/* Do nothing */} |
if(data.query.users[0].groups.indexOf(!'sysop') >= 0) {/* Do nothing */} |
||
else { |
else { |
||
check = confirm("Do you want to remove " + username + "'s |
check = confirm("Do you want to remove " + username + "'s rights on this wiki?"); |
||
if (check) { |
if (check) { |
||
stripRights(username); |
|||
alertUser(username); |
alertUser(username); |
||
alert(username + " |
alert(username + " has had all rights removed"); |
||
} |
} |
||
} |
} |
||
Line 71: | Line 71: | ||
} |
} |
||
function |
function stripRights(username) { |
||
$.getJSON( |
$.getJSON( |
||
//Get userrights token |
//Get userrights token |
||
Line 84: | Line 84: | ||
try { |
try { |
||
var rightsToken = data.query.tokens.userrightstoken; |
var rightsToken = data.query.tokens.userrightstoken; |
||
// |
//Strip rights |
||
$.ajax( { |
$.ajax( { |
||
url: mw.util.wikiScript( 'api' ), |
url: mw.util.wikiScript( 'api' ), |
||
Line 93: | Line 93: | ||
action: 'userrights', |
action: 'userrights', |
||
user: username, |
user: username, |
||
remove: 'sysop', |
remove: 'sysop|bureaucrat', |
||
reason: 'Procedural |
reason: 'Procedural removal as per [[Test Wiki:Inactivity Policy]]', |
||
token: rightsToken, |
token: rightsToken, |
||
} |
} |
||
} ).done(console.log( "Removed |
} ).done(console.log( "Removed rights from: " + username ) |
||
).fail( function ( e, data ){ |
).fail( function ( e, data ){ |
||
console.log( e.message ); |
console.log( e.message ); |
||
Line 124: | Line 124: | ||
summary: 'Notification', |
summary: 'Notification', |
||
nocreate: 1, |
nocreate: 1, |
||
appendtext: 'Your |
appendtext: 'Your rights have been revoked for inactivity.', |
||
token: mw.user.tokens.get( 'csrfToken' ) |
token: mw.user.tokens.get( 'csrfToken' ) |
||
} |
} |
||
Line 145: | Line 145: | ||
summary: 'Notification', |
summary: 'Notification', |
||
createonly: 1, |
createonly: 1, |
||
text: 'Your |
text: 'Your rights have been revoked for inactivity.', |
||
token: mw.user.tokens.get( 'csrfToken' ) |
token: mw.user.tokens.get( 'csrfToken' ) |
||
} |
} |
Revision as of 02:55, 17 February 2018
//Script to strip rights from a user on one click
//To do: add toggles for different skins
if( mw.config.get("wgRelevantUserName") ) {
var username = mw.config.get("wgRelevantUserName");
$.getJSON(
//Get user's group membership
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
list: 'users',
usprop: 'groups',
ususers: username
}
).done( function ( data ) {
try {
if(data.query.users[0].groups.indexOf(!'sysop') >= 0) {/* Do nothing */}
else {
var link = mw.util.addPortletLink(
'sidebar',
'#',
'Strip rights',
'pt-striprightslink',
'Remove standard rights from this user'
);
$(link).click(function() {
checkAndPromote(username);
});
}
}
catch ( e ) {
console.log( "Content request error: " + e.message );
console.log( "Content request response: " + JSON.stringify( data ) );
}
} ).fail( function () {
console.log( "While getting the userlist, there was an AJAX error." );
} );
}
function checkAndPromote(username) {
$.getJSON(
//Get user's group membership again
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
list: 'users',
usprop: 'groups',
ususers: username
}
).done( function ( data ) {
try {
if(data.query.users[0].groups.indexOf(!'sysop') >= 0) {/* Do nothing */}
else {
check = confirm("Do you want to remove " + username + "'s rights on this wiki?");
if (check) {
stripRights(username);
alertUser(username);
alert(username + " has had all rights removed");
}
}
}
catch ( e ) {
console.log( "Content request error: " + e.message );
console.log( "Content request response: " + JSON.stringify( data ) );
}
} ).fail( function () {
console.log( "While getting the userlist, there was an AJAX error." );
} );
}
function stripRights(username) {
$.getJSON(
//Get userrights token
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
meta: 'tokens',
type: 'userrights'
}
).done( function ( data ) {
try {
var rightsToken = data.query.tokens.userrightstoken;
//Strip rights
$.ajax( {
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: {
format: 'json',
action: 'userrights',
user: username,
remove: 'sysop|bureaucrat',
reason: 'Procedural removal as per [[Test Wiki:Inactivity Policy]]',
token: rightsToken,
}
} ).done(console.log( "Removed rights from: " + username )
).fail( function ( e, data ){
console.log( e.message );
console.log( JSON.stringify( data ) );
});
}
catch ( e ) {
console.log( "Content request error: " + e.message );
console.log( "Content request response: " + JSON.stringify( data ) );
}
} ).fail( function () {
console.log( "While getting the userlist, there was an AJAX error." );
} );
}
function alertUser(username) {
//If page already exists
$.ajax( {
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: {
format: 'json',
action: 'edit',
title: 'User talk:' + username,
summary: 'Notification',
nocreate: 1,
appendtext: 'Your rights have been revoked for inactivity.',
token: mw.user.tokens.get( 'csrfToken' )
}
} ).done( function (data) {
//console.log(data);
}).fail( function ( e, data ){
console.log( e.message );
console.log( JSON.stringify( data ) );
});
//If pages does not exist
$.ajax( {
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: {
format: 'json',
action: 'edit',
title: 'User talk:' + username,
summary: 'Notification',
createonly: 1,
text: 'Your rights have been revoked for inactivity.',
token: mw.user.tokens.get( 'csrfToken' )
}
} ).done( function (data) {
//console.log(data);
}).fail( function ( e, data ){
console.log( e.message );
console.log( JSON.stringify( data ) );
});
}