Jump to content

API:Kullanıcı grubu üyeliği

From mediawiki.org
This page is a translated version of the page API:User group membership and the translation is 97% complete.
MediaWiki sürümü:
1.16

POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.

API belgesi

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]


Örnek

Bu API'yi kullanmak için önce kendi kullanıcı grubu üyeliğinizi doğrulamak için oturum açmanız gerekir. Bu API aracılığıyla yalnızca belirli gruplara kullanıcı haklarını değiştirme yetkisi verilir. Oturum açma hakkında daha fazla bilgi için API:Oturum aç sayfasına bakın.

Giriş yaptıktan sonra userrights anahtarı almak için bir GET isteğinde bulunun.

Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, userrights anahtarı hakları değiştirilen kullanıcının adına bağlıdır. Sorgu şu şekilde yapılır:

Uyumluluk nedenlerinden dolayı, API web arayüzünde kullanılan anahtarı da kabul edecektir.

Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi userrights isteğinizi yapmak için kullanabilirsiniz.

POST isteği

bureaucrat grubundan Bob kaldırın ve sysop grubuna ekleyin, böylece onlara hizmetli hakları verin.

Yanıt

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

Örnek kod

Python

#!/usr/bin/python3

"""
    userrights.py

    MediaWiki API Demos
    Demo of `Userrights` module: Add and remove user rights by
    changing the user's group membership.
    MIT license
"""

import requests

S = requests.Session()

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

# Step 1: Retrieve a login token
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"]

# Step 2: Send a post request to log in. See
# https://www.mediawiki.org/wiki/Manual:Bot_passwords
# for a special note on logging in using a simplified
# interface when accessing wikis via an application,
# rather than the GUI
PARAMS_2 = {
    "action": "login",
    "lgname": "username",
    "lgpassword": "password",
    "lgtoken": LOGIN_TOKEN,
    "format": "json"
}

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

# Step 3: Obtain a Userrights token
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"]

# Step 4: Request to add or remove a user from a group
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
Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
Sorgu şu şekilde yapılır:
Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
*/
$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

// Step 1: GET request to fetch login token
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"];
}

// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials 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 );

}

// Step 3: GET request to fetch userrights token
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"];
}

// Step 4: POST request to add or remove a user from a group
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
Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
Sorgu şu şekilde yapılır:
Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
*/
var request = require('request').defaults({jar: true}),
    url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";

// Step 1: GET request to fetch login token
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);
    });
}

// Step 2: POST request to log in. 
// Use of main account for login is not
// supported. Obtain credentials 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();
    });
}

// Step 3: GET request to fetch UserRights token
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);
    });
}

// Step 4: POST request to add or remove a user from a group
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);
    });
}

// Start From Step 1
getLoginToken();

MediaWiki JS

/*
userrights.js
Yukarıdaki sorgu MediaWiki v1.24 + için geçerlidir; eski sürümlerde, $1 anahtarı hakları değiştirilen kullanıcının adına bağlıdır.
Sorgu şu şekilde yapılır:
Hangi yöntemi seçerseniz seçin, anahtarınızı aldıktan sonra, aşağıda görüldüğü gibi $1 isteğinizi yapmak için kullanabilirsiniz.
POST isteği, bir gruba kullanıcı eklemek veya gruptan kullanıcı çıkarmaktır, böylece belirli kullanıcı haklarını verrir veya kaldırır.
*/
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 );
} );

Olası hatalar

Kod Bilgi
nouser user parametresi ayarlanmalıdır.
nosuchuser "user" kullanıcısı mevcut değil
Bu, anonim bir kullanıcının haklarını değiştirmeye çalışırken olabilir.
notoken token parametresi ayarlanmalıdır.
badtoken Geçersiz CSRF anahtarı.
readonly Viki şu anda salt okunur modda.

Parametre geçmişi

  • v1.29: Introduced expiry
  • v1.23: userid tanıtıldı

Ek notlar

  • Varsayılan olarak, yalnızca bürokrat grubundaki kullanıcılar kullanıcı hakları verebilir veya kaldırabilir.
  • Bazı vikiler, bürokrat olmayanların sınırlı bir şekilde bu yetenekleri kullanıcının kendi hesabıyla sınırlaması gibi haklar vermesine veya kaldırmasına izin verir.
  • Hedef kullanıcıya hak verme veya kaldırma yetkisine sahip değilseniz, API bir hata atmaz; bunun yerine, yanıttaki add ve remove alanları boş diziler içerir.

Ayrıca bakınız

  • Yardım:Kullanıcı yetkileri ve grupları - kullanıcı haklarının ve grup üyeliğinin nasıl daha ayrıntılı çalıştığını açıklar.
  • Special:ListGroupRights - belirli bir vikide her kullanıcı grubuna verilen tüm hakları ve ayrıcalıkları listeler.
  • Special:UserRights - v1.29 + çalıştıran vikilerde mevcut olan kullanıcı haklarını eklemek veya kaldırmak için bir GUI yolu.
  • API:Users - grupları ve hakları da dahil olmak üzere bir kullanıcı listesi hakkında bilgi alır.