User:Joepayne/stripRights.js
Jump to navigation
Jump to search
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
//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 for inactivity' ); $(link).click(function() { checkAndDemote(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 checkAndDemote(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 bureaucrat and admin rights on this wiki for inactivity?"); if (check) { stripRights(username); demotionAlert(username); alert(username + " has had their bureaucrat and admin removed for inactivity"); } } } 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 demotionAlert(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 of rights removal', nocreate: 1, appendtext: '\n\n{{subst:' + 'Rights removed}}', 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 of rights removal', createonly: 1, text: '\n\n{{subst:' + 'Rights removed}}', 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 ) ); }); }