PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.9.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.9.2
4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / views / frontend / wordfence-2fa.php
wp-staging / views / frontend Last commit date
footer.php 1 year ago header.php 4 months ago loginAfterRestore.php 1 year ago loginForm.php 1 day ago wordfence-2fa.php 1 year ago
wordfence-2fa.php
113 lines
1 <?php
2 /**
3 * wordfence-2fa.php
4 *
5 * @var array $args
6 */
7
8 ?>
9 <div class="form-group" id="wf-two-fa-container" style="display:none;">
10 <label for="<?php echo esc_attr("wfls-token"); ?>"><?php echo esc_html("Wordfence 2FA Code"); ?></label>
11 <input type="text" name="wfls-token" id="wfls-token" class="input form-control"/>
12 </div>
13 <div class="wf-login-submit">
14 <input type="hidden" name="wfls-token-submit" id="wfls-token-submit" class="btn" value="Log In">
15 </div>
16
17 <script>
18 window.onload = function() {
19 let isUserLoggedIn = false;
20 let loginUsernameElements = document.querySelectorAll('.login-username');
21 let loginPasswordElements = document.querySelectorAll('.login-password');
22 let loginRememberElements = document.querySelectorAll('.login-remember');
23 let loginSubmitElements = document.querySelectorAll('.login-submit');
24 let loginLostPassElements = document.querySelectorAll('.password-lost');
25 let loginErrorMsgElements = document.querySelectorAll('.error-msg');
26 let defaultLoginLink = document.querySelectorAll('.wpstg-default-login-link');
27 let loginForm = document.getElementById("<?php echo esc_attr($args['form_id']); ?>");
28 let loginUsername = document.getElementById("<?php echo esc_attr($args['id_username']); ?>");
29 let loginPassword = document.getElementById("<?php echo esc_attr($args['id_password']); ?>");
30 let wfToken = document.getElementById("wfls-token");
31 let loginSubmitButton = document.getElementById("<?php echo esc_attr($args['id_submit']); ?>");
32 let wfLoginSubmitButton = document.getElementById("wfls-token-submit");
33 let wfTokenElement = document.getElementById("wf-two-fa-container");
34 loginSubmitButton.type = "button";
35 loginForm.action = "<?php echo esc_url(home_url() . "/wp-login.php"); ?>";
36
37 /*
38 * the action wordfence_ls_authenticate checks if the user have 2fa enabled
39 * returns two_factor_required = true if 2fa enabled
40 * */
41 function submitCustomLoginForm(event) {
42 if ((event.key === 'Enter' && !isUserLoggedIn) || (event.type === 'click' && event.target === loginSubmitButton)) {
43 const formData = new FormData();
44 formData.append('log', loginUsername.value);
45 formData.append('pwd', loginPassword.value);
46 formData.append('redirect_to', '<?php echo esc_url(home_url()); ?>');
47 formData.append('action', 'wordfence_ls_authenticate');
48
49 fetch("wp-admin/admin-ajax.php", {method: 'post', body: formData})
50 .then((response) => response.json()).then((res) => {
51 if (res.login === 1 && res.two_factor_required) {
52 isUserLoggedIn = true;
53 loginUsernameElements.forEach(element => {
54 element.style.display = 'none';
55 });
56
57 defaultLoginLink.forEach(element => {
58 element.style.display = 'none';
59 });
60
61 loginPasswordElements.forEach(element => {
62 element.style.display = 'none';
63 });
64
65 loginRememberElements.forEach(element => {
66 element.style.display = 'none';
67 });
68
69 loginSubmitElements.forEach(element => {
70 element.style.display = 'none';
71 });
72
73 loginErrorMsgElements.forEach(element => {
74 element.innerHTML = "";
75 element.innerContent = "";
76 });
77
78 loginLostPassElements.forEach(element => {
79 element.style.display = 'none';
80 element.innerHTML = "";
81 element.innerContent = "";
82 });
83
84 wfTokenElement.style.display = 'block';
85 wfLoginSubmitButton.type = "button";
86 loginSubmitButton.type = "hidden";
87 loginUsername.name = "log";
88 loginPassword.name = "pwd";
89 } else if (res.login === 1 && !res.two_factor_required) {
90 loginForm.action = "";
91 loginForm.submit();
92 }
93 else {
94 loginLostPassElements.forEach(element => {
95 element.innerHTML = 'Cannot log in because WordFence 2FA authentication module is detected, but it does not work properly with the WP STAGING login form. Error message: ' + res.error + ' <br><br>Try to log in with the <a href="./wp-login.php">default WordPress login</a> instead.';
96 });
97 }
98 })
99 .catch((error) => {});
100 }
101 }
102
103 function wf2FAForm(event) {
104 if (event.type === 'click' && event.target === wfLoginSubmitButton) {
105 loginForm.submit();
106 }
107 }
108
109 document.addEventListener('keydown', submitCustomLoginForm);
110 loginSubmitButton.addEventListener('click', submitCustomLoginForm);
111 wfLoginSubmitButton.addEventListener('click', wf2FAForm);
112 };
113 </script>