mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-23 10:18:22 +00:00
Api: inject AbuseFilterPermissionManager where needed
Some of these api modules still retrieve other services statically, this patch is focused just on injecting the permission manager and setting up DI Bug: T259960 Change-Id: Ic5196f230d68604fdf321f705377a1e6e1e2efca
This commit is contained in:
parent
e616e5b71c
commit
1bd0b02441
|
@ -120,15 +120,45 @@
|
|||
"abusefilterprivatedetails": "abusefilter-privatedetails-log"
|
||||
},
|
||||
"APIModules": {
|
||||
"abusefilterchecksyntax": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckSyntax",
|
||||
"abusefilterevalexpression": "MediaWiki\\Extension\\AbuseFilter\\Api\\EvalExpression",
|
||||
"abusefilterchecksyntax": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckSyntax",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
},
|
||||
"abusefilterevalexpression": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\EvalExpression",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
},
|
||||
"abusefilterunblockautopromote": "MediaWiki\\Extension\\AbuseFilter\\Api\\UnblockAutopromote",
|
||||
"abusefiltercheckmatch": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckMatch",
|
||||
"abuselogprivatedetails": "MediaWiki\\Extension\\AbuseFilter\\Api\\AbuseLogPrivateDetails"
|
||||
"abusefiltercheckmatch": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\CheckMatch",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
},
|
||||
"abuselogprivatedetails": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\AbuseLogPrivateDetails",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
}
|
||||
},
|
||||
"APIListModules": {
|
||||
"abuselog": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseLog",
|
||||
"abusefilters": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseFilters"
|
||||
"abuselog": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseLog",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
},
|
||||
"abusefilters": {
|
||||
"class": "MediaWiki\\Extension\\AbuseFilter\\Api\\QueryAbuseFilters",
|
||||
"services": [
|
||||
"AbuseFilterPermissionManager"
|
||||
]
|
||||
}
|
||||
},
|
||||
"MessagesDirs": {
|
||||
"AbuseFilter": [
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
namespace MediaWiki\Extension\AbuseFilter\Api;
|
||||
|
||||
use ApiBase;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use ApiMain;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MediaWiki\Extension\AbuseFilter\Special\SpecialAbuseLog;
|
||||
|
||||
/**
|
||||
|
@ -29,6 +30,24 @@ use MediaWiki\Extension\AbuseFilter\Special\SpecialAbuseLog;
|
|||
* @ingroup Extensions
|
||||
*/
|
||||
class AbuseLogPrivateDetails extends ApiBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiMain $main
|
||||
* @param string $action
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct(
|
||||
ApiMain $main,
|
||||
$action,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $main, $action );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore Merely declarative
|
||||
* @inheritDoc
|
||||
|
@ -58,9 +77,8 @@ class AbuseLogPrivateDetails extends ApiBase {
|
|||
*/
|
||||
public function execute() {
|
||||
$user = $this->getUser();
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
|
||||
if ( !$afPermManager->canSeePrivateDetails( $user ) ) {
|
||||
if ( !$this->afPermManager->canSeePrivateDetails( $user ) ) {
|
||||
$this->dieWithError( 'abusefilter-log-cannot-see-privatedetails' );
|
||||
}
|
||||
$params = $this->extractRequestParams();
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
namespace MediaWiki\Extension\AbuseFilter\Api;
|
||||
|
||||
use ApiBase;
|
||||
use ApiMain;
|
||||
use ApiResult;
|
||||
use FormatJson;
|
||||
use LogEventsList;
|
||||
use LogicException;
|
||||
use LogPage;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\Special\SpecialAbuseLog;
|
||||
use MediaWiki\Extension\AbuseFilter\Variables\VariableHolder;
|
||||
|
@ -15,17 +17,34 @@ use MediaWiki\Revision\RevisionRecord;
|
|||
use RecentChange;
|
||||
|
||||
class CheckMatch extends ApiBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiMain $main
|
||||
* @param string $action
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct(
|
||||
ApiMain $main,
|
||||
$action,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $main, $action );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function execute() {
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
$user = $this->getUser();
|
||||
$params = $this->extractRequestParams();
|
||||
$this->requireOnlyOneParameter( $params, 'vars', 'rcid', 'logid' );
|
||||
|
||||
// "Anti-DoS"
|
||||
if ( !$afPermManager->canUseTestTools( $this->getUser() ) ) {
|
||||
if ( !$this->afPermManager->canUseTestTools( $this->getUser() ) ) {
|
||||
$this->dieWithError( 'apierror-abusefilter-canttest', 'permissiondenied' );
|
||||
}
|
||||
|
||||
|
@ -75,7 +94,7 @@ class CheckMatch extends ApiBase {
|
|||
$this->dieWithError( [ 'apierror-abusefilter-nosuchlogid', $params['logid'] ], 'nosuchlogid' );
|
||||
}
|
||||
|
||||
if ( !$afPermManager->canSeeHiddenLogEntries( $user ) && SpecialAbuseLog::isHidden( $row ) ) {
|
||||
if ( !$this->afPermManager->canSeeHiddenLogEntries( $user ) && SpecialAbuseLog::isHidden( $row ) ) {
|
||||
// T223654 - Same check as in SpecialAbuseLog. Both the visibility of the AbuseLog entry
|
||||
// and the corresponding revision are checked.
|
||||
$this->dieWithError( 'apierror-permissiondenied-generic', 'deletedabuselog' );
|
||||
|
|
|
@ -3,19 +3,37 @@
|
|||
namespace MediaWiki\Extension\AbuseFilter\Api;
|
||||
|
||||
use ApiBase;
|
||||
use ApiMain;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\Parser\AFPUserVisibleException;
|
||||
|
||||
class CheckSyntax extends ApiBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiMain $main
|
||||
* @param string $action
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct(
|
||||
ApiMain $main,
|
||||
$action,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $main, $action );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function execute() {
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
// "Anti-DoS"
|
||||
if ( !$afPermManager->canUseTestTools( $this->getUser() )
|
||||
&& !$afPermManager->canEdit( $this->getUser() )
|
||||
if ( !$this->afPermManager->canUseTestTools( $this->getUser() )
|
||||
&& !$this->afPermManager->canEdit( $this->getUser() )
|
||||
) {
|
||||
$this->dieWithError( 'apierror-abusefilter-cantcheck', 'permissiondenied' );
|
||||
}
|
||||
|
|
|
@ -3,19 +3,38 @@
|
|||
namespace MediaWiki\Extension\AbuseFilter\Api;
|
||||
|
||||
use ApiBase;
|
||||
use ApiMain;
|
||||
use ApiResult;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\Variables\VariablesFormatter;
|
||||
use Status;
|
||||
|
||||
class EvalExpression extends ApiBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiMain $main
|
||||
* @param string $action
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct(
|
||||
ApiMain $main,
|
||||
$action,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $main, $action );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function execute() {
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
// "Anti-DoS"
|
||||
if ( !$afPermManager->canUseTestTools( $this->getUser() ) ) {
|
||||
if ( !$this->afPermManager->canUseTestTools( $this->getUser() ) ) {
|
||||
$this->dieWithError( 'apierror-abusefilter-canteval', 'permissiondenied' );
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace MediaWiki\Extension\AbuseFilter\Api;
|
|||
use ApiBase;
|
||||
use ApiQuery;
|
||||
use ApiQueryBase;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MWTimestamp;
|
||||
|
||||
/**
|
||||
|
@ -38,12 +38,22 @@ use MWTimestamp;
|
|||
* @ingroup Extensions
|
||||
*/
|
||||
class QueryAbuseFilters extends ApiQueryBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiQuery $query
|
||||
* @param string $moduleName
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct( ApiQuery $query, $moduleName ) {
|
||||
public function __construct(
|
||||
ApiQuery $query,
|
||||
$moduleName,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $query, $moduleName, 'abf' );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,7 +61,6 @@ class QueryAbuseFilters extends ApiQueryBase {
|
|||
*/
|
||||
public function execute() {
|
||||
$user = $this->getUser();
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
$this->checkUserRightsAny( 'abusefilter-view' );
|
||||
|
||||
$params = $this->extractRequestParams();
|
||||
|
@ -109,7 +118,7 @@ class QueryAbuseFilters extends ApiQueryBase {
|
|||
|
||||
$res = $this->select( __METHOD__ );
|
||||
|
||||
$showhidden = $afPermManager->canViewPrivateFilters( $user );
|
||||
$showhidden = $this->afPermManager->canViewPrivateFilters( $user );
|
||||
|
||||
$count = 0;
|
||||
foreach ( $res as $row ) {
|
||||
|
|
|
@ -30,6 +30,7 @@ use ApiQuery;
|
|||
use ApiQueryBase;
|
||||
use InvalidArgumentException;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilter;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\CentralDBNotAvailableException;
|
||||
use MediaWiki\Extension\AbuseFilter\Filter\FilterNotFoundException;
|
||||
|
@ -48,19 +49,28 @@ use Wikimedia\IPUtils;
|
|||
* @ingroup Extensions
|
||||
*/
|
||||
class QueryAbuseLog extends ApiQueryBase {
|
||||
|
||||
/** @var AbuseFilterPermissionManager */
|
||||
private $afPermManager;
|
||||
|
||||
/**
|
||||
* @param ApiQuery $query
|
||||
* @param string $moduleName
|
||||
* @param AbuseFilterPermissionManager $afPermManager
|
||||
*/
|
||||
public function __construct( ApiQuery $query, $moduleName ) {
|
||||
public function __construct(
|
||||
ApiQuery $query,
|
||||
$moduleName,
|
||||
AbuseFilterPermissionManager $afPermManager
|
||||
) {
|
||||
parent::__construct( $query, $moduleName, 'afl' );
|
||||
$this->afPermManager = $afPermManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function execute() {
|
||||
$afPermManager = AbuseFilterServices::getPermissionManager();
|
||||
$lookup = AbuseFilterServices::getFilterLookup();
|
||||
$aflFilterMigrationStage = $this->getConfig()->get( 'AbuseFilterAflFilterMigrationStage' );
|
||||
|
||||
|
@ -107,7 +117,7 @@ class QueryAbuseLog extends ApiQueryBase {
|
|||
continue;
|
||||
}
|
||||
}
|
||||
if ( !$afPermManager->canViewPrivateFiltersLogs( $user ) ) {
|
||||
if ( !$this->afPermManager->canViewPrivateFiltersLogs( $user ) ) {
|
||||
foreach ( $searchFilters as [ $filterID, $global ] ) {
|
||||
try {
|
||||
$isHidden = $lookup->getFilter( $filterID, $global )->isHidden();
|
||||
|
@ -196,7 +206,7 @@ class QueryAbuseLog extends ApiQueryBase {
|
|||
}
|
||||
}
|
||||
|
||||
$this->addWhereIf( [ 'afl_deleted' => 0 ], !$afPermManager->canSeeHiddenLogEntries( $user ) );
|
||||
$this->addWhereIf( [ 'afl_deleted' => 0 ], !$this->afPermManager->canSeeHiddenLogEntries( $user ) );
|
||||
|
||||
if ( $searchFilters ) {
|
||||
$conds = [];
|
||||
|
@ -260,7 +270,7 @@ class QueryAbuseLog extends ApiQueryBase {
|
|||
break;
|
||||
}
|
||||
$hidden = SpecialAbuseLog::isHidden( $row );
|
||||
if ( $hidden === true && !$afPermManager->canSeeHiddenLogEntries( $user ) ) {
|
||||
if ( $hidden === true && !$this->afPermManager->canSeeHiddenLogEntries( $user ) ) {
|
||||
continue;
|
||||
}
|
||||
if ( $hidden === 'implicit' ) {
|
||||
|
@ -282,7 +292,7 @@ class QueryAbuseLog extends ApiQueryBase {
|
|||
$fullName = $row->afl_filter;
|
||||
}
|
||||
$isHidden = $lookup->getFilter( $filterID, $global )->isHidden();
|
||||
$canSeeDetails = $afPermManager->canSeeLogDetailsForFilter( $user, $isHidden );
|
||||
$canSeeDetails = $this->afPermManager->canSeeLogDetailsForFilter( $user, $isHidden );
|
||||
|
||||
$entry = [];
|
||||
if ( $fld_ids ) {
|
||||
|
|
Loading…
Reference in a new issue