Page MenuHomePhabricator

Properly support cross-wiki blocking
Open, HighPublic


Cross-wiki blocks are not properly implemented. It's currently basically only possible to insert blocks cross-wiki. It's not possible to update or delete those. It's also not possible to create cross-wiki blocks containing restrictions since those are then being stored in the local database (which is something we defenetly need to change). This is also the root cause of T281972: ActorStore::checkDatabaseDomain: InvalidArgumentException: DB connection domain does not match when suppressing via Special:CentralAuth (CVE-2021-36128).

Rough steps of implementing cross-wiki support for blocks.

  1. Make Blocks wiki-aware - T274817: Convert DatabaseBlock and AbstractBlock to UserIdentity, and make them cross-wiki aware.
  2. Create a BlockRestrictionStoreFactory - T291983: Create a BlockRestrictionStoreFactory in order to make BlockRestrictionStore a proper cross-wiki store
  3. Create a DatabaseBlockStoreFactory - T291849: Create a DatabaseBlockStoreFactory in order to make DatabaseBlockStore a proper cross-wiki store
  4. Implement cross-wiki support in the BlockUser class.

Things need to be done when cross-wiki blocking is possible.

  1. Update CentralAuth to properly perform cross-wiki suppressions.
  2. Fix CheckUser autoblocking, see T281972#7078969.

Related Objects

Event Timeline

Change 781216 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] block: respect the blocks wiki when handling restrictions

Change 781216 abandoned by Zabe:

[mediawiki/core@master] block: respect the blocks wiki when handling restrictions


superseeded by

Change 998601 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] DatabaseBlock: Fetch correct DatabaseBlockStore for autoblock

Change 998601 merged by jenkins-bot:

[mediawiki/core@master] DatabaseBlock: Fetch correct DatabaseBlockStore

@Zabe: Removing task assignee as this open task has been assigned for more than two years - see the email sent to all task assignees on 2024-04-15.
Please assign this task to yourself again if you still realistically [plan to] work on this task - it would be welcome! :)
If this task has been resolved in the meantime, or should not be worked on by anybody ("declined"), please update its task status via "Add Action… 🡒 Change Status".
Also see for tips how to best manage your individual work in Phabricator. Thanks!