MediaWiki
1.34.0
ApiRemoveAuthenticationData.php
Go to the documentation of this file.
1
<?php
23
use
MediaWiki\Auth\AuthManager
;
24
30
class
ApiRemoveAuthenticationData
extends
ApiBase
{
31
32
private
$authAction
;
33
private
$operation
;
34
35
public
function
__construct
(
ApiMain
$main, $action ) {
36
parent::__construct( $main, $action );
37
38
$this->authAction = $action ===
'unlinkaccount'
39
? AuthManager::ACTION_UNLINK
40
: AuthManager::ACTION_REMOVE;
41
$this->operation = $action ===
'unlinkaccount'
42
?
'UnlinkAccount'
43
:
'RemoveCredentials'
;
44
}
45
46
public
function
execute
() {
47
if
( !$this->
getUser
()->isLoggedIn() ) {
48
$this->
dieWithError
(
'apierror-mustbeloggedin-removeauth'
,
'notloggedin'
);
49
}
50
51
$params = $this->
extractRequestParams
();
52
$manager = AuthManager::singleton();
53
54
// Check security-sensitive operation status
55
ApiAuthManagerHelper::newForModule
( $this )->securitySensitiveOperation( $this->operation );
56
57
// Fetch the request. No need to load from the request, so don't use
58
// ApiAuthManagerHelper's method.
59
$blacklist = $this->authAction === AuthManager::ACTION_REMOVE
60
? array_flip( $this->
getConfig
()->
get
(
'RemoveCredentialsBlacklist'
) )
61
: [];
62
$reqs = array_filter(
63
$manager->getAuthenticationRequests( $this->authAction, $this->getUser() ),
64
function
( $req ) use ( $params, $blacklist ) {
65
return
$req->getUniqueId() === $params[
'request'
] &&
66
!isset( $blacklist[get_class( $req )] );
67
}
68
);
69
if
( count( $reqs ) !== 1 ) {
70
$this->
dieWithError
(
'apierror-changeauth-norequest'
,
'badrequest'
);
71
}
72
$req = reset( $reqs );
73
74
// Perform the removal
75
$status
= $manager->allowsAuthenticationDataChange( $req,
true
);
76
Hooks::run
(
'ChangeAuthenticationDataAudit'
, [ $req,
$status
] );
77
if
( !
$status
->isGood() ) {
78
$this->
dieStatus
(
$status
);
79
}
80
$manager->changeAuthenticationData( $req );
81
82
$this->
getResult
()->addValue(
null
, $this->
getModuleName
(), [
'status'
=>
'success'
] );
83
}
84
85
public
function
isWriteMode
() {
86
return
true
;
87
}
88
89
public
function
needsToken
() {
90
return
'csrf'
;
91
}
92
93
public
function
getAllowedParams
() {
94
return
ApiAuthManagerHelper::getStandardParams
( $this->authAction,
95
'request'
96
);
97
}
98
99
protected
function
getExamplesMessages
() {
100
$path
= $this->
getModulePath
();
101
$action = $this->
getModuleName
();
102
return
[
103
"action={$action}&request=FooAuthenticationRequest&token=123ABC"
104
=>
"apihelp-{$path}-example-simple"
,
105
];
106
}
107
108
public
function
getHelpUrls
() {
109
return
'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Manage_authentication_data'
;
110
}
111
}
ApiMain
This is the main API class, used for both external and internal processing.
Definition:
ApiMain.php:41
ContextSource\getConfig
getConfig()
Definition:
ContextSource.php:63
ApiRemoveAuthenticationData\needsToken
needsToken()
Returns the token type this module requires in order to execute.
Definition:
ApiRemoveAuthenticationData.php:89
ApiRemoveAuthenticationData\isWriteMode
isWriteMode()
Indicates whether this module requires write mode.
Definition:
ApiRemoveAuthenticationData.php:85
ApiBase\dieWithError
dieWithError( $msg, $code=null, $data=null, $httpCode=null)
Abort execution with an error.
Definition:
ApiBase.php:2014
ApiRemoveAuthenticationData\$authAction
$authAction
Definition:
ApiRemoveAuthenticationData.php:32
ApiBase\getResult
getResult()
Get the result object.
Definition:
ApiBase.php:640
ApiRemoveAuthenticationData\__construct
__construct(ApiMain $main, $action)
Definition:
ApiRemoveAuthenticationData.php:35
ApiAuthManagerHelper\getStandardParams
static getStandardParams( $action,... $wantedParams)
Fetch the standard parameters this helper recognizes.
Definition:
ApiAuthManagerHelper.php:352
ContextSource\getUser
getUser()
Definition:
ContextSource.php:120
ApiBase
This abstract class implements many basic API functions, and is the base of all API classes.
Definition:
ApiBase.php:42
ApiRemoveAuthenticationData\getExamplesMessages
getExamplesMessages()
Returns usage examples for this module.
Definition:
ApiRemoveAuthenticationData.php:99
ApiBase\getModulePath
getModulePath()
Get the path to this module.
Definition:
ApiBase.php:584
ApiBase\extractRequestParams
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition:
ApiBase.php:761
ApiRemoveAuthenticationData\getHelpUrls
getHelpUrls()
Return links to more detailed help pages about the module.
Definition:
ApiRemoveAuthenticationData.php:108
ApiRemoveAuthenticationData
Remove authentication data from AuthManager.
Definition:
ApiRemoveAuthenticationData.php:30
MediaWiki\Auth\AuthManager
This serves as the entry point to the authentication system.
Definition:
AuthManager.php:85
$status
return $status
Definition:
SyntaxHighlight.php:347
ApiRemoveAuthenticationData\$operation
$operation
Definition:
ApiRemoveAuthenticationData.php:33
$path
$path
Definition:
NoLocalSettings.php:25
ApiRemoveAuthenticationData\getAllowedParams
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
Definition:
ApiRemoveAuthenticationData.php:93
ApiBase\dieStatus
dieStatus(StatusValue $status)
Throw an ApiUsageException based on the Status object.
Definition:
ApiBase.php:2086
ApiBase\getModuleName
getModuleName()
Get the name of the module being executed by this instance.
Definition:
ApiBase.php:520
ApiAuthManagerHelper\newForModule
static newForModule(ApiBase $module)
Static version of the constructor, for chaining.
Definition:
ApiAuthManagerHelper.php:59
ApiRemoveAuthenticationData\execute
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
Definition:
ApiRemoveAuthenticationData.php:46
Hooks\run
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition:
Hooks.php:200
includes
api
ApiRemoveAuthenticationData.php
Generated on Thu Dec 19 2019 14:54:06 for MediaWiki by
1.8.16