MediaWiki  master
ApiQueryAuthManagerInfo.php
Go to the documentation of this file.
1 <?php
25 
32 
33  public function __construct( ApiQuery $query, $moduleName ) {
34  parent::__construct( $query, $moduleName, 'ami' );
35  }
36 
37  public function execute() {
38  $params = $this->extractRequestParams();
39  $helper = new ApiAuthManagerHelper( $this );
40 
41  $manager = AuthManager::singleton();
42  $ret = [
43  'canauthenticatenow' => $manager->canAuthenticateNow(),
44  'cancreateaccounts' => $manager->canCreateAccounts(),
45  'canlinkaccounts' => $manager->canLinkAccounts(),
46  ];
47 
48  if ( $params['securitysensitiveoperation'] !== null ) {
49  $ret['securitysensitiveoperationstatus'] = $manager->securitySensitiveOperationStatus(
50  $params['securitysensitiveoperation']
51  );
52  }
53 
54  if ( $params['requestsfor'] ) {
55  $action = $params['requestsfor'];
56 
57  $preservedReq = $helper->getPreservedRequest();
58  if ( $preservedReq ) {
59  $ret += [
60  'haspreservedstate' => $preservedReq->hasStateForAction( $action ),
61  'hasprimarypreservedstate' => $preservedReq->hasPrimaryStateForAction( $action ),
62  'preservedusername' => (string)$preservedReq->username,
63  ];
64  } else {
65  $ret += [
66  'haspreservedstate' => false,
67  'hasprimarypreservedstate' => false,
68  'preservedusername' => '',
69  ];
70  }
71 
72  $reqs = $manager->getAuthenticationRequests( $action, $this->getUser() );
73 
74  // Filter out blacklisted requests, depending on the action
75  switch ( $action ) {
76  case AuthManager::ACTION_CHANGE:
78  $reqs, $this->getConfig()->get( 'ChangeCredentialsBlacklist' )
79  );
80  break;
81  case AuthManager::ACTION_REMOVE:
83  $reqs, $this->getConfig()->get( 'RemoveCredentialsBlacklist' )
84  );
85  break;
86  }
87 
88  $ret += $helper->formatRequests( $reqs );
89  }
90 
91  $this->getResult()->addValue( [ 'query' ], $this->getModuleName(), $ret );
92  }
93 
94  public function isReadMode() {
95  return false;
96  }
97 
98  public function getAllowedParams() {
99  return [
100  'securitysensitiveoperation' => null,
101  'requestsfor' => [
103  AuthManager::ACTION_LOGIN,
104  AuthManager::ACTION_LOGIN_CONTINUE,
105  AuthManager::ACTION_CREATE,
106  AuthManager::ACTION_CREATE_CONTINUE,
107  AuthManager::ACTION_LINK,
108  AuthManager::ACTION_LINK_CONTINUE,
109  AuthManager::ACTION_CHANGE,
110  AuthManager::ACTION_REMOVE,
111  AuthManager::ACTION_UNLINK,
112  ],
113  ],
114  ] + ApiAuthManagerHelper::getStandardParams( '', 'mergerequestfields', 'messageformat' );
115  }
116 
117  protected function getExamplesMessages() {
118  return [
119  'action=query&meta=authmanagerinfo&amirequestsfor=' . urlencode( AuthManager::ACTION_LOGIN )
120  => 'apihelp-query+authmanagerinfo-example-login',
121  'action=query&meta=authmanagerinfo&amirequestsfor=' . urlencode( AuthManager::ACTION_LOGIN ) .
122  '&amimergerequestfields=1'
123  => 'apihelp-query+authmanagerinfo-example-login-merged',
124  'action=query&meta=authmanagerinfo&amisecuritysensitiveoperation=foo'
125  => 'apihelp-query+authmanagerinfo-example-securitysensitiveoperation',
126  ];
127  }
128 
129  public function getHelpUrls() {
130  return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Authmanagerinfo';
131  }
132 }
const PARAM_TYPE
(string|string[]) Either an array of allowed value strings, or a string type as described below...
Definition: ApiBase.php:94
getResult()
Get the result object.
Definition: ApiBase.php:640
This is a base class for all Query modules.
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user...
Definition: ApiBase.php:761
getModuleName()
Get the name of the module being executed by this instance.
Definition: ApiBase.php:520
static getStandardParams( $action,... $wantedParams)
Fetch the standard parameters this helper recognizes.
This is the main query class.
Definition: ApiQuery.php:37
A query action to return meta information about AuthManager state.
static blacklistAuthenticationRequests(array $reqs, array $blacklist)
Filter out authentication requests by class name.
__construct(ApiQuery $query, $moduleName)
Helper class for AuthManager-using API modules.