Changeset 3359559
- Timestamp:
- 09/11/2025 05:13:29 AM (7 months ago)
- Location:
- wp-2fa
- Files:
-
- 251 added
- 10 edited
-
tags/2.9.3 (added)
-
tags/2.9.3/dist (added)
-
tags/2.9.3/dist/css (added)
-
tags/2.9.3/dist/css/admin-style.css (added)
-
tags/2.9.3/dist/css/select2.min.css (added)
-
tags/2.9.3/dist/css/setup-wizard.css (added)
-
tags/2.9.3/dist/css/styles.css (added)
-
tags/2.9.3/dist/images (added)
-
tags/2.9.3/dist/images/authy-logo.png (added)
-
tags/2.9.3/dist/images/duo-logo.png (added)
-
tags/2.9.3/dist/images/free-otp-logo.png (added)
-
tags/2.9.3/dist/images/google-logo.png (added)
-
tags/2.9.3/dist/images/lastpass-logo.png (added)
-
tags/2.9.3/dist/images/login-security.jpeg (added)
-
tags/2.9.3/dist/images/melapress-role-editor-logo-full-colour-horiz-rgb.svg (added)
-
tags/2.9.3/dist/images/microsoft-logo.png (added)
-
tags/2.9.3/dist/images/okta-logo.png (added)
-
tags/2.9.3/dist/images/website-file-changes-monitor.png (added)
-
tags/2.9.3/dist/images/wizard-logo.png (added)
-
tags/2.9.3/dist/images/wp-2fa-color_opt.png (added)
-
tags/2.9.3/dist/images/wp-2fa-square.png (added)
-
tags/2.9.3/dist/images/wp-2fa-white-icon20x28.svg (added)
-
tags/2.9.3/dist/images/wp-2fa-white.svg (added)
-
tags/2.9.3/dist/images/wp-activity-log.jpeg (added)
-
tags/2.9.3/dist/js (added)
-
tags/2.9.3/dist/js/admin.js (added)
-
tags/2.9.3/dist/js/micromodal.js (added)
-
tags/2.9.3/dist/js/select2.min.js (added)
-
tags/2.9.3/dist/js/wp-2fa.js (added)
-
tags/2.9.3/includes (added)
-
tags/2.9.3/includes/classes (added)
-
tags/2.9.3/includes/classes/Admin (added)
-
tags/2.9.3/includes/classes/Admin/Controllers (added)
-
tags/2.9.3/includes/classes/Admin/Controllers/class-api-login.php (added)
-
tags/2.9.3/includes/classes/Admin/Controllers/class-endpoints.php (added)
-
tags/2.9.3/includes/classes/Admin/Controllers/class-methods.php (added)
-
tags/2.9.3/includes/classes/Admin/Controllers/class-settings.php (added)
-
tags/2.9.3/includes/classes/Admin/Controllers/index.php (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/assets (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/assets/css (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/assets/css/flyout.css (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/assets/js (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/assets/js/flyout.js (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/class-flyout.php (added)
-
tags/2.9.3/includes/classes/Admin/Fly-Out/index.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-ajax-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-classes-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-file-writer.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-methods-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-php-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-user-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/class-wp-helper.php (added)
-
tags/2.9.3/includes/classes/Admin/Helpers/index.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods (added)
-
tags/2.9.3/includes/classes/Admin/Methods/Traits (added)
-
tags/2.9.3/includes/classes/Admin/Methods/Traits/class-login-attempts.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/Traits/class-methods-wizards-trait.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/Traits/index.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/class-backup-codes.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/class-email-wizard-steps.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/class-email.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/class-totp-wizard-steps.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/class-totp.php (added)
-
tags/2.9.3/includes/classes/Admin/Methods/index.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/class-settings-page-email.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/class-settings-page-general.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/class-settings-page-policies.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/class-settings-page-render.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/class-settings-page-white-label.php (added)
-
tags/2.9.3/includes/classes/Admin/SettingsPages/index.php (added)
-
tags/2.9.3/includes/classes/Admin/Views (added)
-
tags/2.9.3/includes/classes/Admin/Views/class-first-time-wizard-steps.php (added)
-
tags/2.9.3/includes/classes/Admin/Views/class-grace-period-notifications.php (added)
-
tags/2.9.3/includes/classes/Admin/Views/class-passord-reset-2fa.php (added)
-
tags/2.9.3/includes/classes/Admin/Views/class-re-login-2fa.php (added)
-
tags/2.9.3/includes/classes/Admin/Views/class-wizard-steps.php (added)
-
tags/2.9.3/includes/classes/Admin/Views/index.php (added)
-
tags/2.9.3/includes/classes/Admin/class-help-contact-us.php (added)
-
tags/2.9.3/includes/classes/Admin/class-plugin-updated-notice.php (added)
-
tags/2.9.3/includes/classes/Admin/class-premium-features.php (added)
-
tags/2.9.3/includes/classes/Admin/class-settings-page.php (added)
-
tags/2.9.3/includes/classes/Admin/class-setup-wizard.php (added)
-
tags/2.9.3/includes/classes/Admin/class-user-listing.php (added)
-
tags/2.9.3/includes/classes/Admin/class-user-notices.php (added)
-
tags/2.9.3/includes/classes/Admin/class-user-profile.php (added)
-
tags/2.9.3/includes/classes/Admin/class-user-registered.php (added)
-
tags/2.9.3/includes/classes/Admin/index.php (added)
-
tags/2.9.3/includes/classes/App (added)
-
tags/2.9.3/includes/classes/App/grace-period (added)
-
tags/2.9.3/includes/classes/App/grace-period/class-grace-period.php (added)
-
tags/2.9.3/includes/classes/App/grace-period/index.php (added)
-
tags/2.9.3/includes/classes/App/index.php (added)
-
tags/2.9.3/includes/classes/Authenticator (added)
-
tags/2.9.3/includes/classes/Authenticator/assets (added)
-
tags/2.9.3/includes/classes/Authenticator/assets/user-login.js (added)
-
tags/2.9.3/includes/classes/Authenticator/class-authentication.php (added)
-
tags/2.9.3/includes/classes/Authenticator/class-login.php (added)
-
tags/2.9.3/includes/classes/Authenticator/class-open-ssl.php (added)
-
tags/2.9.3/includes/classes/Authenticator/class-reset-password.php (added)
-
tags/2.9.3/includes/classes/Authenticator/index.php (added)
-
tags/2.9.3/includes/classes/Shortcodes (added)
-
tags/2.9.3/includes/classes/Shortcodes/class-shortcodes.php (added)
-
tags/2.9.3/includes/classes/Shortcodes/index.php (added)
-
tags/2.9.3/includes/classes/Utils (added)
-
tags/2.9.3/includes/classes/Utils/class-abstract-migration.php (added)
-
tags/2.9.3/includes/classes/Utils/class-date-time-utils.php (added)
-
tags/2.9.3/includes/classes/Utils/class-debugging.php (added)
-
tags/2.9.3/includes/classes/Utils/class-generate-modal.php (added)
-
tags/2.9.3/includes/classes/Utils/class-migration.php (added)
-
tags/2.9.3/includes/classes/Utils/class-request-utils.php (added)
-
tags/2.9.3/includes/classes/Utils/class-settings-utils.php (added)
-
tags/2.9.3/includes/classes/Utils/class-user-utils.php (added)
-
tags/2.9.3/includes/classes/Utils/class-validator.php (added)
-
tags/2.9.3/includes/classes/Utils/class-white-label.php (added)
-
tags/2.9.3/includes/classes/Utils/index.php (added)
-
tags/2.9.3/includes/classes/bacon (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/BitArray.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/BitMatrix.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/BitUtils.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/CharacterSetEci.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/EcBlock.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/EcBlocks.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/FormatInformation.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/Mode.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Common/Version.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/BlockPair.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/ByteMatrix.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/Encoder.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/MaskUtil.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/MatrixUtil.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Encoder/QrCode.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/ExceptionInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/InvalidArgumentException.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/OutOfBoundsException.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/RuntimeException.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/UnexpectedValueException.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Exception/WriterException.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color/Alpha.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color/Cmyk.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color/ColorInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color/Gray.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Color/Rgb.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye/CompositeEye.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye/EyeInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye/ModuleEye.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye/SimpleCircleEye.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Eye/SquareEye.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image/EpsImageBackEnd.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image/ImageBackEndInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image/ImagickImageBackEnd.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image/SvgImageBackEnd.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Image/TransformationMatrix.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/ImageRenderer.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/DotsModule.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/Edge.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/EdgeIterator.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/ModuleInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/RoundnessModule.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Module/SquareModule.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/Close.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/Curve.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/EllipticArc.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/Line.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/Move.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/OperationInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/Path/Path.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/PlainTextRenderer.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererInterface.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle/EyeFill.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle/Fill.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle/Gradient.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle/GradientType.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Renderer/RendererStyle/RendererStyle.php (added)
-
tags/2.9.3/includes/classes/bacon/bacon-qr-code/src/Writer.php (added)
-
tags/2.9.3/includes/classes/class-email-template.php (added)
-
tags/2.9.3/includes/classes/class-wp2fa.php (added)
-
tags/2.9.3/includes/classes/dasprid (added)
-
tags/2.9.3/includes/classes/dasprid/enum (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/AbstractEnum.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/EnumMap.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/CloneNotSupportedException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/ExceptionInterface.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/ExpectationException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/IllegalArgumentException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/MismatchException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/SerializeNotSupportedException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/Exception/UnserializeNotSupportedException.php (added)
-
tags/2.9.3/includes/classes/dasprid/enum/src/NullValue.php (added)
-
tags/2.9.3/includes/classes/index.php (added)
-
tags/2.9.3/includes/functions (added)
-
tags/2.9.3/includes/functions/core.php (added)
-
tags/2.9.3/includes/functions/index.php (added)
-
tags/2.9.3/includes/functions/login-header.php (added)
-
tags/2.9.3/includes/index.php (added)
-
tags/2.9.3/index.php (added)
-
tags/2.9.3/languages (added)
-
tags/2.9.3/languages/index.php (added)
-
tags/2.9.3/languages/wp-2fa-de_DE.mo (added)
-
tags/2.9.3/languages/wp-2fa.pot (added)
-
tags/2.9.3/license.txt (added)
-
tags/2.9.3/readme.txt (added)
-
tags/2.9.3/vendor (added)
-
tags/2.9.3/vendor/arcturial (added)
-
tags/2.9.3/vendor/arcturial/clickatell (added)
-
tags/2.9.3/vendor/arcturial/clickatell/src (added)
-
tags/2.9.3/vendor/arcturial/clickatell/src/ClickatellException.php (added)
-
tags/2.9.3/vendor/arcturial/clickatell/src/Rest.php (added)
-
tags/2.9.3/vendor/autoload.php (added)
-
tags/2.9.3/vendor/composer (added)
-
tags/2.9.3/vendor/composer/ClassLoader.php (added)
-
tags/2.9.3/vendor/composer/InstalledVersions.php (added)
-
tags/2.9.3/vendor/composer/LICENSE (added)
-
tags/2.9.3/vendor/composer/autoload_classmap.php (added)
-
tags/2.9.3/vendor/composer/autoload_namespaces.php (added)
-
tags/2.9.3/vendor/composer/autoload_psr4.php (added)
-
tags/2.9.3/vendor/composer/autoload_real.php (added)
-
tags/2.9.3/vendor/composer/autoload_static.php (added)
-
tags/2.9.3/vendor/composer/installed.json (added)
-
tags/2.9.3/vendor/composer/installed.php (added)
-
tags/2.9.3/vendor/composer/platform_check.php (added)
-
tags/2.9.3/vendor/firebase (added)
-
tags/2.9.3/vendor/firebase/php-jwt (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/BeforeValidException.php (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/ExpiredException.php (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/JWK.php (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/JWT.php (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/Key.php (added)
-
tags/2.9.3/vendor/firebase/php-jwt/src/SignatureInvalidException.php (added)
-
tags/2.9.3/vendor/scoper.inc.php (added)
-
tags/2.9.3/wp-2fa.php (added)
-
trunk/includes/classes/Admin/Helpers/class-wp-helper.php (modified) (3 diffs)
-
trunk/includes/classes/Admin/SettingsPages/class-settings-page-general.php (modified) (6 diffs)
-
trunk/includes/classes/Authenticator/class-reset-password.php (modified) (1 diff)
-
trunk/includes/classes/class-wp2fa.php (modified) (1 diff)
-
trunk/languages/wp-2fa.pot (modified) (13 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/wp-2fa.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-2fa/trunk/includes/classes/Admin/Helpers/class-wp-helper.php
r3337002 r3359559 16 16 namespace WP2FA\Admin\Helpers; 17 17 18 use WP2FA\Utils\Settings_Utils; 19 18 20 defined( 'ABSPATH' ) || exit; // Exit if accessed directly. 19 21 … … 72 74 if ( self::is_multisite() ) { 73 75 \add_action( 'network_admin_notices', array( __CLASS__, 'show_critical_admin_notice' ) ); 76 \add_action( 'network_admin_notices', array( __CLASS__, 'show_2025_security_survey_admin_notice' ) ); 74 77 } else { 75 78 \add_action( 'admin_notices', array( __CLASS__, 'show_critical_admin_notice' ) ); 76 } 79 \add_action( 'admin_notices', array( __CLASS__, 'show_2025_security_survey_admin_notice' ) ); 80 } 81 82 \add_action( 'wp_ajax_dismiss_survey_notice', array( __CLASS__, 'dismiss_survey_notice' ) ); 77 83 } 78 84 … … 137 143 \do_action( WP_2FA_PREFIX . 'critical_notice' ); 138 144 } 145 } 146 147 /** 148 * Shows critical notices to the admin. 149 * 150 * @return void 151 * 152 * @since 2.2.0 153 */ 154 public static function show_2025_security_survey_admin_notice() { 155 if ( User_Helper::is_admin() && true === Settings_Utils::string_to_bool(Settings_Utils::get_option( 'wp_2fa_survey_notice_needed', true )) 156 ) { 157 global $current_screen; 158 159 if ( isset( $current_screen->id ) && in_array( 160 $current_screen->id, 161 array( 162 'wp-2fa_page_wp-2fa-settings', 163 'wp-2fa_page_wp-2fa-settings-network', 164 'toplevel_page_wp-2fa-policies', 165 'toplevel_page_wp-2fa-policies-network', 166 'wp-2fa_page_wp-2fa-reports', 167 'wp-2fa_page_wp-2fa-reports-network', 168 'wp-2fa_page_wp-2fa-help-contact-us', 169 'wp-2fa_page_wp-2fa-help-contact-us-network', 170 'wp-2fa_page_wp-2fa-premium-features', 171 'wp-2fa_page_wp-2fa-premium-features-network', 172 'wp-2fa_page_wp-2fa-policies-account', 173 'wp-2fa_page_wp-2fa-policies-account-network', 174 ), 175 true 176 ) ) { 177 178 ?> 179 <div style="border-left-color: #3660FF !important;" id="dismiss_survey_notice" class="notice notice-success is-dismissible" data-dismiss-nonce="<?php echo \esc_attr( \wp_create_nonce( 'wp_2fa_dismiss_survey_notice_nonce' ) ); ?>"> 180 <h4><?php \esc_html_e( 'Want to know what the state of WordPress security is in 2025?', 'wp-2fa' ); ?></h4> 181 <p><?php \esc_html_e( 'Discover the latest insights in our 2025 WordPress Security Survey Report.', 'wp-2fa' ); ?></p> 182 <button type="button" class="notice-dismiss"> 183 <span class="screen-reader-text"><?php \esc_html_e( 'Dismiss this notice.', 'wp-2fa' ); ?></span> 184 </button> 185 <p> 186 <?php 187 printf( 188 /* Translators: survey link */ 189 esc_html__( '%1$sRead the survey%2$s', 'wp-2fa' ), 190 '<a class="button" style="color:white !important;background:#3660FF" href="https://melapress.com/wordpress-security-survey-2025/?&utm_source=plugin&utm_medium=wp2fa&utm_campaign=survey+promo+banner" target="_blank">', 191 '</a>' 192 ); 193 ?> 194 </p> 195 <script type="text/javascript"> 196 //<![CDATA[ 197 jQuery(document).ready(function( $ ) { 198 jQuery( 'body' ).on( 'click', '#dismiss_survey_notice .notice-dismiss', function ( e ) { 199 e.preventDefault(); 200 var nonce = jQuery( '#dismiss_survey_notice' ).data( 'dismiss-nonce' ); 201 202 jQuery.ajax({ 203 type: 'POST', 204 url: '<?php echo \esc_url( \admin_url( 'admin-ajax.php' ) ); ?>', 205 data: { 206 action: 'dismiss_survey_notice', 207 nonce : nonce, 208 }, 209 success: function ( result ) { 210 jQuery( '#dismiss_survey_notice' ).slideUp( 300 ); 211 } 212 }); 213 }); 214 }); 215 //]]> 216 </script> 217 218 </div> 219 <?php 220 } 221 } 222 } 223 224 225 /** 226 * Handle notice dismissal. 227 * 228 * @since 2.9.3 229 * 230 * @return void 231 */ 232 public static function dismiss_survey_notice() { 233 // Grab POSTed data. 234 $nonce_check = \check_ajax_referer( 'wp_2fa_dismiss_survey_notice_nonce', 'nonce' ); 235 236 if ( ! $nonce_check ) { 237 \wp_send_json_error( esc_html__( 'Nonce Verification Failed.', 'wp-2fa' ) ); 238 } 239 // $nonce = isset( $_POST['nonce'] ) ? \sanitize_text_field( \wp_unslash( $_POST['nonce'] ) ) : false; 240 // Check nonce. 241 if ( ! \current_user_can( 'manage_options' ) ) { 242 \wp_send_json_error( esc_html__( 'Not enough privileges.', 'wp-2fa' ) ); 243 } 244 245 Settings_Utils::update_option( 'wp_2fa_survey_notice_needed', 0 ); 246 247 \wp_send_json_success( \esc_html__( 'Complete.', 'wp-2fa' ) ); 139 248 } 140 249 -
wp-2fa/trunk/includes/classes/Admin/SettingsPages/class-settings-page-general.php
r3343451 r3359559 43 43 self::disable_brute_force_settings(); 44 44 self::limit_settings_access(); 45 self::disable_rest(); 45 46 self::enable_rest(); 46 47 self::remove_data_upon_uninstall(); … … 69 70 'limit_access', 70 71 'enable_rest', 72 'disable_rest', 71 73 'brute_force_disable', 72 74 'delete_data_upon_uninstall', … … 87 89 'limit_access', 88 90 'enable_rest', 91 'disable_rest', 89 92 'brute_force_disable', 90 93 'delete_data_upon_uninstall', … … 94 97 if ( ! in_array( $simple_setting, $settings_to_turn_into_bools, true ) ) { 95 98 // Is item is not one of our possible settings we want to turn into a bool, process. 96 $output[ $simple_setting ] = ( isset( $input[ $simple_setting ] ) && ! empty( $input[ $simple_setting ] ) ) ? trim( (string) sanitize_text_field( $input[ $simple_setting ] ) ) : false;99 $output[ $simple_setting ] = ( isset( $input[ $simple_setting ] ) && ! empty( $input[ $simple_setting ] ) ) ? trim( (string) \sanitize_text_field( $input[ $simple_setting ] ) ) : false; 97 100 } else { 98 101 // This item is one we treat as a bool, so process correctly. 99 102 $output[ $simple_setting ] = ( isset( $input[ $simple_setting ] ) && ! empty( $input[ $simple_setting ] ) ) ? true : false; 100 103 } 104 } 105 106 if ( true === $output['disable_rest'] ) { 107 $output['enable_rest'] = false; 101 108 } 102 109 … … 258 265 * @since 2.9.1 259 266 */ 267 private static function disable_rest() { 268 ?> 269 <br> 270 <h3><?php \esc_html_e( 'Disable the REST API endpoints for 2FA', 'wp-2fa' ); ?></h3> 271 <p class="description"> 272 <?php \esc_html_e( 'The WP 2FA REST API endpoints are enabled by default. They are used for integrations and do not impact your website’s performance, functionality, or security. If you prefer, you can disable these endpoints by using this setting.', 'wp-2fa' ); ?> 273 </p> 274 <table class="form-table"> 275 <tbody> 276 <tr> 277 <th><label for="disable_rest"></label></th> 278 <td> 279 <fieldset> 280 <input type="checkbox" id="disable_rest" name="wp_2fa_settings[disable_rest]" value="disable_rest" 281 <?php \checked( true, Settings_Utils::string_to_bool( WP2FA::get_wp2fa_general_setting( 'disable_rest' ) ) ); ?> 282 > 283 <label for="disable_rest"><?php \esc_html_e( 'disable the REST API endpoints', 'wp-2fa' ); ?></label> 284 </fieldset> 285 </td> 286 </tr> 287 </tbody> 288 </table> 289 <script type="text/javascript"> 290 //<![CDATA[ 291 jQuery(document).ready(function( $ ) { 292 jQuery( 'body' ).on( 'click', '#disable_rest', function ( e ) { 293 // e.preventDefault(); 294 if ( jQuery(this).is(":checked")) { 295 jQuery('#select_verification_method').addClass('disabled'); 296 } else { 297 jQuery('#select_verification_method').removeClass('disabled'); 298 } 299 }); 300 }); 301 //]]> 302 </script> 303 304 <?php 305 } 306 307 /** 308 * Enable REST API 309 * 310 * @return void 311 * 312 * @since 2.9.1 313 */ 260 314 private static function enable_rest() { 261 315 ?> 262 316 <br> 263 <h3><?php \esc_html_e( 'Enable the REST API endpoints for 2FA', 'wp-2fa' ); ?></h3> 317 <div id="select_verification_method" class=<?php echo \esc_attr( true === Settings_Utils::string_to_bool( WP2FA::get_wp2fa_general_setting( 'disable_rest' ) ) ? 'disabled' : '' ); ?>> 318 <h3><?php \esc_html_e( 'Select the 2FA verification mechanism', 'wp-2fa' ); ?></h3> 264 319 <p class="description"> 265 320 <?php \esc_html_e( 'Choose how WP 2FA verifies the 2FA by default. The native method works for most setups, but you can switch to REST API verification if needed. Only change this setting if you are experiencing issues with the default method.', 'wp-2fa' ); ?> … … 285 340 </tbody> 286 341 </table> 342 </div> 287 343 <?php 288 344 } -
wp-2fa/trunk/includes/classes/Authenticator/class-reset-password.php
r3343451 r3359559 43 43 * @var string 44 44 * 45 * @since 2.9. 245 * @since 2.9.3 46 46 */ 47 47 private static $logging_attempts_meta_key = WP_2FA_PREFIX . 'api-reset-password-attempts'; -
wp-2fa/trunk/includes/classes/class-wp2fa.php
r3343451 r3359559 213 213 self::add_actions(); 214 214 215 Endpoints::init(); 215 if ( false === Settings_Utils::string_to_bool( self::get_wp2fa_general_setting( 'disable_rest' ) ) ) { 216 Endpoints::init(); 217 } 216 218 217 219 // Inits all the additional free app extensions. -
wp-2fa/trunk/languages/wp-2fa.pot
r3343451 r3359559 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: WP 2FA - Two-factor authentication for WordPress 2.9. 2\n"5 "Project-Id-Version: WP 2FA - Two-factor authentication for WordPress 2.9.3\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-2fa\n" 7 7 "Last-Translator: WP White Security <[email protected]>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-0 8-12T09:20:19+00:00\n"12 "POT-Creation-Date: 2025-09-10T20:34:17+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.11.0\n" … … 371 371 #: extensions/twilio/class-twilio.php:349 372 372 #: extensions/yubico/class-yubico.php:299 373 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:1 47373 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:154 374 374 #: includes/classes/Admin/SettingsPages/class-settings-page-policies.php:563 375 375 #: includes/classes/Admin/SettingsPages/class-settings-page-white-label.php:37 … … 1000 1000 #: extensions/out-of-band/class-out-of-band.php:638 1001 1001 #: includes/classes/Admin/class-setup-wizard.php:634 1002 #: includes/classes/class-wp2fa.php:58 21003 #: includes/classes/class-wp2fa.php:59 61004 #: includes/classes/class-wp2fa.php:60 61002 #: includes/classes/class-wp2fa.php:584 1003 #: includes/classes/class-wp2fa.php:598 1004 #: includes/classes/class-wp2fa.php:608 1005 1005 msgid "Email sent by" 1006 1006 msgstr "" … … 1008 1008 #: extensions/out-of-band/class-out-of-band.php:639 1009 1009 #: includes/classes/Admin/class-setup-wizard.php:635 1010 #: includes/classes/class-wp2fa.php:58 31010 #: includes/classes/class-wp2fa.php:585 1011 1011 msgid "WP 2FA plugin." 1012 1012 msgstr "" … … 1357 1357 #: extensions/settings-import-export/class-settings-import-export.php:240 1358 1358 #: includes/classes/Admin/class-plugin-updated-notice.php:130 1359 #: includes/classes/Admin/Helpers/class-wp-helper.php:237 1359 1360 msgid "Nonce Verification Failed." 1360 1361 msgstr "" … … 2498 2499 2499 2500 #: includes/classes/Admin/class-plugin-updated-notice.php:135 2501 #: includes/classes/Admin/Helpers/class-wp-helper.php:247 2500 2502 msgid "Complete." 2501 2503 msgstr "" … … 2737 2739 #: includes/classes/Admin/Helpers/class-ajax-helper.php:401 2738 2740 #: includes/classes/Admin/Helpers/class-ajax-helper.php:417 2741 #: includes/classes/Admin/Helpers/class-wp-helper.php:183 2739 2742 msgid "Dismiss this notice." 2740 2743 msgstr "" … … 3174 3177 msgstr "" 3175 3178 3179 #: includes/classes/Admin/Helpers/class-wp-helper.php:180 3180 msgid "Want to know what the state of WordPress security is in 2025?" 3181 msgstr "" 3182 3183 #: includes/classes/Admin/Helpers/class-wp-helper.php:181 3184 msgid "Discover the latest insights in our 2025 WordPress Security Survey Report." 3185 msgstr "" 3186 3187 #. Translators: survey link 3188 #: includes/classes/Admin/Helpers/class-wp-helper.php:189 3189 msgid "%1$sRead the survey%2$s" 3190 msgstr "" 3191 3192 #: includes/classes/Admin/Helpers/class-wp-helper.php:242 3193 msgid "Not enough privileges." 3194 msgstr "" 3195 3176 3196 #: includes/classes/Admin/Methods/class-backup-codes.php:181 3177 3197 #: includes/classes/Authenticator/class-login.php:1032 … … 3518 3538 msgstr "" 3519 3539 3520 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 1943540 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:201 3521 3541 msgid "Do you want to delete the plugin data from the database upon uninstall" 3522 3542 msgstr "" 3523 3543 3524 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 1963544 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:203 3525 3545 msgid "The plugin saves its settings in the WordPress database. By default the plugin settings are kept in the database so if it is installed again, you do not have to reconfigure the plugin. Enable this setting to delete the plugin settings from the database upon uninstall." 3526 3546 msgstr "" 3527 3547 3528 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:20 13548 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:208 3529 3549 msgid "Delete data" 3530 3550 msgstr "" 3531 3551 3532 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:2 073552 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:214 3533 3553 msgid "Delete data upon uninstall" 3534 3554 msgstr "" 3535 3555 3536 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:23 13556 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:238 3537 3557 msgid "Limit 2FA settings access" 3538 3558 msgstr "" 3539 3559 3540 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:2 333560 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:240 3541 3561 msgid "Use this setting to hide this plugin configuration area from all other admins." 3542 3562 msgstr "" 3543 3563 3544 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:2 383564 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:245 3545 3565 msgid "Limit access to 2FA settings" 3546 3566 msgstr "" 3547 3567 3548 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:2 443568 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:251 3549 3569 msgid "Hide settings from other administrators" 3550 3570 msgstr "" 3551 3571 3552 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:263 3553 msgid "Enable the REST API endpoints for 2FA" 3554 msgstr "" 3555 3556 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:265 3572 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:270 3573 msgid "Disable the REST API endpoints for 2FA" 3574 msgstr "" 3575 3576 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:272 3577 msgid "The WP 2FA REST API endpoints are enabled by default. They are used for integrations and do not impact your website’s performance, functionality, or security. If you prefer, you can disable these endpoints by using this setting." 3578 msgstr "" 3579 3580 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:283 3581 msgid "disable the REST API endpoints" 3582 msgstr "" 3583 3584 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:318 3585 msgid "Select the 2FA verification mechanism" 3586 msgstr "" 3587 3588 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:320 3557 3589 msgid "Choose how WP 2FA verifies the 2FA by default. The native method works for most setups, but you can switch to REST API verification if needed. Only change this setting if you are experiencing issues with the default method." 3558 3590 msgstr "" 3559 3591 3560 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 2703592 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:325 3561 3593 msgid "Select the default 2FA verification mechanism" 3562 3594 msgstr "" 3563 3595 3564 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 2763596 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:331 3565 3597 msgid "Native" 3566 3598 msgstr "" 3567 3599 3568 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 2813600 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:336 3569 3601 msgid "REST API" 3570 3602 msgstr "" 3571 3603 3572 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 003604 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:356 3573 3605 msgid "Disable 2FA code brute force protection" 3574 3606 msgstr "" 3575 3607 3576 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 023608 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:358 3577 3609 msgid "When using email and SMS 2FA, the plugin sends the users a new one-time code whenever they enter the wrong code when logging in. This is a security enhancement, a sort of brute force protection. You can disable this feature from the below setting, however, it is not recommended." 3578 3610 msgstr "" 3579 3611 3580 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 073612 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:363 3581 3613 msgid "Disable one-time code brute force protection" 3582 3614 msgstr "" 3583 3615 3584 3616 #. translators: support email. 3585 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 343617 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:390 3586 3618 msgid "Use this setting below to configure the properties of the two-factor authentication on your website and how users use it. If you have any questions send us an email at %1$s." 3587 3619 msgstr "" 3588 3620 3589 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 393621 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:395 3590 3622 msgid "What should the plugin do if the 2FA method used during a user login is unavailable" 3591 3623 msgstr "" 3592 3624 3593 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:3 413625 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:397 3594 3626 msgid "There may be cases in which the 2FA service is unavailable when a user is trying to log in. For example, the service is unreachable or there are no credits to complete the action. In this case you can configure the plugin to either block the login process, or allow the user to log in without 2FA authentication." 3595 3627 msgstr "" 3596 3628 3597 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 3463629 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:402 3598 3630 msgid "Select action" 3599 3631 msgstr "" 3600 3632 3601 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 3533633 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:409 3602 3634 msgid "Block the login." 3603 3635 msgstr "" 3604 3636 3605 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php: 3613637 #: includes/classes/Admin/SettingsPages/class-settings-page-general.php:417 3606 3638 msgid "Allow the login without 2FA" 3607 3639 msgstr "" … … 4043 4075 msgstr "" 4044 4076 4045 #: includes/classes/class-wp2fa.php:53 64077 #: includes/classes/class-wp2fa.php:538 4046 4078 msgid "Your login confirmation code for {site_name}" 4047 4079 msgstr "" 4048 4080 4049 #: includes/classes/class-wp2fa.php:5 384050 #: includes/classes/class-wp2fa.php:55 44081 #: includes/classes/class-wp2fa.php:540 4082 #: includes/classes/class-wp2fa.php:556 4051 4083 msgid "Hello {user_display_name}," 4052 4084 msgstr "" 4053 4085 4054 #: includes/classes/class-wp2fa.php:5 394086 #: includes/classes/class-wp2fa.php:541 4055 4087 msgid "You are trying to log in to {site_name} using the username {user_login_name}. To complete your login, please enter the following one-time 2FA code:" 4056 4088 msgstr "" 4057 4089 4058 #: includes/classes/class-wp2fa.php:54 04090 #: includes/classes/class-wp2fa.php:542 4059 4091 msgid "{login_code}" 4060 4092 msgstr "" 4061 4093 4062 #: includes/classes/class-wp2fa.php:54 14094 #: includes/classes/class-wp2fa.php:543 4063 4095 msgid "Enter this code on the login page to finish the authentication process and access your account." 4064 4096 msgstr "" 4065 4097 4066 #: includes/classes/class-wp2fa.php:54 24067 #: includes/classes/class-wp2fa.php:56 34098 #: includes/classes/class-wp2fa.php:544 4099 #: includes/classes/class-wp2fa.php:565 4068 4100 msgid "This request was made from IP address {user_ip_address}. If you did not request this, please contact the site administrator at {admin_email}." 4069 4101 msgstr "" 4070 4102 4071 #: includes/classes/class-wp2fa.php:54 34103 #: includes/classes/class-wp2fa.php:545 4072 4104 msgid "If you encounter any other issues logging in, feel free to contact us at {admin_email}." 4073 4105 msgstr "" 4074 4106 4075 #: includes/classes/class-wp2fa.php:54 44107 #: includes/classes/class-wp2fa.php:546 4076 4108 msgid "" 4077 4109 "Kind regards,\n" … … 4079 4111 msgstr "" 4080 4112 4081 #: includes/classes/class-wp2fa.php:55 24113 #: includes/classes/class-wp2fa.php:554 4082 4114 msgid "Your 2FA Setup Verification Code for {site_name}" 4083 4115 msgstr "" 4084 4116 4085 #: includes/classes/class-wp2fa.php:55 54117 #: includes/classes/class-wp2fa.php:557 4086 4118 msgid "You have requested to set up two-factor authentication for your user {user_login_name} on the website {site_name} ({site_url})." 4087 4119 msgstr "" 4088 4120 4089 4121 #. translators: The login code provided from the plugin. 4090 #: includes/classes/class-wp2fa.php:5 594122 #: includes/classes/class-wp2fa.php:561 4091 4123 msgid "Please enter the following code to complete your setup: %1$1s" 4092 4124 msgstr "" 4093 4125 4094 #: includes/classes/class-wp2fa.php:56 44095 #: includes/classes/class-wp2fa.php:58 14096 #: includes/classes/class-wp2fa.php:59 64126 #: includes/classes/class-wp2fa.php:566 4127 #: includes/classes/class-wp2fa.php:583 4128 #: includes/classes/class-wp2fa.php:598 4097 4129 msgid "Thank you." 4098 4130 msgstr "" 4099 4131 4100 #: includes/classes/class-wp2fa.php:56 54132 #: includes/classes/class-wp2fa.php:567 4101 4133 msgid "The {site_name} Team" 4102 4134 msgstr "" 4103 4135 4104 #: includes/classes/class-wp2fa.php:5 694136 #: includes/classes/class-wp2fa.php:571 4105 4137 msgid "Your user on {site_name} has been locked" 4106 4138 msgstr "" 4107 4139 4108 #: includes/classes/class-wp2fa.php:57 14140 #: includes/classes/class-wp2fa.php:573 4109 4141 msgid "Hello." 4110 4142 msgstr "" 4111 4143 4112 4144 #. translators: %2s - the name of the site. 4113 #: includes/classes/class-wp2fa.php:57 54145 #: includes/classes/class-wp2fa.php:577 4114 4146 msgid "Since you have not enabled two-factor authentication for the user %1$1s on the website %2$2s within the grace period, your account has been locked." 4115 4147 msgstr "" 4116 4148 4117 #: includes/classes/class-wp2fa.php:58 04149 #: includes/classes/class-wp2fa.php:582 4118 4150 msgid "Contact your website administrator to unlock your account." 4119 4151 msgstr "" 4120 4152 4121 #: includes/classes/class-wp2fa.php:58 74153 #: includes/classes/class-wp2fa.php:589 4122 4154 msgid "Your user on {site_name} has been unlocked" 4123 4155 msgstr "" 4124 4156 4125 #: includes/classes/class-wp2fa.php:59 04126 #: includes/classes/class-wp2fa.php:60 24157 #: includes/classes/class-wp2fa.php:592 4158 #: includes/classes/class-wp2fa.php:604 4127 4159 msgid "Hello," 4128 4160 msgstr "" 4129 4161 4130 #: includes/classes/class-wp2fa.php:59 04162 #: includes/classes/class-wp2fa.php:592 4131 4163 msgid "Your user" 4132 4164 msgstr "" 4133 4165 4134 #: includes/classes/class-wp2fa.php:59 04135 #: includes/classes/class-wp2fa.php:60 24166 #: includes/classes/class-wp2fa.php:592 4167 #: includes/classes/class-wp2fa.php:604 4136 4168 msgid "on the website" 4137 4169 msgstr "" 4138 4170 4139 #: includes/classes/class-wp2fa.php:59 04171 #: includes/classes/class-wp2fa.php:592 4140 4172 msgid "has been unlocked. Please configure two-factor authentication within the grace period, otherwise your account will be locked again." 4141 4173 msgstr "" 4142 4174 4143 #: includes/classes/class-wp2fa.php:59 34175 #: includes/classes/class-wp2fa.php:595 4144 4176 msgid "You can configure 2FA from this page:" 4145 4177 msgstr "" 4146 4178 4147 #: includes/classes/class-wp2fa.php:59 64148 #: includes/classes/class-wp2fa.php:60 64179 #: includes/classes/class-wp2fa.php:598 4180 #: includes/classes/class-wp2fa.php:608 4149 4181 msgid "WP 2FA plugin" 4150 4182 msgstr "" 4151 4183 4152 #: includes/classes/class-wp2fa.php: 5994184 #: includes/classes/class-wp2fa.php:601 4153 4185 msgid "2FA backup codes for user {user_login_name} on {site_name}" 4154 4186 msgstr "" 4155 4187 4156 #: includes/classes/class-wp2fa.php:60 24188 #: includes/classes/class-wp2fa.php:604 4157 4189 msgid "Below please find the 2FA backup codes for your user" 4158 4190 msgstr "" 4159 4191 4160 #: includes/classes/class-wp2fa.php:60 24192 #: includes/classes/class-wp2fa.php:604 4161 4193 msgid "The website's URL is" 4162 4194 msgstr "" 4163 4195 4164 #: includes/classes/class-wp2fa.php:60 64196 #: includes/classes/class-wp2fa.php:608 4165 4197 msgid "Thank you for enabling 2FA on your account and helping us keeping the website secure." 4166 4198 msgstr "" 4167 4199 4168 #: includes/classes/class-wp2fa.php:75 14200 #: includes/classes/class-wp2fa.php:753 4169 4201 msgid "Reconfigure" 4170 4202 msgstr "" 4171 4203 4172 #: includes/classes/class-wp2fa.php:75 14204 #: includes/classes/class-wp2fa.php:753 4173 4205 msgid "Configure" 4174 4206 msgstr "" 4175 4207 4176 4208 #. translators: The username. 4177 #: includes/classes/class-wp2fa.php:95 14209 #: includes/classes/class-wp2fa.php:953 4178 4210 msgid "User %1$s logged in without 2FA" 4179 4211 msgstr "" 4180 4212 4181 4213 #. translators: the site name. 4182 #: includes/classes/class-wp2fa.php:96 14214 #: includes/classes/class-wp2fa.php:963 4183 4215 msgid "2FA is enforced on the user %1$s on the website %2$s. However, since the WP 2FA plugin has not been configured properly it cannot enforce the user to configure 2FA, so the user logged in without 2FA." 4184 4216 msgstr "" 4185 4217 4186 4218 #. translators: the support e-mail. 4187 #: includes/classes/class-wp2fa.php:97 14219 #: includes/classes/class-wp2fa.php:973 4188 4220 msgid "To enforce 2FA on users logging in from non default WordPress login pages please configure the %1$s. If you need assistance, please contact us at %2$s." 4189 4221 msgstr "" 4190 4222 4191 #: includes/classes/class-wp2fa.php:116 24223 #: includes/classes/class-wp2fa.php:1164 4192 4224 msgid "For security reasons WP 2FA needs to store the private key in the wp-config.php file. However, it is unable to. This can happen because of restrictive permissions, or the file is not in the default location. To fix this you can:" 4193 4225 msgstr "" 4194 4226 4195 #: includes/classes/class-wp2fa.php:116 34227 #: includes/classes/class-wp2fa.php:1165 4196 4228 msgid "Option A) allow the plugin to write to the wp-config.php file temporarily by changing the wp-config.php permissions to 755. Once ready, click the button to proceed." 4197 4229 msgstr "" 4198 4230 4199 #: includes/classes/class-wp2fa.php:116 44231 #: includes/classes/class-wp2fa.php:1166 4200 4232 msgid "Option B) Add the encryption key to the wp-config.php file yourself by " 4201 4233 msgstr "" 4202 4234 4203 #: includes/classes/class-wp2fa.php:116 54235 #: includes/classes/class-wp2fa.php:1167 4204 4236 msgid "following these instructions." 4205 4237 msgstr "" 4206 4238 4207 #: includes/classes/class-wp2fa.php:116 64239 #: includes/classes/class-wp2fa.php:1168 4208 4240 msgid "Once you complete any of the above, please click the button below." 4209 4241 msgstr "" 4210 4242 4211 #: includes/classes/class-wp2fa.php:117 14243 #: includes/classes/class-wp2fa.php:1173 4212 4244 msgid "Write key to file now / Check for the key in file" 4213 4245 msgstr "" 4214 4246 4215 #: includes/classes/class-wp2fa.php:117 34247 #: includes/classes/class-wp2fa.php:1175 4216 4248 msgid "I am aware of the risks. Please do not alert me again about this." 4217 4249 msgstr "" … … 4366 4398 msgstr "" 4367 4399 4368 #: wp-2fa.php:26 44400 #: wp-2fa.php:265 4369 4401 msgid "This plugin requires OpenSSL. Contact your web host or website administrator so they can enable OpenSSL. Re-activate the plugin once the library has been enabled." 4370 4402 msgstr "" -
wp-2fa/trunk/readme.txt
r3343451 r3359559 7 7 Requires at least: 5.5 8 8 Tested up to: 6.8.2 9 Stable tag: 2.9. 29 Stable tag: 2.9.3 10 10 Requires PHP: 7.4.0 11 11 … … 136 136 == Changelog == 137 137 138 = 2.9.2 (2025-08-12) = 139 140 * **Plugin & functionality improvements** 141 * REST API endpoints are now enabled by default. 142 * Added a new setting to choose how OTP verification is handled — via the legacy (native) method or through REST API. 143 * Introduced a timeout/limit on the “Resend code” option in the “2FA required on password resets” feature to prevent email abuse. 144 * Enhanced email templates with more relevant content and improved anti-spam scoring. 145 * Added default WP 2FA branding to all email templates in the Free edition. 146 * Refined the help text descriptions in several areas of the plugin. 147 148 * **Bug fixes** 149 * Removed an email template from the Free edition (reserved for Premium edition). 150 * Fixed an issue in the “2FA required on password resets” feature where the wrong email template was sent when using the “Resend code” button. 151 152 = 2.9.1 (2025-08-01) = 153 154 * **Plugin & functionality improvements** 155 * Switched 2FA operations back to native (pre 2.9.0). 156 * Added a setting to manually enable / disable the REST API endpoints. 157 158 * **Bug fixes** 159 * Fixed: configured user's 2FA methods not showing in the My Account WooCommerce portal. 160 161 = 2.9.0 (2025-07-31) = 162 163 * **New features** 164 * REST API endpoints for 2FA code verification and other operations, thus making it much easier to integrate the plugin in custom processes. 165 * Option to allow temporary login without 2FA for a specific user or number of users. 166 * New filter _wp_2fa_oob_redirect_url_ to assist with user redirection post-login when Link via email (OOB) 2FA method is in use. 167 * Quick Links section with useful inks. 138 = 2.9.3 (2025-09-11) = 168 139 169 140 * **Plugin & functionality improvements** 170 * Bumped up the minimum supported PHP version from 7.3 to 7.4. 171 * Bumped up the minimum supported WordPress Core version from 5.0 to 5.5. 172 * Better support for setups in which access to the wp-login.php file is restricted or denied. 173 * Plugin no longer supports 2FA enforcement on users without any role, to adhere to the new Wordpress core changes. 174 * Improved performance: plugin now better loads and handles it's files and scripts . 175 * Updated the 2FA setup wizard UI – available methods are now displayed vertically for improved readability and layout consistency. 176 * Changed the default template of the 2FA code email for improved email deliverability (new installs only). 177 * Tweaked the redirection of users on Woocommerce to cater for latest Woocommerce version, ensuing correct and consistent redirection flow post-login. 178 * White Labeling - added option to enable help text to assist users during 2FA configuration for all methods. 179 * White Labeling - Changed the placeholder title on the 2FA code page text to "Verification code" for consistency. 180 * White Labeling - added a new white labeling option to enable/disable our plugin's signature from the 2FA Frontend configuration page. 181 * White Labeling - made more wizard elements translatable by assisting with localizing text inside JS elements. 182 * White Labeling - Tweaked the 2FA page code elements by introducing new unique classes, to make it easier for users to customize their logo with the right size and format. 183 * Switched the default setting for HOTP to now allow users to use another email address during configuration. 184 * Removed old links and imagery related to Captcha 4WP plugin. 185 * Added [Melapress Role Editor](https://melapress.com/wordpress-user-roles-editor/) in the About Us page. 186 * Reviewed all links in the plugin; fixed few broken links and added UTM parameters. 187 * Tweaked the UI inside a few wizards and plugin pages to avoid orphaned words or hanging elements. 188 * When "Log out users after 2FA configuration" is enabled, users are no longer logged out after they configure a backup method only. 189 * Made the 2FA notice regarding WP 2FA Encrypt key storage in wp-config.php dismissable. 190 * Authy method was removed from the setup wizard - service is being decommissioned by Twilio. 191 * Added our own custom libraries for Twilio integration, replacing the official SDK for improved performance and reduced dependencies. 192 * Removed the "User licensing" tab from the Settings which was redundant (used by the old licensing model). 193 * Improved the code that retrieves the number of subsites on a multisite network. 194 * Woocommerce Integration - 2FA Configuration page from My Account dashboard is now correctly positioned above the Log Out button. 195 * Yubico method will now show up in 2FA method selection wizard even when it's the only method enabled. 196 * Removed a redundant wizard steps when only one method was active (Yubico) for a smoother process. 197 * Updated the text and layout of the Yubikey configuration wizard. 198 199 * **Bug fixes** 200 * Fixed a PHP Notice "Function _load_textdomain_just_in_time" which could constantly occur in certain site setups . 201 * Translations: Fixed an edge case where Admin settings switch to Dutch once .po files are loaded, preventing the inheritance of actual site language. 202 * Fixed a bug causing the WordPress logo to be hidden on the 2FA code page in the Premium edition of WP 2FA. 203 * Fixed a scenario where users could see the "Remove 2FA" button on their profile page even though 2FA was enforced and no grace period was allowed. 204 * Fixed a handful of user role Inheritance issues which were causing some 2FA policies to not be correctly enforced to certain roles. 205 * Fixed an error which could occur when redirecting a user to a non-existent URL after configuring 2FA. 206 * Fixed a variety of PHP warnings related to Yubico, the out of band 2FA method, and the Reports page. 207 * Fixed a bug which could prevent users with SMS via Clickatell to use a backup code via email to log in. 208 * Fixed a bug which was causing the "grace period time left" shortcode to always show time in UTC format instead of site's timezone. 209 * Fixed a bug in which users using Yubico as primary method were unable to configure the email backup method. 210 * Added a check to avoid the plugin from writing multiple comments inside the wp-config.php file when the file is refreshed by third parties. 211 * Fixed a PHP deprecation: Function _print_emoji_styles_ which occured on fresh installations. 212 * Fixed a user reported edge case error involving WP 2FA and Paid Membership plugin when Authy 2FA method was in use. 213 * Fixed a scenario where the user could get locked out even though the setting to lock users with exceeded grace period was disabled. 214 * Fixed a user-reported PHP error - Uncaught Error: Call to a member function get_page_permastruct() on null. 215 * Fixed a some user-reported PHP errors that could occur inside Reports page under very specific circumstances. 216 * Fixed a UI glitch which could cause users to be prompted with "This page is asking you to confirm that you want to leave - information you've entered may not be saved." when configuring 2FA. 217 * Fixed a PHP 8.4 Deprecated notice: WP2FA_Vendor\BaconQrCode\Encoder\Encoder::chooseMode(). 218 * Fixed a number of issues on how the 2FA frontend configuration pages are created on each subsite on a multisite nework. 219 * Fixed a shortcode behavior _{from_email}_ which was pulling the site admin email instead of the actual From email address. 220 * Fixed a user-reported edge case that could intermittently cause the wrong 2FA method to be selected during configuration, loading OTP via email wizard instead of the Authenticator app. 221 * Fixed a scenario where users with multiple roles on multiple websites have 2FA removed if "No role for this website" is selected. 141 * Added a new setting to disable the REST API endpoints. 222 142 223 143 Refer to the complete [plugin changelog](https://melapress.com/support/kb/wp-2fa-plugin-changelog/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WP2FA&utm_content=plugin+repos+description) for more detailed information about what was new, improved and fixed in previous version updates of WP 2FA. -
wp-2fa/trunk/vendor/autoload.php
r3343451 r3359559 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit2 3271::getLoader();22 return ComposerAutoloaderInit28365::getLoader(); -
wp-2fa/trunk/vendor/composer/autoload_real.php
r3343451 r3359559 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit2 32715 class ComposerAutoloaderInit28365 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit2 3271', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit28365', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit2 3271', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit28365', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit2 3271::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit28365::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
wp-2fa/trunk/vendor/composer/autoload_static.php
r3343451 r3359559 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit2 32717 class ComposerStaticInit28365 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 217 217 { 218 218 return \Closure::bind(function () use ($loader) { 219 $loader->prefixLengthsPsr4 = ComposerStaticInit2 3271::$prefixLengthsPsr4;220 $loader->prefixDirsPsr4 = ComposerStaticInit2 3271::$prefixDirsPsr4;221 $loader->classMap = ComposerStaticInit2 3271::$classMap;219 $loader->prefixLengthsPsr4 = ComposerStaticInit28365::$prefixLengthsPsr4; 220 $loader->prefixDirsPsr4 = ComposerStaticInit28365::$prefixDirsPsr4; 221 $loader->classMap = ComposerStaticInit28365::$classMap; 222 222 223 223 }, null, ClassLoader::class); -
wp-2fa/trunk/wp-2fa.php
r3343451 r3359559 8 8 * @wordpress-plugin 9 9 * Plugin Name: WP 2FA - Two-factor authentication for WordPress 10 * Version: 2.9. 210 * Version: 2.9.3 11 11 * Plugin URI: https://melapress.com/ 12 12 * Description: Easily add an additional layer of security to your WordPress login pages. Enable Two-Factor Authentication for you and all your website users with this easy to use plugin. … … 53 53 } 54 54 55 \add_action( 'doing_it_wrong_trigger_error', 'wp_2fa_trigger_error', 10, 4 ); 56 \add_action( 'doing_it_wrong_run', 'wp_2fa_action_doing_it_wrong_run', 0, 3 ); 57 \add_action( 'doing_it_wrong_run', 'wp_2fa_action_doing_it_wrong_run', 20, 3 ); 58 \add_action( 'aadvana_trigger_error_doing_it_wrong', 'wp_2fa_trigger_error', 0, 4 ); 59 55 60 // Useful global constants. 56 61 if ( ! defined( 'WP_2FA_VERSION' ) ) { 57 define( 'WP_2FA_VERSION', '2.9. 2' );62 define( 'WP_2FA_VERSION', '2.9.3' ); 58 63 define( 'WP_2FA_BASE', plugin_basename( __FILE__ ) ); 59 64 define( 'WP_2FA_URL', plugin_dir_url( __FILE__ ) ); … … 156 161 ); 157 162 158 \add_action( 'doing_it_wrong_trigger_error', 'wp_2fa_trigger_error', 10, 4 );159 \add_action( 'doing_it_wrong_run', 'wp_2fa_action_doing_it_wrong_run', 0, 3 );160 \add_action( 'doing_it_wrong_run', 'wp_2fa_action_doing_it_wrong_run', 20, 3 );161 162 163 if ( ! function_exists( 'wp_2f_is_just_in_time_for_2fa_domain' ) ) { 163 164 /**
Note: See TracChangeset
for help on using the changeset viewer.