PluginProbe ʕ •ᴥ•ʔ
Limit Login Attempts Security – Login Security, 2FA, Firewall, Brute Force Prevention / 3.2.4
Limit Login Attempts Security – Login Security, 2FA, Firewall, Brute Force Prevention v3.2.4
3.3.2 3.3.1 3.3.0 3.2.4 3.2.3 3.2.2 3.2.1 3.2.0 trunk 2.0.0 2.1.0 2.10.0 2.10.1 2.11.0 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.14.0 2.15.0 2.15.1 2.15.2 2.16.0 2.17.0 2.17.1 2.17.2 2.17.3 2.17.4 2.18.0 2.19.0 2.19.1 2.19.2 2.2.0 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.21.1 2.22.0 2.22.1 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.25.0 2.25.1 2.25.10 2.25.11 2.25.12 2.25.13 2.25.14 2.25.15 2.25.16 2.25.17 2.25.18 2.25.19 2.25.2 2.25.20 2.25.21 2.25.22 2.25.23 2.25.24 2.25.25 2.25.26 2.25.27 2.25.28 2.25.29 2.25.3 2.25.4 2.25.5 2.25.6 2.25.7 2.25.8 2.25.9 2.26.0 2.26.1 2.26.10 2.26.11 2.26.12 2.26.13 2.26.14 2.26.15 2.26.16 2.26.17 2.26.18 2.26.19 2.26.2 2.26.20 2.26.21 2.26.22 2.26.23 2.26.24 2.26.25 2.26.26 2.26.27 2.26.28 2.26.3 2.26.4 2.26.5 2.26.6 2.26.7 2.26.8 2.26.9 2.3.0 2.4.0 2.5.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.8.0 2.8.1 2.9.0 3.0.0 3.0.1 3.0.2 3.1.0
limit-login-attempts-reloaded / views / mfa-rescue-popup.php
limit-login-attempts-reloaded / views Last commit date
app-widgets 1 month ago emails 1 month ago admin-dashboard-widgets.php 1 month ago chart-circle-failed-attempts-today.php 1 month ago chart-failed-attempts.php 1 month ago mfa-rescue-pdf.php 1 month ago mfa-rescue-popup.php 1 month ago mfa-rescue-prefetch-confirm.php 1 month ago micro-cloud-modal.php 1 month ago notices.php 1 month ago onboarding-popup.php 1 month ago options-page.php 1 month ago tab-dashboard.php 1 month ago tab-debug.php 1 month ago tab-help.php 1 month ago tab-logs-custom.php 1 month ago tab-logs-local.php 1 month ago tab-mfa.php 1 month ago tab-premium.php 1 month ago tab-settings.php 1 month ago
mfa-rescue-popup.php
115 lines
1 <?php
2 /**
3 * MFA Rescue Links Popup
4 * Pure HTML/JS template - no PHP code generation here
5 */
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit();
9 }
10
11 $site_url = home_url();
12 $site_domain = wp_parse_url( $site_url, PHP_URL_HOST );
13 $current_user_email = isset( $current_user_email ) ? $current_user_email : '';
14 $profile_url = admin_url( 'profile.php' );
15
16 ?>
17 <div id="llar-mfa-rescue-popup-content" style="display: none;">
18 <div class="micro_cloud_modal__content">
19 <div class="micro_cloud_modal__body">
20 <div class="card mx-auto">
21 <div class="card-body">
22 <div class="field-wrap">
23 <h3 class="title_page">
24 <?php echo esc_html__( 'Important: Download Your Rescue Links', 'limit-login-attempts-reloaded' ); ?>
25 </h3>
26 <div class="description-page">
27 <p class="description" style="color: #dc3232; font-weight: bold;">
28 &#9888;&#65039; <?php echo esc_html__( 'Before enabling 2FA, you must download your rescue links. These links allow you to regain access to your site if you lose access to your 2FA device or encounter another technical issue (e.g., email is not working).', 'limit-login-attempts-reloaded' ); ?>
29 </p>
30 <p class="description">
31 <strong><?php echo esc_html__( 'Each rescue link can only be used once.', 'limit-login-attempts-reloaded' ); ?></strong>
32 </p>
33 <p class="description">
34 <?php echo esc_html__( 'By clicking a rescue link, 2FA will be fully disabled on', 'limit-login-attempts-reloaded' ); ?>
35 <strong><?php echo esc_html( $site_domain ); ?></strong>
36 <?php echo esc_html__( 'for 1 hour.', 'limit-login-attempts-reloaded' ); ?>
37 </p>
38 </div>
39 <form id="llar-rescue-confirm-form" class="llar-rescue-confirm-form">
40 <div class="llar-rescue-email-confirm" style="margin: 18px 0; padding: 12px 0; border-top: 1px solid #ddd; visibility: hidden;">
41 <h4 style="margin: 0 0 8px 0; font-size: 14px;"><?php esc_html_e( 'Your email for 2FA', 'limit-login-attempts-reloaded' ); ?></h4>
42 <?php if ( ! empty( $current_user_email ) ) : ?>
43 <p class="description" style="margin-bottom: 8px;">
44 <strong><?php echo esc_html( $current_user_email ); ?></strong>
45 </p>
46 <p class="description" style="margin-bottom: 10px;">
47 <?php
48 echo wp_kses(
49 sprintf(
50 /* translators: 1: opening link tag to user profile, 2: closing link tag. */
51 __( 'One-time 2FA codes will be sent to this address. Please confirm it is correct before activating. You can %1$schange your email in your user profile%2$s.', 'limit-login-attempts-reloaded' ),
52 '<a href="' . esc_url( $profile_url ) . '" target="_blank" rel="noopener noreferrer">',
53 '</a>'
54 ),
55 array(
56 'a' => array(
57 'href' => array(),
58 'target' => array(),
59 'rel' => array(),
60 ),
61 )
62 );
63 ?>
64 </p>
65 <label style="display: block;">
66 <input type="checkbox" id="llar-rescue-confirm-email" name="llar_rescue_confirm_email" value="1" required aria-required="true"/>
67 <?php esc_html_e( 'I confirm this email address is correct and I will receive 2FA codes here.', 'limit-login-attempts-reloaded' ); ?>
68 </label>
69 <?php else : ?>
70 <p class="description" style="color: #dc3232;">
71 <?php esc_html_e( 'Your account has no email address. Please set an email in your profile; 2FA requires it to send codes.', 'limit-login-attempts-reloaded' ); ?>
72 </p>
73 <?php endif; ?>
74 </div>
75 <!-- Rescue links are generated automatically when popup opens -->
76 <div id="llar-rescue-links-display">
77 <h3 class="title_page">
78 <?php echo esc_html__( 'Your Rescue Links', 'limit-login-attempts-reloaded' ); ?>
79 </h3>
80 <div class="description-page">
81 <p class="description">
82 <?php echo esc_html__( 'Save these links in a secure location. Each link can only be used once.', 'limit-login-attempts-reloaded' ); ?>
83 </p>
84 </div>
85 <div class="llar-rescue-links-list" id="llar-rescue-links-list"></div>
86 <div class="llar-rescue-copy-row" style="display: none;">
87 <button type="button" class="button llar-copy-rescue-links" title="<?php echo esc_attr__( 'Copy to clipboard', 'limit-login-attempts-reloaded' ); ?>" aria-label="<?php echo esc_attr__( 'Copy to clipboard', 'limit-login-attempts-reloaded' ); ?>">📋 <?php echo esc_html__( 'Copy to clipboard', 'limit-login-attempts-reloaded' ); ?></button>
88 <button type="button" class="button llar-print-rescue-links" title="<?php echo esc_attr__( 'Print', 'limit-login-attempts-reloaded' ); ?>" aria-label="<?php echo esc_attr__( 'Print', 'limit-login-attempts-reloaded' ); ?>">🖨️ <?php echo esc_html__( 'Print', 'limit-login-attempts-reloaded' ); ?></button>
89 <button type="button" class="button llar-download-pdf" title="<?php echo esc_attr__( 'Download as PDF', 'limit-login-attempts-reloaded' ); ?>" aria-label="<?php echo esc_attr__( 'Download as PDF', 'limit-login-attempts-reloaded' ); ?>">📄 <?php echo esc_html__( 'Download as PDF', 'limit-login-attempts-reloaded' ); ?></button>
90 <span class="llar-copy-feedback" id="llar-copy-feedback" aria-live="polite"></span>
91 </div>
92 </div>
93 <div class="llar-rescue-confirm-row" style="display: none; margin-top: 20px; padding-top: 15px; border-top: 1px solid #ccc; visibility: hidden;">
94 <label style="display: block; margin-bottom: 10px;">
95 <input type="checkbox" id="llar-rescue-saved-confirm" name="llar_rescue_saved_confirm" value="1" required aria-required="true"/>
96 <?php echo esc_html__( 'I have saved my rescue links in a secure location. I am ready to activate 2FA.', 'limit-login-attempts-reloaded' ); ?>
97 </label>
98 <button type="submit" class="button menu__item button__orange llar-rescue-close-btn llar-rescue-close-btn--inactive">
99 <?php echo esc_html__( 'Activate 2FA and Save Settings', 'limit-login-attempts-reloaded' ); ?>
100 </button>
101 </div>
102 </form>
103 </div>
104 </div>
105 </div>
106 <div id="llar-rescue-links-loading" class="llar-rescue-links-loading" style="display: none;">
107 <span class="llar-rescue-loading-icon-wrap" aria-hidden="true">
108 <img class="llar-rescue-loading-icon" src="<?php echo esc_url( LLA_PLUGIN_URL . 'assets/img/llar-spinner.svg' ); ?>" alt="">
109 </span>
110 <span class="llar-rescue-loading-text"><strong><?php echo esc_html__( 'Generating Rescue Links', 'limit-login-attempts-reloaded' ); ?></strong><span class="llar-rescue-loading-dots">...</span></span>
111 </div>
112 </div>
113 </div>
114 </div>
115