Problem
If an Action extends Action then users who are partially blocked are also blocked from performing that action.
if ( $this->requiresUnblock() && $user->isBlocked() ) {
$block = $user->getBlock();
throw new UserBlockedError( $block );
}Solution
This should be changed to something like:
$block = $user->getBlock();
if ( $this->requiresUnblock() && $block && $block->isSitewide() ) {
throw new UserBlockedError( $block );
}