Jump to content

API:Groupe d'apartenance de l'utilisateur

From mediawiki.org
This page is a translated version of the page API:User group membership and the translation is 100% complete.
Version de MediaWiki :
1.16

Requête POST pour ajouter ou supprimer des utilisateurs à un groupe, ce qui équivaut à attribuer ou supprimer des droits aux utilisateurs.

Documentation de l'API

action=userrights

(main | userrights)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Change a user's group membership.

Specific parameters:
Other general parameters are available.
user

User.

Type: user, by any of username and user ID (e.g. "#12345")
userid
Deprecated.

Specify user=#ID instead.

Type: integer
add

Add the user to these groups, or if they are already a member, update the expiry of their membership in that group.

Values (separate with | or alternative): accountcreator, autopatrolled, bot, bureaucrat, checkuser, checkuser-temporary-account-viewer, confirmed, flow-bot, import, interface-admin, ipblock-exempt, no-ipinfo, steward, suppress, sysop, translationadmin, transwiki, uploader
expiry

Expiry timestamps. May be relative (e.g. 5 months or 2 weeks) or absolute (e.g. 2014-09-18T12:34:56Z). If only one timestamp is set, it will be used for all groups passed to the add parameter. Use infinite, indefinite, infinity, or never for a never-expiring user group.

Separate values with | or alternative.
Maximum number of values is 50 (500 for clients that are allowed higher limits).
Default: infinite
remove

Remove the user from these groups.

Values (separate with | or alternative): accountcreator, autopatrolled, bot, bureaucrat, checkuser, checkuser-temporary-account-viewer, confirmed, flow-bot, import, interface-admin, ipblock-exempt, no-ipinfo, steward, suppress, sysop, translationadmin, transwiki, uploader
reason

Reason for the change.

Default: (empty)
token

A "userrights" token retrieved from action=query&meta=tokens

For compatibility, the token used in the web UI is also accepted.

This parameter is required.
tags

Change tags to apply to the entry in the user rights log.

Values (separate with | or alternative): AWB, convenient-discussions
watchuser

Watch the user's user and talk pages.

Type: boolean (details)
watchlistexpiry

Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.

Type: expiry (details)
Examples:
Add user FooBot to group bot, and remove from groups sysop and bureaucrat.
api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC [open in sandbox]
Add the user with ID 123 to group bot, and remove from groups sysop and bureaucrat.
api.php?action=userrights&userid=123&add=bot&remove=sysop|bureaucrat&token=123ABC [open in sandbox]
Add user SometimeSysop to group sysop for 1 month.
api.php?action=userrights&user=SometimeSysop&add=sysop&expiry=1%20month&token=123ABC [open in sandbox]


Exemple

Pour utiliser cette API, vous devez d'abord vous connecter pour vérifier votre propre appartenance au groupe des utilisateurs. Seuls certains groupes ont le droit de modifier les droits utilisateur via cette API. Voir API:Authentification pour d'autres détails concernnant la connexion.

Une fois connecté, faire une requête GET pour obtenir un jeton userrights .

La requête ci-dessus s'applique dans MediaWiki v1.24+; pour les versions plus anciennes, le jeton userrights va dépendre du nom de l'utilisateur à qui on a changé les droits. La requête devrait être faite ainsi :

Pour des raisons de compatibilité, l'API va aussi accepter le jeton utilisé par l'IHM web.

Quellequesoit la méthode que vous choisissez, une fois que vous avez votre jeton, vous pouvez l'utiliser pour faire votre requête userrights , comme ci-dessous.

Requête POST

Enlever Bob du groupe bureaucrat , et le rajouter dans le groupe sysop , afin de lui donner les droits administrateur.

Réponse

{
    "userrights": {
        "user": "Bob",
        "userid": 2793024,
        "removed": ["bureaucrat"],
        "added": ["sysop"]
    }
}

Exemple de code

Python

#!/usr/bin/python3

"""
    userrights.py

    Démonstration de l'API MediaWiki
    Démonstration du module 'Userrights' : ajouter ou supprimer des droits utilisateur en
    modifiant l'appartenance au groupe urtilisateur.
    Licence MIT
"""

import requests

S = requests.Session()

URL = "https://test.wikipedia.org/w/api.php"

# Etape 1 : récupérer un jeton de connexion
PARAMS_1 = {
    "action": "query",
    "meta": "tokens",
    "type": "login",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_1)
DATA = R.json()

LOGIN_TOKEN = DATA["query"]["tokens"]["logintoken"]

# Etape 2 : envoyer une requête POST pour se connecter. Voir
# https://www.mediawiki.org/wiki/Manual:Bot_passwords
# pour une note spéciale sur la connexion à l'aide d'une
# interface simplifiée quand le wiki est accédé par une application,
# plutôt que par l'interface graphique.
PARAMS_2 = {
    "action": "login",
    "lgname": "username",
    "lgpassword": "password",
    "lgtoken": LOGIN_TOKEN,
    "format": "json"
}

R = S.post(URL, data=PARAMS_2)

# Etape 3 : obtenir un jeton ''Userrights''
PARAMS_3 = {
    "action": "query",
    "format": "json",
    "meta": "tokens",
    "type": "userrights"
}

R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()

USERRIGHTS_TOKEN = DATA["query"]["tokens"]["userrightstoken"]

# Etape 4 : requête pour ajouter ou supprimer un utilisateur d'un groupe
PARAMS_4 = {
    "action": "userrights",
    "format": "json",
    "user": "Bob",
    "add": "sysop",
    "remove": "bureaucrat",
    "reason": "OOPS! added Bob to the wrong group",
    "token": USERRIGHTS_TOKEN
}

R = S.post(URL, data=PARAMS_4)
DATA = R.json()

print(DATA)

PHP

<?php
/*
userrights.js
La requête ci-dessus s'applique dans MediaWiki v1.24+; pour les versions plus anciennes, le jeton $1 va dépendre du nom de l'utilisateur à qui on a changé les droits.
La requête devrait être faite ainsi :
Quellequesoit la méthode que vous choisissez, une fois que vous avez votre jeton, vous pouvez l'utiliser pour faire votre requête $1 , comme ci-dessous.
Requête POST pour ajouter ou supprimer des utilisateurs à un groupe, ce qui équivaut à attribuer ou supprimer des droits aux utilisateurs.
*/
$endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php";

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$userrights_Token = getUserRightsToken(); // Step 3
change_userrights( $userrights_Token ); // Step 4

// Étape 1 : requête GET pour récupérer un jeton de connexion
function getLoginToken() {
	global $endPoint;

	$params1 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "login",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params1 );

	$ch = curl_init( $url );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["logintoken"];
}

// Etape 2 : requête POST pour se connecter. L'utilisation du compte principal pour se connecter n'est pas
// supportée. Obtenir les informations d'identification via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
	global $endPoint;

	$params2 = [
		"action" => "clientlogin",
		"username" => "username",
		"password" => "password",
		'loginreturnurl' => 'http://127.0.0.1:5000/',
		"logintoken" => $logintoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

}

// Etape 3 : requête GET pour obtenir un jeton ''Userrights''
function getUserRightsToken() {
	global $endPoint;

	$params3 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "userrights",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params3 );

	$ch = curl_init( $url );

	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["userrightstoken"];
}

// Etape 4 : requête POST pour ajouter ou supprimer un utilisateur d'un groupe
function change_userrights( $userrightstoken ) {
	global $endPoint;

	$params4 = [
		"action" => "userrights",
		"user" => "ABCDEF",
		"add" => "bot",
		"expiry" => "infinite",
		"reason" => "API Testing",
		"token" => $userrightstoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	echo ( $output );
}

JavaScript

/*
userrights.js
La requête ci-dessus s'applique dans MediaWiki v1.24+; pour les versions plus anciennes, le jeton $1 va dépendre du nom de l'utilisateur à qui on a changé les droits.
La requête devrait être faite ainsi :
Quellequesoit la méthode que vous choisissez, une fois que vous avez votre jeton, vous pouvez l'utiliser pour faire votre requête $1 , comme ci-dessous.
Requête POST pour ajouter ou supprimer des utilisateurs à un groupe, ce qui équivaut à attribuer ou supprimer des droits aux utilisateurs.
*/
var request = require('request').defaults({jar: true}),
    url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";

// Etape 1 : requête GET pour récupérer un jeton de connexion
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };

    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        loginRequest(data.query.tokens.logintoken);
    });
}

// Etape 2 : requête POST pour se connecter. 
// L'utilisation du compte principal n'est pas
// supportée. Obtenir les informations d'identification via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
    var params_1 = {
        action: "clientlogin",
        username: "username",
        password: "password",
        loginreturnurl: "http://127.0.0.1:5000/",
        logintoken: login_token,
        format: "json"
    };

    request.post({ url: url, form: params_1 }, function (error, res, body) {
        if (error) {
            return;
        }
        getUserRightsToken();
    });
}

// Etape 3 : requête GET pour obtenir un jeton ''Userrights''
function getUserRightsToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        type: "userrights",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        userrights(data.query.tokens.userrightstoken);
    });
}

// Etape 4 : requête POST pour ajouter ou supprimer un utilisateur d'un groupe
function userrights(userrights_token) {
    var params_3 = {
        action: "userrights",
        user: "ABCDEFG",
        add: "bot",
        expiry: "infinite",
        reason: "API Testing",
        token: userrights_token,
        format: "json"
    };

    request.post({ url: url, form: params_3 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Commencer à l'étape 1
getLoginToken();

MediaWiki JS

/*
userrights.js
La requête ci-dessus s'applique dans MediaWiki v1.24+; pour les versions plus anciennes, le jeton $1 va dépendre du nom de l'utilisateur à qui on a changé les droits.
La requête devrait être faite ainsi :
Quellequesoit la méthode que vous choisissez, une fois que vous avez votre jeton, vous pouvez l'utiliser pour faire votre requête $1 , comme ci-dessous.
Requête POST pour ajouter ou supprimer des utilisateurs à un groupe, ce qui équivaut à attribuer ou supprimer des droits aux utilisateurs.
*/
var params = {
		action: 'userrights',
		user: 'ABCD',
		add: 'sysop',
		reason: 'Added ABCD to the sysop group',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'userrights', params ).done( function ( data ) {
	console.log( data );
} );

Erreurs possibles

Code Informations
nouser Le paramètre user doit être défini.
nosuchuser Cet "utilisateur" n'existe pas
Ceci peut se produire si vous essayez de modifier les droits d'un utilisateur anonyme.
notoken Le paramètre token doit être défini.
badtoken Jeton CSRF non valide.
readonly Ce wiki est actuellement en mode lecture seule.

Historique des paramètres

  • v1.29: ajouté expiry
  • v1.23: ajouté userid

Notes additionnelles

  • Par défaut, seuls les utilisateurs du groupe des bureaucrates peuvent attribuer ou supprimer des droits aux utilisateurs.
  • Certains wikis autorisent les non-bureaucrates à attribuer ou à supprimer des droits dans une certaine limite, comme restreindre ces possibilités au propre compte de l'utilisateur.
  • Si vous n'avez pas la capacité d'attribuer ou de supprimer les droits de l'utilisateur cible, l'API ne va pas produire d'erreur; à la place, les champs add et remove de la réponse contiendront simplement des tableaux vides.

Voir aussi

  • Aide:Droits utilisateur et groupes - décrit en profondeur le fonctionnement des droits utilisateurs et l'appartenance aux groupes.
  • Special:ListGroupRights - liste tous les droits et les privilèges attribués à chaque groupe d'utilisateurs sur un wiki particulier.
  • Special:UserRights - une manière d'ajouter ou de supprimer des droits utilisateurs par IHM, disponibles sur les wikis exécutant v1.29+.
  • API:Users/fr - récupère des informations sur une liste d'utilisateurs, y compris leurs groupes et leurs droits.