WordPress.org-specific customizations for the Two Factor plugin
Set up a local WP Multisite.
Add this code to your wp-config.php:
define( 'WP_ENVIRONMENT_TYPE', 'local' );// Mimic w.org for testing wporg-two-factorglobal $supes, $super_admins;$supes = array('your_username');$super_admins = array_merge( $supes );function is_special_user( $user_id ) {$user = get_userdata( $user_id );return in_array( $user->user_login, $GLOBALS['supes'], true );
}Add this code to your wp-content/mu-plugins/0-sandbox.php:
require_once WPMU_PLUGIN_DIR. '/wporg-mu-plugins/mu-plugins/loader.php';// Enable dummy provider for convenience when testing locally.add_filter( 'two_factor_providers', function( $providers ) {$providers['Two_Factor_Dummy'] = TWO_FACTOR_DIR . 'providers/class-two-factor-dummy.php';return $providers;
}, 100 ); // Must run _after_ wporg-two-factor.// Mimics `mu-plugins/main-network/site-support.php`.function add_rewrite_rules() {// e.g., https://wordpress.org/support/users/foo/edit/account/add_rewrite_rule(bbp_get_user_slug() . '/([^/]+)/' . bbp_get_edit_slug() . '/account/?$','index.php?' . bbp_get_user_rewrite_id() . '=$matches[1]&' . 'edit_account=1','top'
);
}add_action( 'init', __NAMESPACE__ . 'add_rewrite_rules' );Install, build, and activate the wporg-support theme.
Install two-factor-provider-webauthn, bbPress and Gutenberg. You might need to clone & build trunk branch of Gutenberg if we happen to be using any new features.
git clone https://github.com/WordPress/two-factor/ into wp-content/plugins and follow their setup instructions.
git clone this repo into wp-content/plugins
cd wporg-two-factor && composer install
yarn && yarn workspaces run build
Setup environment tools yarn setup:tools
Start the environment: yarn wp-env start
Network-activate all of the plugins.
If you want to make JS changes, then yarn workspaces run start
Open wp-admin/options-general.php?page=bbpress and uncheck Prefix all forum content with the Forum Root slug (Recommended), then save.
Visit https://example.org/users/{username}/edit/account/ to view the custom settings UI. If you get a 404 error, visit wp-admin/options-permalinks.php and then try again.
Front-end unit tests can be run in /settings using the npm run test:unit or npm run test:unit:watch commands.
Back-end unit tests can be run in / using the composer run test or composer run test:watch commands. composer run coverage will generate a coverage report.
Please privately report any potential security issues to the WordPress HackerOne program.