-
- $pm = new class( $user, $userRights ) extends PermissionManager {
- private $testUser;
- private $testUserRights;
-
- public function __construct( $user, $userRights ) {
- $this->testUser = $user;
- $this->testUserRights = $userRights;
- }
-
- public function userHasRight( UserIdentity $user, $action = '' ) {
- if ( $user === $this->testUser ) {
- return $this->testUserRights[$action] ?? false;
- }
- return parent::userHasRight( $user, $action );
- }
- };
+ // Don't allow the rights to everybody so that user rights kick in.
+ $this->mergeMwGlobalArrayValue( 'wgGroupPermissions', [ '*' => $userRights ] );
+ $this->overrideUserPermissions(
+ $user,
+ array_keys( array_filter( $userRights ), function ( $value ) {
+ return $value === true;
+ } )
+ );