From 57c26dd16526f4414197d54ab49972e69102e990 Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Wed, 2 Apr 2025 22:11:16 +0300 Subject: [PATCH 01/10] List the recommended methods first --- class-two-factor-core.php | 40 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/class-two-factor-core.php b/class-two-factor-core.php index 5eaa765a..fa507a88 100644 --- a/class-two-factor-core.php +++ b/class-two-factor-core.php @@ -1901,13 +1901,46 @@ public static function user_two_factor_options( $user ) { do_action( 'show_user_security_settings', $user, $providers ); } + /** + * Get the recommended providers for a user. + * + * @param WP_User $user User instance. + * + * @return array List of provider keys. + */ + private static function get_recommended_providers( $user ) { + $providers = array( + 'Two_Factor_Totp', + 'Two_Factor_Backup_Codes', + ); + + /** + * Set the keys of the recommended (secure) methods. + * + * @param array $recommended_providers The recommended providers. + * @param WP_User $user The user. + */ + return (array) apply_filters( 'two_factor_recommended_providers', $providers, $user ); + } + + /** + * Render the user settings. + * + * @param WP_User $user User instance. + * @param array $providers List of available providers. + */ private static function render_user_providers_form( $user, $providers ) { $primary_provider_key = self::get_primary_provider_key_selected_for_user( $user ); $enabled_providers = self::get_enabled_providers_for_user( $user ); + $recommended_provider_keys = self::get_recommended_providers( $user ); + + // Move the recommended providers first. + $recommended_providers = array_intersect_key( $providers, array_flip( $recommended_provider_keys ) ); + $providers = array_merge( $recommended_providers, $providers ); ?>

- +

@@ -1921,7 +1954,10 @@ private static function render_user_providers_form( $user, $providers ) { Date: Wed, 2 Apr 2025 22:11:27 +0300 Subject: [PATCH 02/10] Style the recommended label --- user-edit.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/user-edit.css b/user-edit.css index 4280ce99..12a841da 100644 --- a/user-edit.css +++ b/user-edit.css @@ -7,3 +7,13 @@ display: block; font-weight: 700; } + +.two-factor-methods-table .two-factor-method-recommended { + font-size: 0.8rem; + line-height: 1; + font-weight: normal; + border: 1px solid; + border-radius: 0.15rem; + padding: 0.1rem 0.25rem; + margin: 0 0.15rem; +} From c20681be24707153f681868d5ff19d7b9eceb336 Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Wed, 2 Apr 2025 22:12:18 +0300 Subject: [PATCH 03/10] Use dotted to seperate from solid buttons and match the default abbr style --- user-edit.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user-edit.css b/user-edit.css index 12a841da..c5f3d463 100644 --- a/user-edit.css +++ b/user-edit.css @@ -12,7 +12,7 @@ font-size: 0.8rem; line-height: 1; font-weight: normal; - border: 1px solid; + border: 1px dotted; border-radius: 0.15rem; padding: 0.1rem 0.25rem; margin: 0 0.15rem; From b91faacc7309ee4bed6e9da64219d426ff446c10 Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Wed, 2 Apr 2025 22:21:24 +0300 Subject: [PATCH 04/10] Per linter --- class-two-factor-core.php | 12 ++++++------ user-edit.css | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/class-two-factor-core.php b/class-two-factor-core.php index fa507a88..56d6e4bc 100644 --- a/class-two-factor-core.php +++ b/class-two-factor-core.php @@ -1837,7 +1837,7 @@ public static function manage_users_custom_column( $output, $column_name, $user_ * @param WP_User $user WP_User object of the logged-in user. */ public static function user_two_factor_options( $user ) { - $notices = []; + $notices = array(); $providers = self::get_supported_providers_for_user( $user ); @@ -1927,16 +1927,16 @@ private static function get_recommended_providers( $user ) { * Render the user settings. * * @param WP_User $user User instance. - * @param array $providers List of available providers. + * @param array $providers List of available providers. */ private static function render_user_providers_form( $user, $providers ) { - $primary_provider_key = self::get_primary_provider_key_selected_for_user( $user ); - $enabled_providers = self::get_enabled_providers_for_user( $user ); + $primary_provider_key = self::get_primary_provider_key_selected_for_user( $user ); + $enabled_providers = self::get_enabled_providers_for_user( $user ); $recommended_provider_keys = self::get_recommended_providers( $user ); // Move the recommended providers first. $recommended_providers = array_intersect_key( $providers, array_flip( $recommended_provider_keys ) ); - $providers = array_merge( $recommended_providers, $providers ); + $providers = array_merge( $recommended_providers, $providers ); ?>

@@ -1956,7 +1956,7 @@ private static function render_user_providers_form( $user, $providers ) { /> get_label() ) ); ?> - + Date: Wed, 2 Apr 2025 22:34:33 +0300 Subject: [PATCH 05/10] Help guide the user through setup --- providers/class-two-factor-totp.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/providers/class-two-factor-totp.php b/providers/class-two-factor-totp.php index d29d1eae..9f7e1d65 100644 --- a/providers/class-two-factor-totp.php +++ b/providers/class-two-factor-totp.php @@ -290,7 +290,7 @@ public function user_two_factor_options( $user ) { ?>

- +

@@ -343,7 +343,11 @@ public function user_two_factor_options( $user ) {

- + +

+
+

+

From bc4ed48f1d6ab9c68a17be978c0290424200ab0d Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Wed, 2 Apr 2025 22:39:53 +0300 Subject: [PATCH 06/10] Translate the string --- providers/class-two-factor-totp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers/class-two-factor-totp.php b/providers/class-two-factor-totp.php index 9f7e1d65..dc2c7f3a 100644 --- a/providers/class-two-factor-totp.php +++ b/providers/class-two-factor-totp.php @@ -294,7 +294,7 @@ public function user_two_factor_options( $user ) {

- Loading... +

From e47f019c818a3d939f29412165434c4eabbcf440 Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Wed, 2 Apr 2025 22:40:09 +0300 Subject: [PATCH 07/10] Escape the URL --- providers/class-two-factor-totp.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/providers/class-two-factor-totp.php b/providers/class-two-factor-totp.php index dc2c7f3a..efea8b94 100644 --- a/providers/class-two-factor-totp.php +++ b/providers/class-two-factor-totp.php @@ -283,22 +283,19 @@ public function user_two_factor_options( $user ) {
generate_key(); $totp_url = $this->generate_qr_code_url( $user, $key ); ?> -

- +

-