Version Description
- Google Authenticator - Two factor Authentication (2FA, OTP) :
- Updated Pricing page UI
Download this release
Release Info
Developer | cyberlord92 |
Plugin | Google Authenticator – WordPress Two Factor Authentication (2FA) |
Version | 5.5.1 |
Comparing to | |
See all releases |
Code changes from version 5.4.33 to 5.5.1
- api/Mo2f_OnPremRedirect.php +3 -3
- api/class-customer-common-setup.php +63 -1
- changelog.txt +718 -0
- controllers/account.php +2 -2
- controllers/content-protection.php +1 -0
- controllers/dashboard.php +1 -1
- controllers/duo_authenticator/duo_authenticator_ajax.php +3 -3
- controllers/feedback_footer.php +35 -25
- controllers/login-security.php +20 -22
- controllers/main_controller.php +54 -84
- controllers/malware_scanner/malware_scan_ajax.php +8 -0
- controllers/navbar.php +2 -1
- controllers/request_christmas_offer.php +48 -0
- controllers/request_offer.php +1 -1
- controllers/support.php +3 -22
- controllers/tour-model.php +1 -1
- controllers/trial.php +91 -0
- controllers/two-fa-intro.php +3 -3
- controllers/twofa/mo2fa_common_login.php +120 -17
- controllers/twofa/mo2fa_inline_registration.php +35 -56
- controllers/twofa/two_factor_ajax.php +818 -1
- controllers/upgrade.php +2 -1
- controllers/wpns-loginsecurity-ajax.php +72 -19
- database/database_functions_2fa.php +5 -1
- database/mo2f_db_options.php +3 -0
- handler/ajax.php +13 -1
- handler/feedback_form.php +38 -0
- handler/logger.php +2 -0
- handler/login.php +48 -34
- handler/malware_scanner.php +3 -3
- handler/malware_scanner/malware_scanner_cron.php +6 -6
- handler/malware_scanner/scanner_set_cron.php +2 -2
- handler/recaptcha.php +66 -12
- handler/registration.php +8 -2
- handler/twofa/class_miniorange_2fa_strong_password.php +1 -1
- handler/twofa/gaonprem.php +9 -3
- handler/twofa/setup_twofa.php +150 -124
- handler/twofa/two_fa_constants.php +16 -0
- handler/twofa/two_fa_login.php +20 -26
- handler/twofa/two_fa_pass2login.php +334 -272
- handler/twofa/two_fa_settings.php +1521 -312
- handler/twofa/two_fa_utility.php +99 -27
- handler/user-profile-2fa-update.php +213 -0
- handler/user-profile-2fa.php +276 -0
- helper/constants.php +1 -1
- helper/curl.php +18 -1
- helper/messages.php +35 -1
- helper/utility.php +28 -5
- includes/css/bootstrap.min.css +14 -1
- includes/css/button_styles.css +4 -4
- includes/css/christmas.gif +0 -0
- includes/css/datetime-style-settings.css +0 -576
- includes/css/datetime-style-settings.min.css +0 -1
- includes/css/hide-login-form.css +3 -0
- includes/css/jquery-ui.min.css +1 -4
- includes/css/jquery.ui.css +0 -175
- includes/css/popup.css +2 -2
- includes/css/style_settings.css +525 -359
- includes/css/twofa_style_settings.css +13 -1
- includes/css/upgrade.css +734 -53
- includes/css/user-profile.css +179 -0
- includes/email-New-release.php +553 -243
- includes/images/2fa-on-login-page.png +0 -0
- includes/images/authmethods/miniOrangeAuthenticator.png +0 -0
- includes/images/firebase.png +0 -0
- includes/images/{hide_login_form.png → hide_login_form.PNG} +0 -0
- includes/images/{login-with-password-and-2fa.png → login-with-password-and-2fa.PNG} +0 -0
- includes/js/login_with_ajax.js +65 -0
- includes/js/mo2fa_elementor.js +122 -0
- includes/js/pointers.js +3 -3
- includes/js/settings_page.js +37 -4
- includes/js/setup-wizard-2fa.js +6572 -0
- includes/js/user-profile-twofa.js +194 -0
- includes/lib/mo-2fa-options-enum.php +0 -435
- miniorange_2_factor_settings.php +89 -34
- readme.txt +63 -126
api/Mo2f_OnPremRedirect.php
CHANGED
@@ -68,7 +68,7 @@ class Mo2f_OnPremRedirect {
|
|
68 |
return $content;
|
69 |
case "EMAIL":
|
70 |
|
71 |
-
case "OTP Over Email": $content = $this->OnpremOTPOverEMail($currentuser);
|
72 |
return $content;
|
73 |
case "KBA": $content = $this->OnpremSecurityQuestions($currentuser);
|
74 |
return $content;
|
@@ -104,9 +104,9 @@ class Mo2f_OnPremRedirect {
|
|
104 |
$content=$gauth_obj->verifyCode($secret, $otpToken);
|
105 |
return $content;
|
106 |
}
|
107 |
-
function OnpremOTPOverEMail($current_user)
|
108 |
{
|
109 |
-
return $this->OnpremSendOTPEMail($current_user,'mo2f_otp_email_code','mo2f_otp_email_time');
|
110 |
}
|
111 |
function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
|
112 |
{
|
68 |
return $content;
|
69 |
case "EMAIL":
|
70 |
|
71 |
+
case "OTP Over Email": $content = $this->OnpremOTPOverEMail($currentuser,$useremail);
|
72 |
return $content;
|
73 |
case "KBA": $content = $this->OnpremSecurityQuestions($currentuser);
|
74 |
return $content;
|
104 |
$content=$gauth_obj->verifyCode($secret, $otpToken);
|
105 |
return $content;
|
106 |
}
|
107 |
+
function OnpremOTPOverEMail($current_user,$useremail=false)
|
108 |
{
|
109 |
+
return $this->OnpremSendOTPEMail($current_user,'mo2f_otp_email_code','mo2f_otp_email_time',$useremail);
|
110 |
}
|
111 |
function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
|
112 |
{
|
api/class-customer-common-setup.php
CHANGED
@@ -301,6 +301,69 @@ class Customer_Cloud_Setup {
|
|
301 |
return $content;
|
302 |
}
|
303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
|
305 |
function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
|
306 |
$content='';
|
@@ -361,7 +424,6 @@ class Customer_Cloud_Setup {
|
|
361 |
|
362 |
|
363 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
364 |
-
|
365 |
return $content;
|
366 |
}
|
367 |
|
301 |
return $content;
|
302 |
}
|
303 |
|
304 |
+
public function mo_2f_generate_backup_codes($mo2f_user_email,$site_url){
|
305 |
+
|
306 |
+
|
307 |
+
$url = 'https://sitestats.xecurify.com/backupcodeservice/index.php';
|
308 |
+
|
309 |
+
$headers = array('header' => "Authorization:Basic" . base64_encode("$mo2f_user_email:$site_url") );
|
310 |
+
|
311 |
+
$postdata = array('mo2f_email'=> $mo2f_user_email,
|
312 |
+
'mo2f_domain' =>$site_url,
|
313 |
+
'headers'=>$headers['header'],
|
314 |
+
'mo2f_generate_backup_codes'=>'initiated_backup_codes');
|
315 |
+
|
316 |
+
$handle = curl_init();
|
317 |
+
|
318 |
+
curl_setopt_array($handle,
|
319 |
+
array(
|
320 |
+
CURLOPT_URL => $url,
|
321 |
+
CURLOPT_POST => true,
|
322 |
+
CURLOPT_POSTFIELDS => $postdata,
|
323 |
+
CURLOPT_RETURNTRANSFER => true,
|
324 |
+
CURLOPT_SSL_VERIFYHOST => FALSE,
|
325 |
+
CURLOPT_SSL_VERIFYPEER => FALSE,
|
326 |
+
)
|
327 |
+
);
|
328 |
+
|
329 |
+
$data = curl_exec($handle);
|
330 |
+
|
331 |
+
curl_close($handle);
|
332 |
+
return $data;
|
333 |
+
|
334 |
+
}
|
335 |
+
|
336 |
+
public function mo2f_validate_backup_codes($mo2f_backup_code,$mo2f_user_email){
|
337 |
+
$url = 'https://sitestats.xecurify.com/backupcodeservice/backup_code_validation.php';
|
338 |
+
|
339 |
+
$site_url = site_url();
|
340 |
+
$headers = array('header' => "Authorization:Basic" . base64_encode("$mo2f_user_email:$site_url") );
|
341 |
+
|
342 |
+
$postdata = array('mo2f_otp_token' => $mo2f_backup_code,
|
343 |
+
'mo2f_user_email'=> $mo2f_user_email,
|
344 |
+
'headers'=>$headers['header'],
|
345 |
+
'mo2f_site_url' => $site_url);
|
346 |
+
|
347 |
+
$handle = curl_init();
|
348 |
+
|
349 |
+
curl_setopt_array($handle,
|
350 |
+
array(
|
351 |
+
CURLOPT_URL => $url,
|
352 |
+
CURLOPT_POST => true,
|
353 |
+
CURLOPT_POSTFIELDS => $postdata,
|
354 |
+
CURLOPT_RETURNTRANSFER => true,
|
355 |
+
CURLOPT_SSL_VERIFYHOST => FALSE,
|
356 |
+
CURLOPT_SSL_VERIFYPEER => FALSE,
|
357 |
+
)
|
358 |
+
);
|
359 |
+
|
360 |
+
$data = curl_exec($handle);
|
361 |
+
|
362 |
+
curl_close($handle);
|
363 |
+
|
364 |
+
return $data;
|
365 |
+
}
|
366 |
+
|
367 |
|
368 |
function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
|
369 |
$content='';
|
424 |
|
425 |
|
426 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
|
|
427 |
return $content;
|
428 |
}
|
429 |
|
changelog.txt
ADDED
@@ -0,0 +1,718 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== miniOrange's Google Authenticator - WordPress Two Factor Authentication (2FA , MFA, OTP SMS and Email) | Passwordless login ===
|
2 |
+
|
3 |
+
== Archived Changelog Entries ==
|
4 |
+
|
5 |
+
This file contains older changelog entries, so we can keep the size of the standard WordPress readme.txt file reasonable.
|
6 |
+
For the latest changes, please refer to the "Changelog" section in the [readme.txt file](https://plugins.svn.wordpress.org/miniorange-2-factor-authentication/trunk/readme.txt).
|
7 |
+
|
8 |
+
= 5.5.1 =
|
9 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
10 |
+
* Updated Pricing page UI
|
11 |
+
|
12 |
+
= 5.5 =
|
13 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
14 |
+
* Updated Network Security UI
|
15 |
+
|
16 |
+
= 5.4.52 =
|
17 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
18 |
+
* Updated Trial Request Form
|
19 |
+
|
20 |
+
= 5.4.51 =
|
21 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
22 |
+
* Trial notification visibility issue fixed
|
23 |
+
|
24 |
+
= 5.4.50 =
|
25 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
26 |
+
* Bug fix - Headers already sent
|
27 |
+
|
28 |
+
= 5.4.49 =
|
29 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
30 |
+
* Trial Notification for Premium Plugins
|
31 |
+
* CSRF Fix
|
32 |
+
|
33 |
+
= 5.4.48 =
|
34 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
35 |
+
* Close button on offer banner
|
36 |
+
|
37 |
+
= 5.4.47 =
|
38 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
39 |
+
* Christmas offer
|
40 |
+
|
41 |
+
= 5.4.46 =
|
42 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
43 |
+
* Black friday offer
|
44 |
+
* Get email notification on the plugin's new release
|
45 |
+
|
46 |
+
= 5.4.45 =
|
47 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
48 |
+
* Added login with the any configured methods
|
49 |
+
* Minor bug fix
|
50 |
+
|
51 |
+
= 5.4.44 =
|
52 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
53 |
+
* Added link to WordPress forum in support form
|
54 |
+
* Minor bug fix
|
55 |
+
|
56 |
+
= 5.4.43 =
|
57 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
58 |
+
* Special offer - Special discount for limited time
|
59 |
+
|
60 |
+
= 5.4.42 =
|
61 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
62 |
+
* Backup Code as a cloud service
|
63 |
+
|
64 |
+
= 5.4.41 =
|
65 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
66 |
+
* Minor UI Changes and Bug Fixes
|
67 |
+
|
68 |
+
= 5.4.40 =
|
69 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
70 |
+
* XSS Vulnerability fix
|
71 |
+
* Added video link for miniOrange Authenticator
|
72 |
+
|
73 |
+
= 5.4.39 =
|
74 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
75 |
+
* Added 2FA setup using user profile option
|
76 |
+
* Support Form UI
|
77 |
+
* 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
|
78 |
+
* Minor bug fixes
|
79 |
+
|
80 |
+
= 5.4.38 =
|
81 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
82 |
+
* Added 2FA setup using user profile option
|
83 |
+
* Setup Wizard for configuring 2FA
|
84 |
+
* 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
|
85 |
+
* Minor bug fixes
|
86 |
+
|
87 |
+
= 5.4.37 =
|
88 |
+
* Google Authenticator - Two factor Authentication (2FA, OTP) :
|
89 |
+
* Minor bug fixes
|
90 |
+
|
91 |
+
= 5.4.36 =
|
92 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
93 |
+
* Remove extra comma
|
94 |
+
|
95 |
+
= 5.4.35 =
|
96 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
97 |
+
* Minor bug fixes
|
98 |
+
|
99 |
+
= 5.4.34 =
|
100 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
101 |
+
* New User Interface for easy setup
|
102 |
+
* Added developers logs
|
103 |
+
* Minor fixes
|
104 |
+
|
105 |
+
= 5.4.33 =
|
106 |
+
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
107 |
+
* New pricing page for two factor authentication
|
108 |
+
* Added Duo Authenticator push notification method.
|
109 |
+
* WooCommerce redirect issue fix.
|
110 |
+
|
111 |
+
= 5.4.32 =
|
112 |
+
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
113 |
+
* Replaced sessions with transient.
|
114 |
+
|
115 |
+
= 5.4.31 =
|
116 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
117 |
+
* OTP over Email as two factor fix
|
118 |
+
* Low Email transaction alert fix
|
119 |
+
|
120 |
+
= 5.4.30 =
|
121 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
122 |
+
* Feedback changes
|
123 |
+
|
124 |
+
= 5.4.29 =
|
125 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
126 |
+
* Session independent Google Authenticator
|
127 |
+
* Session independent KBA
|
128 |
+
* Feedback improvement for two factor authentication plugin
|
129 |
+
|
130 |
+
= 5.4.28 =
|
131 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
132 |
+
* New year sale update
|
133 |
+
|
134 |
+
= 5.4.27 =
|
135 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
136 |
+
* New year sale
|
137 |
+
* WordPress 5.6 compatibility fix
|
138 |
+
* WAF fixes
|
139 |
+
* Real time IP blocking
|
140 |
+
* IP based user login
|
141 |
+
* New feature release notification
|
142 |
+
|
143 |
+
= 5.4.26 =
|
144 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
145 |
+
* Christmas Offer
|
146 |
+
|
147 |
+
= 5.4.25 =
|
148 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
149 |
+
* OTP over Telegram Fixes
|
150 |
+
|
151 |
+
= 5.4.24 =
|
152 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
153 |
+
* OTP over Whatsapp
|
154 |
+
* OTP over Telegram
|
155 |
+
* Feedback form changes
|
156 |
+
|
157 |
+
= 5.4.23 =
|
158 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
159 |
+
* Call support with technical team
|
160 |
+
* Email and SMS transaction sync
|
161 |
+
* Feedback form on network deactivate
|
162 |
+
* Enable/Disable 2FA fix
|
163 |
+
* 2FA added for super admin role
|
164 |
+
|
165 |
+
= 5.4.22 =
|
166 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
167 |
+
* Backup Codes
|
168 |
+
* Sanitization and JS improvements
|
169 |
+
* SMS and Email Sync
|
170 |
+
* Whatsapp based Two factor in Premium plugin
|
171 |
+
* Telegram based Two factor in Premium plugin
|
172 |
+
|
173 |
+
= 5.4.21 =
|
174 |
+
* Google Authenticator - Two Factor Authentication (2FA, SMS) :
|
175 |
+
* Sanitization of some input values.
|
176 |
+
|
177 |
+
= 5.4.20 =
|
178 |
+
* Google Authenticator - Two Factor Authentication (2FA, SMS) :
|
179 |
+
* Google Authenticator Qr code fix.
|
180 |
+
* My theme login Login fix.
|
181 |
+
|
182 |
+
= 5.4.19 =
|
183 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
|
184 |
+
|
185 |
+
= 5.4.18 =
|
186 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
187 |
+
* Added missing file
|
188 |
+
|
189 |
+
= 5.4.17 =
|
190 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
191 |
+
*Digimember Form Support
|
192 |
+
*Memberpress Form Support
|
193 |
+
*SMS Verification Support
|
194 |
+
*OTP Verification on WooCommerce Registration
|
195 |
+
|
196 |
+
= 5.4.16 =
|
197 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
|
198 |
+
|
199 |
+
= 5.4.15 =
|
200 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
201 |
+
* Theme My Login plugin Support
|
202 |
+
* Ultimate Member Registration Support
|
203 |
+
* WooCommerce Registration Support
|
204 |
+
* Ultimate Member Redirect
|
205 |
+
* Restrict Content Pro Login and Registration
|
206 |
+
|
207 |
+
= 5.4.14 =
|
208 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
|
209 |
+
|
210 |
+
= 5.4.13 =
|
211 |
+
* Google Authenticator - Two Factor Authentication (2FA, TFA) : Support Form Improvement.
|
212 |
+
|
213 |
+
= 5.4.11 =
|
214 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
|
215 |
+
|
216 |
+
= 5.4.9 =
|
217 |
+
* Google Authenticator - Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
|
218 |
+
|
219 |
+
= 5.4.8 =
|
220 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
|
221 |
+
|
222 |
+
= 5.4.7 =
|
223 |
+
* Google Authenticator - Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
|
224 |
+
|
225 |
+
= 5.4.6 =
|
226 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
|
227 |
+
|
228 |
+
= 5.4.5 =
|
229 |
+
* Google Authenticator - Two Factor Authentication (2FA, OTP) : Security and MFA UI updates.
|
230 |
+
|
231 |
+
= 5.4.4 =
|
232 |
+
* Google Authenticator - Two Factor Authentication (2FA, TFA) : Two Factor : WooCommerce login page integration.
|
233 |
+
|
234 |
+
= 5.4.3 =
|
235 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA) : Session issue fix for customers using Two Factor.
|
236 |
+
|
237 |
+
= 5.4.2 =
|
238 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA) : Warning for cloud customer moving to on-premise Two factor
|
239 |
+
|
240 |
+
= 5.4.1 =
|
241 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Headers sent issue is security firewall.
|
242 |
+
|
243 |
+
= 5.4.0 =
|
244 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convenience.
|
245 |
+
|
246 |
+
= 5.3.26 =
|
247 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
|
248 |
+
|
249 |
+
= 5.3.25 =
|
250 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
|
251 |
+
|
252 |
+
= 5.3.24 =
|
253 |
+
* Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
|
254 |
+
|
255 |
+
= 5.3.23 =
|
256 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
|
257 |
+
* Disable 2fa on WooCommerce login.
|
258 |
+
* Login with Username only fix.
|
259 |
+
|
260 |
+
= 5.3.22 =
|
261 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
|
262 |
+
|
263 |
+
= 5.3.21 =
|
264 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
|
265 |
+
|
266 |
+
= 5.3.20 =
|
267 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
|
268 |
+
|
269 |
+
= 5.3.19 =
|
270 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
|
271 |
+
|
272 |
+
= 5.3.18 =
|
273 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Antivirus and Firewall : Fix Scan.
|
274 |
+
|
275 |
+
= 5.3.17 =
|
276 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
|
277 |
+
|
278 |
+
= 5.3.16 =
|
279 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
|
280 |
+
|
281 |
+
= 5.3.15 =
|
282 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
|
283 |
+
|
284 |
+
= 5.3.14 =
|
285 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
|
286 |
+
|
287 |
+
= 5.3.13 =
|
288 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
|
289 |
+
|
290 |
+
= 5.3.12 =
|
291 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : backup table fix.
|
292 |
+
|
293 |
+
= 5.3.11 =
|
294 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
|
295 |
+
|
296 |
+
= 5.3.10 =
|
297 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
|
298 |
+
|
299 |
+
= 5.3.9 =
|
300 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
|
301 |
+
|
302 |
+
= 5.3.8 =
|
303 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
|
304 |
+
|
305 |
+
= 5.3.7 =
|
306 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Security : Two factor login with username fix.
|
307 |
+
|
308 |
+
= 5.3.6 =
|
309 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Anti virus zip file fix.
|
310 |
+
|
311 |
+
= 5.3.5 =
|
312 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
|
313 |
+
|
314 |
+
= 5.3.4 =
|
315 |
+
* Google Authenticator - Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
|
316 |
+
|
317 |
+
= 5.3.3 =
|
318 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
|
319 |
+
|
320 |
+
= 5.3.2 =
|
321 |
+
* Google Authenticator - Two Factor Authentication (2FA) : File Changes.
|
322 |
+
|
323 |
+
= 5.3.1 =
|
324 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
|
325 |
+
|
326 |
+
= 5.3.0 =
|
327 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
|
328 |
+
|
329 |
+
= 5.2.6 =
|
330 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
|
331 |
+
|
332 |
+
= 5.2.5 =
|
333 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote posts.
|
334 |
+
|
335 |
+
= 5.2.4 =
|
336 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unnecessary files.
|
337 |
+
|
338 |
+
= 5.2.3 =
|
339 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
|
340 |
+
|
341 |
+
= 5.2.2 =
|
342 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
|
343 |
+
:
|
344 |
+
= 5.2.1 =
|
345 |
+
* Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
|
346 |
+
|
347 |
+
= 5.2.0 =
|
348 |
+
* Google Authenticator - Two Factor Authentication (2FA) : UI changes with more description.
|
349 |
+
|
350 |
+
= 5.1.22 =
|
351 |
+
* Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
|
352 |
+
|
353 |
+
= 5.1.21 =
|
354 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Login Redirect.
|
355 |
+
|
356 |
+
= 5.1.20 =
|
357 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
|
358 |
+
|
359 |
+
= 5.1.19 =
|
360 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitoring, IP blocking and login transaction report.
|
361 |
+
|
362 |
+
= 5.1.18 =
|
363 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
|
364 |
+
|
365 |
+
= 5.1.17 =
|
366 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
|
367 |
+
|
368 |
+
= 5.1.16 =
|
369 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Login redirect fix.
|
370 |
+
|
371 |
+
= 5.1.15 =
|
372 |
+
* Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
|
373 |
+
|
374 |
+
= 5.1.14 =
|
375 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
|
376 |
+
|
377 |
+
= 5.1.12 =
|
378 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Removing redundant code.
|
379 |
+
|
380 |
+
= 5.1.11 =
|
381 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Password Pattern Fix.
|
382 |
+
|
383 |
+
= 5.1.10 =
|
384 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Javascript Error fixes.
|
385 |
+
|
386 |
+
= 5.1.9 =
|
387 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added visual tour and security fixes.
|
388 |
+
|
389 |
+
= 5.1.8 =
|
390 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix for Validation.
|
391 |
+
|
392 |
+
= 5.1.7 =
|
393 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error after Update.
|
394 |
+
|
395 |
+
= 5.1.6 =
|
396 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error.
|
397 |
+
|
398 |
+
= 5.1.5 =
|
399 |
+
* Google Authenticator - Two Factor Authentication (2FA) : UI changes.
|
400 |
+
|
401 |
+
= 5.1.4 =
|
402 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
|
403 |
+
|
404 |
+
= 5.1.3 =
|
405 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
|
406 |
+
|
407 |
+
= 5.1.2 =
|
408 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Changes in registration flow.
|
409 |
+
|
410 |
+
= 5.1.1 =
|
411 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
|
412 |
+
|
413 |
+
= 5.1.0 =
|
414 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added new user plans
|
415 |
+
|
416 |
+
= 5.0.17 =
|
417 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
|
418 |
+
|
419 |
+
= 5.0.16 =
|
420 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fixes.
|
421 |
+
|
422 |
+
= 5.0.15 =
|
423 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
|
424 |
+
|
425 |
+
= 5.0.14 =
|
426 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug Fixes.
|
427 |
+
|
428 |
+
= 5.0.13 =
|
429 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
|
430 |
+
|
431 |
+
= 5.0.12 =
|
432 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added GDPR Compliance.
|
433 |
+
|
434 |
+
= 5.0.11 =
|
435 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Readme Update.
|
436 |
+
|
437 |
+
= 5.0.10 =
|
438 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added Proxy Setup feature.
|
439 |
+
|
440 |
+
= 5.0.9 =
|
441 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
|
442 |
+
|
443 |
+
= 5.0.8 =
|
444 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
|
445 |
+
|
446 |
+
= 5.0.7 =
|
447 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
|
448 |
+
|
449 |
+
= 5.0.6 =
|
450 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
|
451 |
+
|
452 |
+
= 5.0.5 =
|
453 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
|
454 |
+
|
455 |
+
= 5.0.4 =
|
456 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
|
457 |
+
|
458 |
+
= 5.0.3 =
|
459 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor fix for removing warings.
|
460 |
+
|
461 |
+
= 5.0.2 =
|
462 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
|
463 |
+
|
464 |
+
= 5.0.1 =
|
465 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
|
466 |
+
|
467 |
+
= 5.0.0 =
|
468 |
+
* Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
|
469 |
+
* This is a major release.
|
470 |
+
|
471 |
+
= 4.6.2 =
|
472 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
|
473 |
+
|
474 |
+
= 4.6.1 =
|
475 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
|
476 |
+
|
477 |
+
= 4.5.9 =
|
478 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
|
479 |
+
|
480 |
+
= 4.5.8 =
|
481 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Tested up to 4.9.4 and Removed External links.
|
482 |
+
|
483 |
+
= 4.5.7 =
|
484 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
|
485 |
+
|
486 |
+
= 4.5.6 =
|
487 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Tested up to Wordpress 4.9.
|
488 |
+
|
489 |
+
= 4.5.5 =
|
490 |
+
* Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
|
491 |
+
|
492 |
+
= 4.5.4 =
|
493 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action errors.
|
494 |
+
|
495 |
+
= 4.5.3 =
|
496 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
|
497 |
+
|
498 |
+
= 4.5.2 =
|
499 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Readme Update: Description Update
|
500 |
+
|
501 |
+
= 4.5.1 =
|
502 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Updated the new Google Authenticator App's link and the 'How to Setup Tab' tab.
|
503 |
+
|
504 |
+
= 4.5.0 =
|
505 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
|
506 |
+
|
507 |
+
= 4.4.9 =
|
508 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions only when authentication method is OTP over SMS.
|
509 |
+
|
510 |
+
= 4.4.8 =
|
511 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions. Fixed Remember Device flow and confliction with themes. Added support for multiple instances of wordpress.
|
512 |
+
|
513 |
+
= 4.4.7 =
|
514 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Updated the error message for 2 factor configuration.
|
515 |
+
|
516 |
+
= 4.4.6 =
|
517 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
|
518 |
+
|
519 |
+
= 4.4.5 =
|
520 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
|
521 |
+
|
522 |
+
= 4.4.4 =
|
523 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Added alert messages for OTP over SMS usages.
|
524 |
+
|
525 |
+
= 4.4.3 =
|
526 |
+
* Google Authenticator - Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
|
527 |
+
|
528 |
+
= 4.4 =
|
529 |
+
* Google Authenticator - Two Factor Authentication (2FA):
|
530 |
+
* Note: This is a very important update having altogether a new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@xecurify.com
|
531 |
+
* Compatibility with Limit Login Attempts.
|
532 |
+
* New User Interface for login.
|
533 |
+
|
534 |
+
= 4.3.2 =
|
535 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Revised licensing cost for users.
|
536 |
+
|
537 |
+
= 4.3.1 =
|
538 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible upto 4.7
|
539 |
+
|
540 |
+
= 4.3.0 =
|
541 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
|
542 |
+
|
543 |
+
= 4.2.9 =
|
544 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Tested up to WordPress 4.6.
|
545 |
+
|
546 |
+
= 4.2.7 =
|
547 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warning fix in the last version for some of the users.
|
548 |
+
|
549 |
+
= 4.2.6 =
|
550 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
|
551 |
+
|
552 |
+
= 4.2.5 =
|
553 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Improved the session handler.
|
554 |
+
|
555 |
+
= 4.2.4 =
|
556 |
+
* Google Authenticator - Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
|
557 |
+
|
558 |
+
= 4.2.3 =
|
559 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
560 |
+
* Improved Error handling during Account Creation.
|
561 |
+
|
562 |
+
= 4.2.2 =
|
563 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
564 |
+
* Registration Flow fixes
|
565 |
+
|
566 |
+
= 4.2.1 =
|
567 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
568 |
+
* Change of status during login with phone flow and tested with WP 4.5
|
569 |
+
|
570 |
+
= 4.2.0 =
|
571 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
572 |
+
* Mark as tested on Wordpress 4.5
|
573 |
+
|
574 |
+
= 4.1.8 =
|
575 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
576 |
+
* Changed the location of images used for the demo. Now being loaded from the site having SSL certificate.
|
577 |
+
|
578 |
+
= 4.1.7 =
|
579 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
580 |
+
* Improved Error Handling for Remember Device.
|
581 |
+
|
582 |
+
= 4.1.6 =
|
583 |
+
* Google Authenticator - Two Factor Authentication ( 2 Factor ):
|
584 |
+
* Licensing Plan Updated.
|
585 |
+
|
586 |
+
= 4.1.5 =
|
587 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
588 |
+
* Added Forgot Password functionality for miniOrange customer admin.
|
589 |
+
* Added warning message for the users who are using lower version of php.
|
590 |
+
* Added functionality to change the customer email.
|
591 |
+
|
592 |
+
= 4.1.4 =
|
593 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
594 |
+
* Added an option for admin to enable or disable login for XML-RPC supported applications.
|
595 |
+
|
596 |
+
= 4.1.3 =
|
597 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ):
|
598 |
+
* Fixed CSS Conflict with the plugins in the admin dashboard.
|
599 |
+
* More intuitive UI for WooCommerce login.
|
600 |
+
* Tested front-end login with themes like wordpress default theme,
|
601 |
+
customize theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
|
602 |
+
|
603 |
+
= 4.1.2 =
|
604 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
|
605 |
+
* Fixed CSS conflict with front-end of site if WooCommerce is not enabled.
|
606 |
+
|
607 |
+
= 4.1.1 =
|
608 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
|
609 |
+
|
610 |
+
= 4.1.0 =
|
611 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
|
612 |
+
multisite support
|
613 |
+
Custom login redirection
|
614 |
+
Authy 2-Factor Authentication as separate authentication method
|
615 |
+
|
616 |
+
= 4.0.6 = Google Authenticator - Two Factor Authentication Added multisite support and custom redirection after login feature.
|
617 |
+
|
618 |
+
= 4.0.5 = Google Authenticator - Two Factor Authentication Login into third party apps which support XML-RPC.
|
619 |
+
|
620 |
+
= 4.0.4 = Google Authenticator - Two Factor Authentication Added a check of KBA configuration from mobile login.
|
621 |
+
|
622 |
+
= 4.0.3 = Google Authenticator - Two Factor Authentication Added Support for Authy 2-Factor Authentication App.
|
623 |
+
|
624 |
+
= 4.0.2 = Google Authenticator - Two Factor Authentication Added a check for selection of unique questions during KBA setup .
|
625 |
+
|
626 |
+
= 4.0.1 = Bug Fix Google Authenticator - 2 Factor
|
627 |
+
|
628 |
+
= 4.0 =
|
629 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
|
630 |
+
* KBA as backup method.
|
631 |
+
* mobile browser support.
|
632 |
+
* more intuitive UI for WooCommerce login.
|
633 |
+
|
634 |
+
= 3.8 =
|
635 |
+
* Google Authenticator - Two Factor Authentication ( 2 Factor ): Bug Fix for roles.
|
636 |
+
|
637 |
+
= 3.7 =
|
638 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Activation of two factor role wise.
|
639 |
+
|
640 |
+
= 3.6 =
|
641 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): email verification in inline registration flow for all users.
|
642 |
+
More descriptive setup messages and UI changes.
|
643 |
+
|
644 |
+
= 3.5 =
|
645 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Provided mobile login support.
|
646 |
+
|
647 |
+
= 3.4 =
|
648 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Features added
|
649 |
+
* Inline registration flow for users.
|
650 |
+
* Security Questions (KBA) as additional method
|
651 |
+
* Alternate way of user identification in customer creation.
|
652 |
+
* premium customizable features.
|
653 |
+
|
654 |
+
= 3.3 =
|
655 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Fix the issue of session for some versions of php.
|
656 |
+
|
657 |
+
= 3.2 =
|
658 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Fix for device-id compatibility.
|
659 |
+
|
660 |
+
= 3.1 =
|
661 |
+
* Google Authenticator - Two Factor Authentication ( 2 Factor ): Fix for 2FA ShortCode.
|
662 |
+
|
663 |
+
= 3.0 =
|
664 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Features added
|
665 |
+
* Google Authenticator.
|
666 |
+
* Device Id (Remember device).
|
667 |
+
* Choice given to admin to enable specific authentication methods for users.
|
668 |
+
* Two Factor support for WooCommerce theme.
|
669 |
+
* Short Code for various customized fronted login.
|
670 |
+
* More intuitive UI and descriptive instructions.
|
671 |
+
|
672 |
+
= 2.6 =
|
673 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues of user session with other security plugins.
|
674 |
+
|
675 |
+
= 2.5 =
|
676 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues with All In One WP Security & Firewall plugin.
|
677 |
+
|
678 |
+
= 2.4 =
|
679 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): UI fixes for admin media library dashboard.
|
680 |
+
|
681 |
+
= 2.3 =
|
682 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): More descriptive setup messages, more intuitive UI.
|
683 |
+
|
684 |
+
= 2.2 =
|
685 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Fixed css issues for existing users
|
686 |
+
|
687 |
+
= 2.1 =
|
688 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Added support for multiple Two Factor Choices like OTP Over SMS, Phone Call Verification, Push Notification, Soft Token (like Google Authenticator Code), Email Verification, etc.
|
689 |
+
|
690 |
+
= 2.0 =
|
691 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Added login with password plus second factor feature.
|
692 |
+
|
693 |
+
= 1.8 =
|
694 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Added feature of different login form choice,test authentication and help for configuration and setup.
|
695 |
+
|
696 |
+
= 1.7 =
|
697 |
+
* Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Modifying login screen adaptable to user's login form
|
698 |
+
|
699 |
+
= 1.6 =
|
700 |
+
* Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): fetching 2 factor configuration when activating the plugin after deactivating it.
|
701 |
+
|
702 |
+
= 1.5 =
|
703 |
+
* Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Login issues and password save issues resolved
|
704 |
+
|
705 |
+
= 1.4 =
|
706 |
+
* Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Authentication was not working on some version of php.
|
707 |
+
|
708 |
+
= 1.3 =
|
709 |
+
* Google Authenticator - Two Factor Authentication Bug Fixes
|
710 |
+
|
711 |
+
= 1.2 =
|
712 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Added 2 factor for all users along with forgot phone functionality.
|
713 |
+
|
714 |
+
= 1.1 =
|
715 |
+
* Google Authenticator - Two Factor Authentication ( 2FA ): Added email ID verification during registration.
|
716 |
+
|
717 |
+
= 1.0.0 =
|
718 |
+
* First version of Google Authenticator - Two Factor Authentication ( 2FA ) plugin supported with mobile authentication for admins only.
|
controllers/account.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
global $moWpnsUtility,$mo2f_dirName,$Mo2fdbQueries;
|
4 |
|
5 |
-
if
|
6 |
{
|
7 |
$option = trim($_POST['option']);
|
8 |
switch($option)
|
@@ -280,7 +280,7 @@
|
|
280 |
if ( ! empty( $mo2f_customer_selected_plan ) ) {
|
281 |
delete_option( 'mo2f_customer_selected_plan' );
|
282 |
|
283 |
-
if (MoWpnsUtility::get_mo2f_db_option('mo2f_planname', '
|
284 |
{
|
285 |
?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
|
286 |
}
|
2 |
|
3 |
global $moWpnsUtility,$mo2f_dirName,$Mo2fdbQueries;
|
4 |
|
5 |
+
if(isset($_POST['option']))
|
6 |
{
|
7 |
$option = trim($_POST['option']);
|
8 |
switch($option)
|
280 |
if ( ! empty( $mo2f_customer_selected_plan ) ) {
|
281 |
delete_option( 'mo2f_customer_selected_plan' );
|
282 |
|
283 |
+
if (MoWpnsUtility::get_mo2f_db_option('mo2f_planname', 'site_option') == 'addon_plan')
|
284 |
{
|
285 |
?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
|
286 |
}
|
controllers/content-protection.php
CHANGED
@@ -25,6 +25,7 @@ $enable_recaptcha = get_option('mo_wpns_enable_comment_recaptcha') ? "chec
|
|
25 |
$htaccess_file = get_option('mo2f_htaccess_file') ? "checked" : "";
|
26 |
$restAPI = get_site_option('mo2f_restrict_restAPI') ? "checked" : "";
|
27 |
$test_recaptcha_url = "";
|
|
|
28 |
$wp_config = site_url().'/wp-config.php';
|
29 |
$wp_uploads = get_site_url().'/wp-content/uploads';
|
30 |
$plugin_editor = get_site_url().'/wp-admin/plugin-editor.php';
|
25 |
$htaccess_file = get_option('mo2f_htaccess_file') ? "checked" : "";
|
26 |
$restAPI = get_site_option('mo2f_restrict_restAPI') ? "checked" : "";
|
27 |
$test_recaptcha_url = "";
|
28 |
+
$test_recaptcha_url_v3 = "";
|
29 |
$wp_config = site_url().'/wp-config.php';
|
30 |
$wp_uploads = get_site_url().'/wp-content/uploads';
|
31 |
$plugin_editor = get_site_url().'/wp-admin/plugin-editor.php';
|
controllers/dashboard.php
CHANGED
@@ -20,4 +20,4 @@
|
|
20 |
$total_malicious=($total_malicious/1000);
|
21 |
$total_malicious= round($total_malicious,1)."k";
|
22 |
}
|
23 |
-
|
20 |
$total_malicious=($total_malicious/1000);
|
21 |
$total_malicious= round($total_malicious,1)."k";
|
22 |
}
|
23 |
+
include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'dashboard.php';
|
controllers/duo_authenticator/duo_authenticator_ajax.php
CHANGED
@@ -53,10 +53,10 @@ class Mo_2f_duo_authenticator
|
|
53 |
$user_email = $current_user->user_email;
|
54 |
|
55 |
$device['device'] = 'auto';
|
56 |
-
|
57 |
-
$auth_response = mo2f_duo_auth( $user_email,'push',$device , $skey, $ikey, $host,true);
|
58 |
-
|
59 |
|
|
|
|
|
|
|
60 |
if(isset($auth_response['response']['response']['result']) && $auth_response['response']['response']['result'] == 'allow'){
|
61 |
|
62 |
wp_send_json('SUCCESS');
|
53 |
$user_email = $current_user->user_email;
|
54 |
|
55 |
$device['device'] = 'auto';
|
|
|
|
|
|
|
56 |
|
57 |
+
$auth_response = mo2f_duo_auth( $user_email,'push',$device , $skey, $ikey, $host,true);
|
58 |
+
|
59 |
+
|
60 |
if(isset($auth_response['response']['response']['result']) && $auth_response['response']['response']['result'] == 'allow'){
|
61 |
|
62 |
wp_send_json('SUCCESS');
|
controllers/feedback_footer.php
CHANGED
@@ -7,7 +7,8 @@
|
|
7 |
switch($_POST['option'])
|
8 |
{
|
9 |
case "mo_wpns_send_query":
|
10 |
-
|
|
|
11 |
}
|
12 |
}
|
13 |
|
@@ -19,29 +20,38 @@
|
|
19 |
/* SUPPORT FORM RELATED FUNCTIONS */
|
20 |
|
21 |
//Function to handle support form submit
|
22 |
-
function wpns_handle_feedback_footer_form($email,$query,$phone)
|
23 |
-
{
|
24 |
-
|
25 |
-
if( empty($email) || empty($query) )
|
26 |
-
{
|
27 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
|
32 |
-
$query = sanitize_text_field( $query );
|
33 |
-
$email = sanitize_text_field( $email );
|
34 |
-
$phone = sanitize_text_field( $phone );
|
35 |
-
$contact_us = new MocURL();
|
36 |
-
$submited = json_decode($contact_us->submit_contact_us($email, $phone, $query),true);
|
37 |
-
|
38 |
-
if(json_last_error() == JSON_ERROR_NONE && $submited)
|
39 |
-
{
|
40 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
41 |
-
return;
|
42 |
-
}
|
43 |
-
|
44 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
45 |
-
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_footer.php';
|
7 |
switch($_POST['option'])
|
8 |
{
|
9 |
case "mo_wpns_send_query":
|
10 |
+
wpns_handle_support_form_new($_POST['query_email'],$_POST['query'],$_POST['query_phone']);
|
11 |
+
break;
|
12 |
}
|
13 |
}
|
14 |
|
20 |
/* SUPPORT FORM RELATED FUNCTIONS */
|
21 |
|
22 |
//Function to handle support form submit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
+
if(empty($email))
|
25 |
+
$email = $current_user->user_email;
|
26 |
+
|
27 |
+
function wpns_handle_support_form_new($email,$query,$phone)
|
28 |
+
{
|
29 |
+
$send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
|
30 |
+
|
31 |
+
if(empty($email) || empty($query)){
|
32 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
|
33 |
+
return;
|
34 |
+
}
|
35 |
+
|
36 |
+
$query = sanitize_text_field( $query );
|
37 |
+
$email = sanitize_text_field( $email );
|
38 |
+
$phone = sanitize_text_field( $phone );
|
39 |
+
$contact_us = new MocURL();
|
40 |
+
|
41 |
+
if($send_configuration)
|
42 |
+
$query = $query.MoWpnsUtility::mo_2fa_send_configuration(true);
|
43 |
+
else
|
44 |
+
$query = $query.MoWpnsUtility::mo_2fa_send_configuration();
|
45 |
+
|
46 |
+
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
47 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
48 |
+
} else {
|
49 |
+
$submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
|
50 |
+
}
|
51 |
+
if(json_last_error() == JSON_ERROR_NONE && $submited){
|
52 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
53 |
+
}else{
|
54 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
55 |
+
}
|
56 |
+
}
|
57 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_footer.php';
|
controllers/login-security.php
CHANGED
@@ -27,9 +27,6 @@
|
|
27 |
wpns_handle_enable_strong_password($_POST); break;
|
28 |
case "mo_wpns_rba_enable_2fa":
|
29 |
wpns_handle_enable_rba(); break;
|
30 |
-
|
31 |
-
case "mo_wpns_activate_recaptcha":
|
32 |
-
wpns_handle_enable_recaptcha($_POST); break;
|
33 |
case "mo_wpns_recaptcha_settings":
|
34 |
wpns_handle_recaptcha_configuration($_POST); break;
|
35 |
case "mo_wpns_enable_rename_login_url":
|
@@ -48,12 +45,26 @@
|
|
48 |
|
49 |
$enforce_strong_password= MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option') ? "checked" : "";
|
50 |
$attack_delay = get_option('mo_wpns_slow_down_attacks_delay') ? get_option('mo_wpns_slow_down_attacks_delay'): 2 ;
|
51 |
-
$google_recaptcha = get_option('mo_wpns_activate_recaptcha') ? "checked"
|
52 |
-
|
|
|
|
|
53 |
$test_recaptcha_url = add_query_arg( array('option'=>'testrecaptchaconfig'), $_SERVER['REQUEST_URI'] );
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
$captcha_site_key = get_option('mo_wpns_recaptcha_site_key');
|
56 |
-
$captcha_secret_key = get_option('mo_wpns_recaptcha_secret_key');
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
$captcha_login = get_option('mo_wpns_activate_recaptcha_for_login') ? "checked" : "";
|
58 |
$captcha_reg = get_option('mo_wpns_activate_recaptcha_for_registration') ? "checked" : "";
|
59 |
|
@@ -183,21 +194,8 @@
|
|
183 |
|
184 |
|
185 |
//Function to handle recaptcha configuration
|
186 |
-
|
187 |
-
|
188 |
-
$enable_login= isset($postData['mo_wpns_activate_recaptcha_for_login']) ? true : false;
|
189 |
-
$enable_reg = isset($postData['mo_wpns_activate_recaptcha_for_registration']) ? true : false;
|
190 |
-
$site_key = sanitize_text_field($_POST['mo_wpns_recaptcha_site_key']);
|
191 |
-
$secret_key = sanitize_text_field($_POST['mo_wpns_recaptcha_secret_key']);
|
192 |
-
|
193 |
-
update_option( 'mo_wpns_activate_recaptcha_for_login' , $enable_login );
|
194 |
-
update_option( 'mo_wpns_recaptcha_site_key' , $site_key );
|
195 |
-
update_option( 'mo_wpns_recaptcha_secret_key' , $secret_key );
|
196 |
-
update_option( 'mo_wpns_activate_recaptcha_for_registration', $enable_reg );
|
197 |
-
update_option( 'mo_wpns_activate_recaptcha_for_woocommerce_login' , $enable_login );
|
198 |
-
update_option( 'mo_wpns_activate_recaptcha_for_woocommerce_registration', $enable_reg );
|
199 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('RECAPTCHA_ENABLED'),'SUCCESS');
|
200 |
-
}
|
201 |
|
202 |
|
203 |
function wpns_handle_enable_rename_login_url($postData){
|
27 |
wpns_handle_enable_strong_password($_POST); break;
|
28 |
case "mo_wpns_rba_enable_2fa":
|
29 |
wpns_handle_enable_rba(); break;
|
|
|
|
|
|
|
30 |
case "mo_wpns_recaptcha_settings":
|
31 |
wpns_handle_recaptcha_configuration($_POST); break;
|
32 |
case "mo_wpns_enable_rename_login_url":
|
45 |
|
46 |
$enforce_strong_password= MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option') ? "checked" : "";
|
47 |
$attack_delay = get_option('mo_wpns_slow_down_attacks_delay') ? get_option('mo_wpns_slow_down_attacks_delay'): 2 ;
|
48 |
+
$google_recaptcha = get_option('mo_wpns_activate_recaptcha') ? "checked": "";
|
49 |
+
|
50 |
+
|
51 |
+
|
52 |
$test_recaptcha_url = add_query_arg( array('option'=>'testrecaptchaconfig'), $_SERVER['REQUEST_URI'] );
|
53 |
+
|
54 |
+
|
55 |
+
$test_recaptcha_url_v3 = add_query_arg( array('option'=>'testrecaptchaconfig3'), $_SERVER['REQUEST_URI'] );
|
56 |
+
$captcha_url_v2 = 'https://www.google.com/recaptcha/admin#list';
|
57 |
+
$captcha_url_v3 = 'https://www.google.com/recaptcha/admin/create';
|
58 |
+
|
59 |
+
if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v2'){
|
60 |
$captcha_site_key = get_option('mo_wpns_recaptcha_site_key');
|
61 |
+
$captcha_secret_key = get_option('mo_wpns_recaptcha_secret_key');}
|
62 |
+
|
63 |
+
else if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v3'){
|
64 |
+
$captcha_site_key = get_option('mo_wpns_recaptcha_site_key_v3');
|
65 |
+
$captcha_secret_key = get_option('mo_wpns_recaptcha_secret_key_v3');
|
66 |
+
}
|
67 |
+
|
68 |
$captcha_login = get_option('mo_wpns_activate_recaptcha_for_login') ? "checked" : "";
|
69 |
$captcha_reg = get_option('mo_wpns_activate_recaptcha_for_registration') ? "checked" : "";
|
70 |
|
194 |
|
195 |
|
196 |
//Function to handle recaptcha configuration
|
197 |
+
|
198 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
|
200 |
|
201 |
function wpns_handle_enable_rename_login_url($postData){
|
controllers/main_controller.php
CHANGED
@@ -4,63 +4,57 @@
|
|
4 |
|
5 |
$controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
include $controller . 'navbar.php';
|
11 |
-
include $controller . 'newtork_security_features.php';
|
12 |
|
13 |
-
|
14 |
-
|
15 |
|
16 |
-
|
17 |
-
include $controller . 'two-fa-intro.php';
|
18 |
-
else if($tour_started != 0)
|
19 |
-
include $controller . 'tour-model.php';
|
20 |
-
|
21 |
-
if( isset( $_GET[ 'page' ]))
|
22 |
-
{
|
23 |
-
switch($_GET['page'])
|
24 |
{
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
63 |
|
|
|
|
|
64 |
}
|
65 |
else
|
66 |
{
|
@@ -69,7 +63,7 @@
|
|
69 |
switch($_GET['page'])
|
70 |
{
|
71 |
case 'mo_2fa_two_fa':
|
72 |
-
|
73 |
|
74 |
}
|
75 |
|
@@ -78,36 +72,12 @@
|
|
78 |
}
|
79 |
if (isset( $_GET[ 'page' ])) {
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
{
|
87 |
-
include $controller . 'support.php';
|
88 |
-
}
|
89 |
}
|
|
|
90 |
?>
|
91 |
|
92 |
-
<!-- <script>
|
93 |
-
jQuery(document).ready(function(){
|
94 |
-
var nonce = "<?php //echo wp_create_nonce('wpns-quick-scan');?>";
|
95 |
-
var data={
|
96 |
-
'action':'mo_wpns_malware_redirect',
|
97 |
-
'call_type':'malware_scan_initiate',
|
98 |
-
'scan':'scan_start',
|
99 |
-
'scantype':'quick_scan',
|
100 |
-
'nonce': nonce
|
101 |
-
};
|
102 |
-
jQuery.post(ajaxurl, data, function(response){
|
103 |
-
jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
|
104 |
-
document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
|
105 |
-
jQuery('input[name="standard_scan_button"]').removeAttr('disabled');
|
106 |
-
document.getElementById('standard_scan_button').style.backgroundColor = '#20b2aa';
|
107 |
-
jQuery('input[name="custom_scan_button"]').removeAttr('disabled');
|
108 |
-
document.getElementById('custom_scan_button').style.backgroundColor = '#20b2aa';
|
109 |
-
document.getElementById("quick_scan_button").value = "Quick Scan";
|
110 |
-
});
|
111 |
-
});
|
112 |
-
</script> -->
|
113 |
-
|
4 |
|
5 |
$controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
|
6 |
|
7 |
+
include_once $controller . 'navbar.php';
|
8 |
+
if(current_user_can('administrator'))
|
9 |
+
{
|
|
|
|
|
10 |
|
11 |
+
include_once $controller . 'newtork_security_features.php';
|
|
|
12 |
|
13 |
+
if( isset( $_GET[ 'page' ]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
{
|
15 |
+
switch($_GET['page'])
|
16 |
+
{
|
17 |
+
case 'mo_2fa_dashboard':
|
18 |
+
include_once $controller . 'dashboard.php'; break;
|
19 |
+
case 'mo_2fa_login_and_spam':
|
20 |
+
include_once $controller . 'login-spam.php'; break;
|
21 |
+
case 'default':
|
22 |
+
include_once $controller . 'login-security.php'; break;
|
23 |
+
case 'mo_2fa_account':
|
24 |
+
include_once $controller . 'account.php'; break;
|
25 |
+
case 'mo_2fa_backup':
|
26 |
+
include_once $controller . 'backup'.DIRECTORY_SEPARATOR.'backup.php'; break;
|
27 |
+
case 'mo_2fa_upgrade':
|
28 |
+
include_once $controller . 'upgrade.php'; break;
|
29 |
+
case 'mo_2fa_waf':
|
30 |
+
include_once $controller . 'waf.php'; break;
|
31 |
+
case 'mo_2fa_blockedips':
|
32 |
+
include_once $controller . 'ip-blocking.php'; break;
|
33 |
+
case 'mo_2fa_advancedblocking':
|
34 |
+
include_once $controller . 'advanced-blocking.php'; break;
|
35 |
+
case 'mo_2fa_notifications':
|
36 |
+
include_once $controller . 'notification-settings.php'; break;
|
37 |
+
case 'mo_2fa_reports':
|
38 |
+
include_once $controller . 'reports.php'; break;
|
39 |
+
case 'mo_2fa_licensing':
|
40 |
+
include_once $controller . 'licensing.php'; break;
|
41 |
+
case 'mo_2fa_troubleshooting':
|
42 |
+
include_once $controller . 'troubleshooting.php'; break;
|
43 |
+
case 'mo_2fa_addons':
|
44 |
+
include_once $controller . 'addons.php'; break;
|
45 |
+
case 'mo_2fa_malwarescan':
|
46 |
+
include_once $controller . 'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware.php'; break;
|
47 |
+
case 'mo_2fa_two_fa':
|
48 |
+
include_once $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
49 |
+
case 'mo_2fa_request_demo':
|
50 |
+
include_once $controller . 'request_demo.php'; break;
|
51 |
+
case 'mo_2fa_request_offer':
|
52 |
+
include_once $controller . 'request_offer.php'; break;
|
53 |
+
case 'mo2f_trial':
|
54 |
+
include_once $controller . 'trial.php'; break;
|
55 |
|
56 |
+
}
|
57 |
+
}
|
58 |
}
|
59 |
else
|
60 |
{
|
63 |
switch($_GET['page'])
|
64 |
{
|
65 |
case 'mo_2fa_two_fa':
|
66 |
+
include_once $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
67 |
|
68 |
}
|
69 |
|
72 |
}
|
73 |
if (isset( $_GET[ 'page' ])) {
|
74 |
|
75 |
+
|
76 |
+
if (MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option') || $_GET[ 'page' ] == "mo_2fa_upgrade" || $_GET[ 'page' ] == "mo_2fa_addons" || $_GET['page'] == "mo_2fa_account"
|
77 |
+
|| $_GET['page']=="mo_2fa_waf" || $_GET['page']=="mo_2fa_login_and_spam" || $_GET['page']=="mo_2fa_dashboard")
|
78 |
+
{
|
79 |
+
include_once $controller . 'feedback_footer.php';
|
|
|
|
|
|
|
80 |
}
|
81 |
+
}
|
82 |
?>
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controllers/malware_scanner/malware_scan_ajax.php
CHANGED
@@ -8,6 +8,8 @@ class Mo_wpns_scan_malware
|
|
8 |
|
9 |
public function mo_wpns_malware_scanner_functions(){
|
10 |
add_action('wp_ajax_mo_wpns_malware_redirect', array( $this, 'mo_wpns_malware_redirect' ));
|
|
|
|
|
11 |
}
|
12 |
|
13 |
public function mo_wpns_malware_redirect(){
|
@@ -34,6 +36,7 @@ class Mo_wpns_scan_malware
|
|
34 |
case "malware_scan_terminate":
|
35 |
$this->mo_wpns_stop_scan();
|
36 |
break;
|
|
|
37 |
}
|
38 |
}
|
39 |
|
@@ -363,6 +366,11 @@ class Mo_wpns_scan_malware
|
|
363 |
wp_send_json('success');
|
364 |
}
|
365 |
|
|
|
|
|
|
|
|
|
|
|
366 |
function mo_wpns_get_scan_result(){
|
367 |
$decoded_scan_configuration=json_decode(get_site_option('mo_wpns_scan_status'));
|
368 |
$status=$decoded_scan_configuration->scan_progress;
|
8 |
|
9 |
public function mo_wpns_malware_scanner_functions(){
|
10 |
add_action('wp_ajax_mo_wpns_malware_redirect', array( $this, 'mo_wpns_malware_redirect' ));
|
11 |
+
|
12 |
+
|
13 |
}
|
14 |
|
15 |
public function mo_wpns_malware_redirect(){
|
36 |
case "malware_scan_terminate":
|
37 |
$this->mo_wpns_stop_scan();
|
38 |
break;
|
39 |
+
|
40 |
}
|
41 |
}
|
42 |
|
366 |
wp_send_json('success');
|
367 |
}
|
368 |
|
369 |
+
|
370 |
+
|
371 |
+
|
372 |
+
|
373 |
+
|
374 |
function mo_wpns_get_scan_result(){
|
375 |
$decoded_scan_configuration=json_decode(get_site_option('mo_wpns_scan_status'));
|
376 |
$status=$decoded_scan_configuration->scan_progress;
|
controllers/navbar.php
CHANGED
@@ -68,7 +68,8 @@
|
|
68 |
$dashboard_url = add_query_arg(array('page' => 'mo_2fa_dashboard' ), $_SERVER['REQUEST_URI']);
|
69 |
$upgrade_url = add_query_arg(array('page' => 'mo_2fa_upgrade' ), $_SERVER['REQUEST_URI']);
|
70 |
$request_demo_url = add_query_arg(array('page' => 'mo_2fa_request_demo' ), $_SERVER['REQUEST_URI']);
|
71 |
-
$request_offer_url = add_query_arg(array('page' => 'mo_2fa_request_offer' ), $_SERVER['REQUEST_URI']);
|
|
|
72 |
|
73 |
//dynamic
|
74 |
$logo_url = plugin_dir_url(dirname(__FILE__)) . 'includes/images/miniorange_logo.png';
|
68 |
$dashboard_url = add_query_arg(array('page' => 'mo_2fa_dashboard' ), $_SERVER['REQUEST_URI']);
|
69 |
$upgrade_url = add_query_arg(array('page' => 'mo_2fa_upgrade' ), $_SERVER['REQUEST_URI']);
|
70 |
$request_demo_url = add_query_arg(array('page' => 'mo_2fa_request_demo' ), $_SERVER['REQUEST_URI']);
|
71 |
+
$request_offer_url = add_query_arg(array('page' => 'mo_2fa_request_offer' ), $_SERVER['REQUEST_URI']);
|
72 |
+
$trial_url = add_query_arg( array('page' => 'mo2f_trial' ), $_SERVER['REQUEST_URI'] );
|
73 |
|
74 |
//dynamic
|
75 |
$logo_url = plugin_dir_url(dirname(__FILE__)) . 'includes/images/miniorange_logo.png';
|
controllers/request_christmas_offer.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
|
5 |
+
{
|
6 |
+
switch($_POST['option'])
|
7 |
+
{
|
8 |
+
case "mo_2FA_christmas_request_form":
|
9 |
+
wpns_handle_christmas_request_form($_POST); break;
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'request_christmas_offer.php';
|
14 |
+
|
15 |
+
function wpns_handle_christmas_request_form($post){
|
16 |
+
$nonce = isset($post['nonce'])?$post['nonce']:NULL;
|
17 |
+
$usecase = isset($post['mo_2FA_christmas_usecase'])? $post['mo_2FA_christmas_usecase']: NULL;
|
18 |
+
$email = isset($post['mo_2FA_christmas_email'])? $post['mo_2FA_christmas_email'] : NULL;
|
19 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-Request-christmas' ) ){
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
if(empty($usecase) || empty($email) )
|
23 |
+
{
|
24 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('DEMO_FORM_ERROR'),'SUCCESS');
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
else{
|
28 |
+
|
29 |
+
$usecase = sanitize_text_field( $usecase );
|
30 |
+
$email = sanitize_text_field( $email );
|
31 |
+
$query = 'REQUEST FOR CHRISTMAS OFFERS';
|
32 |
+
$query .= ' =>';
|
33 |
+
$query .= ' : ';
|
34 |
+
$query .= $usecase;
|
35 |
+
$contact_us = new MocURL();
|
36 |
+
$submited = json_decode($contact_us->submit_contact_us($email, '', $query),true);
|
37 |
+
|
38 |
+
if(json_last_error() == JSON_ERROR_NONE && $submited)
|
39 |
+
{
|
40 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
41 |
+
return;
|
42 |
+
}
|
43 |
+
else{
|
44 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
?>
|
controllers/request_offer.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
}
|
27 |
else{
|
28 |
|
29 |
-
$query = 'REQUEST FOR
|
30 |
$query .= ' =>';
|
31 |
$query .= ' : ';
|
32 |
$query .= $usecase;
|
26 |
}
|
27 |
else{
|
28 |
|
29 |
+
$query = 'REQUEST FOR SPECIAL OFFERS';
|
30 |
$query .= ' =>';
|
31 |
$query .= ' : ';
|
32 |
$query .= $usecase;
|
controllers/support.php
CHANGED
@@ -4,6 +4,8 @@
|
|
4 |
|
5 |
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
{
|
|
|
|
|
7 |
switch($_POST['option'])
|
8 |
{
|
9 |
case "mo_wpns_send_query":
|
@@ -27,13 +29,7 @@
|
|
27 |
//Function to handle support form submit
|
28 |
function wpns_handle_support_form($email,$query,$phone)
|
29 |
{
|
30 |
-
|
31 |
-
if(array_key_exists('2fa_setup_call',$_POST)===true){
|
32 |
-
$time_zone = sanitize_text_field($_POST['mo_2fa_setup_call_timezone']);
|
33 |
-
$call_date = sanitize_text_field($_POST['mo_2fa_setup_call_date']);
|
34 |
-
$call_time = sanitize_text_field($_POST['mo_2fa_setup_call_time']);
|
35 |
-
$call_setup = true;
|
36 |
-
}
|
37 |
$send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
|
38 |
if(empty($email) || empty($query)){
|
39 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
|
@@ -49,26 +45,11 @@
|
|
49 |
else
|
50 |
$query = $query.MoWpnsUtility::mo_2fa_send_configuration();
|
51 |
|
52 |
-
if($call_setup == false) {
|
53 |
-
$query = $query.'<br><br>';
|
54 |
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
55 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
56 |
} else {
|
57 |
$submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
|
58 |
}
|
59 |
-
} else {
|
60 |
-
|
61 |
-
$local_timezone='Asia/Kolkata';
|
62 |
-
$call_datetime=$call_date.$call_time;
|
63 |
-
$convert_datetime = strtotime ( $call_datetime );
|
64 |
-
$ist_date = new DateTime(date ( 'Y-m-d H:i:s' , $convert_datetime ), new DateTimeZone($time_zone));
|
65 |
-
$ist_date->setTimezone(new DateTimeZone($local_timezone));
|
66 |
-
|
67 |
-
|
68 |
-
$query = $query . '<br><br>' .'Meeting Details: '.'('.$time_zone.') '. date('d M, Y H:i',$convert_datetime). ' [IST Time -> '. $ist_date->format('d M, Y H:i').']'.'<br><br>';
|
69 |
-
$submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query, true),true);
|
70 |
-
|
71 |
-
}
|
72 |
if(json_last_error() == JSON_ERROR_NONE && $submited){
|
73 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
74 |
}else{
|
4 |
|
5 |
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
{
|
7 |
+
|
8 |
+
|
9 |
switch($_POST['option'])
|
10 |
{
|
11 |
case "mo_wpns_send_query":
|
29 |
//Function to handle support form submit
|
30 |
function wpns_handle_support_form($email,$query,$phone)
|
31 |
{
|
32 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
$send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
|
34 |
if(empty($email) || empty($query)){
|
35 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
|
45 |
else
|
46 |
$query = $query.MoWpnsUtility::mo_2fa_send_configuration();
|
47 |
|
|
|
|
|
48 |
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
49 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
50 |
} else {
|
51 |
$submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
if(json_last_error() == JSON_ERROR_NONE && $submited){
|
54 |
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
55 |
}else{
|
controllers/tour-model.php
CHANGED
@@ -290,7 +290,7 @@
|
|
290 |
</tr>
|
291 |
<tr>
|
292 |
<td>
|
293 |
-
<textarea id="query" name="query" class="mo_wpns_settings_textarea" style="resize: vertical;width:100%" cols="52" rows="7"
|
294 |
</td>
|
295 |
</tr>
|
296 |
</table>
|
290 |
</tr>
|
291 |
<tr>
|
292 |
<td>
|
293 |
+
<textarea id="query" name="query" class="mo_wpns_settings_textarea" style="resize: vertical;width:100%" cols="52" rows="7" placeholder="Write your query here"></textarea>
|
294 |
</td>
|
295 |
</tr>
|
296 |
</table>
|
controllers/trial.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
|
5 |
+
{
|
6 |
+
switch(sanitize_text_field($_POST['option']))
|
7 |
+
{
|
8 |
+
case "mo2f_trial_request_form":
|
9 |
+
mo2f_handle_trial_request_form($_POST); break;
|
10 |
+
}
|
11 |
+
}
|
12 |
+
global $mo2f_dirName;
|
13 |
+
$current_user = wp_get_current_user();
|
14 |
+
$email = isset($current_user->user_email)?$current_user->user_email:null;
|
15 |
+
$url = get_site_url();
|
16 |
+
$user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $current_user->ID );
|
17 |
+
|
18 |
+
|
19 |
+
echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/style_settings.css', dirname(__FILE__)) . '" />';
|
20 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'trial.php';
|
21 |
+
|
22 |
+
function mo2f_handle_trial_request_form($post){
|
23 |
+
$nonce = isset($post['nonce'])?sanitize_text_field($post['nonce']):NULL;
|
24 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f_trial-nonce' ) ){
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
|
28 |
+
$email = isset($post['mo2f_trial_email'])? $post['mo2f_trial_email'] : NULL;
|
29 |
+
$phone = isset($post['mo2f_trial_phone'])? $post['mo2f_trial_phone'] : ( $user_phone ? $user_phone : NULL );
|
30 |
+
$trial_plan = isset($post['mo2f_trial_plan'])? $post['mo2f_trial_plan']: NULL;
|
31 |
+
|
32 |
+
if(get_site_option('mo2f_trial_query_sent')){
|
33 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TRIAL_REQUEST_ALREADY_SENT'),'ERROR');
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
if(empty($email) || empty($phone) || empty($trial_plan))
|
38 |
+
{
|
39 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('REQUIRED_FIELDS'),'ERROR');
|
40 |
+
return;
|
41 |
+
}
|
42 |
+
if(!preg_match("/^[\+][0-9]{1,4}\s?[0-9]{7,12}$/", $phone)){
|
43 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('INVALID_PHONE'),'ERROR');
|
44 |
+
return;
|
45 |
+
}
|
46 |
+
else{
|
47 |
+
$email = filter_var( $email,FILTER_VALIDATE_EMAIL );
|
48 |
+
$phone = preg_replace('/[^0-9]/', '', $phone);
|
49 |
+
$trial_plan = sanitize_text_field($trial_plan);
|
50 |
+
$query = 'REQUEST FOR TRIAL';
|
51 |
+
$query .= ' [ Plan Name => ';
|
52 |
+
$query .= $trial_plan;
|
53 |
+
$query .= ' | Email => ';
|
54 |
+
$query .= get_option('mo2f_email').' ]';
|
55 |
+
$current_user = wp_get_current_user();
|
56 |
+
|
57 |
+
|
58 |
+
$url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/contact-us";
|
59 |
+
global $mowafutility;
|
60 |
+
$query = '[WordPress 2 Factor Authentication Plugin: OV3 - '.MO2F_VERSION.']: ' . $query;
|
61 |
+
|
62 |
+
$fields = array(
|
63 |
+
'firstName' => $current_user->user_firstname,
|
64 |
+
'lastName' => $current_user->user_lastname,
|
65 |
+
'company' => $_SERVER['SERVER_NAME'],
|
66 |
+
'email' => $email,
|
67 |
+
'ccEmail' => '2fasupport@xecurify.com',
|
68 |
+
'phone' => $phone,
|
69 |
+
'query' => $query
|
70 |
+
);
|
71 |
+
$field_string = json_encode( $fields );
|
72 |
+
|
73 |
+
$mo2fApi= new Mo2f_Api();
|
74 |
+
$response = $mo2fApi->make_curl_call($url, $field_string);
|
75 |
+
|
76 |
+
$submitted = $response;
|
77 |
+
|
78 |
+
if(json_last_error() == JSON_ERROR_NONE && $submitted)
|
79 |
+
{
|
80 |
+
update_site_option('mo2f_trial_query_sent', true);
|
81 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TRIAL_REQUEST_SENT'),'SUCCESS');
|
82 |
+
return;
|
83 |
+
}
|
84 |
+
else{
|
85 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
86 |
+
}
|
87 |
+
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
?>
|
controllers/two-fa-intro.php
CHANGED
@@ -24,9 +24,9 @@
|
|
24 |
</div>
|
25 |
|
26 |
<div class="modal-footer" style="border: 0px;">
|
27 |
-
<button type="button" class="
|
28 |
-
<button type="button" class="
|
29 |
-
<div class="mo2f_tooltip_addon logout
|
30 |
<span class="dashicons dashicons-info mo2f_info_tab" style="color: white;font-size: 27px;margin-top: 14px;margin-left: -12px;"></span>
|
31 |
<span class="mo2f_tooltiptext_addon mo2f_logout_and_configure_info" style="font-size: 20px;font-family: auto; text-align: justify;font-weight: lighter;background-color: #2EB150; font-size: 20px;">
|
32 |
<ul style="list-style-type:square;margin: 10px 18px 10px 18px;"><li>This will logout you and will ask you to set your 2FA on next login.</li><li> New and existing users can set their 2FA on next login.</li></ul>
|
24 |
</div>
|
25 |
|
26 |
<div class="modal-footer" style="border: 0px;">
|
27 |
+
<button type="button" class="button button-primary button-large modal-button readytogo mo2f_advance_setting" onclick="skipintro();">Advance Settings</button>
|
28 |
+
<button type="button" class="button button-primary button-large modal-button mo2fa_tour_button" title="Logout and check the user experience" onclick="mo2f_userlogout()">Logout and Configure</button>
|
29 |
+
<div class="mo2f_tooltip_addon logout button button-primary button-large modal-button " style="float: left;border: 2px solid black;border-left:none;width: 6%;box-shadow: none;text-decoration:none;background-color: #2271b1;margin-left: -5px;min-height: 50px;">
|
30 |
<span class="dashicons dashicons-info mo2f_info_tab" style="color: white;font-size: 27px;margin-top: 14px;margin-left: -12px;"></span>
|
31 |
<span class="mo2f_tooltiptext_addon mo2f_logout_and_configure_info" style="font-size: 20px;font-family: auto; text-align: justify;font-weight: lighter;background-color: #2EB150; font-size: 20px;">
|
32 |
<ul style="list-style-type:square;margin: 10px 18px 10px 18px;"><li>This will logout you and will ask you to set your 2FA on next login.</li><li> New and existing users can set their 2FA on next login.</li></ul>
|
controllers/twofa/mo2fa_common_login.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
function mo2f_collect_device_attributes_handler( $redirect_to = null
|
3 |
?>
|
4 |
<html>
|
5 |
<head>
|
@@ -40,7 +40,79 @@ function mo2f_collect_device_attributes_handler( $redirect_to = null,$session_id
|
|
40 |
</html>
|
41 |
<?php
|
42 |
}
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
function miniorange_get_user_role( $user ) {
|
45 |
return $user->roles;
|
46 |
}
|
@@ -257,10 +329,12 @@ function mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to,
|
|
257 |
<?php }
|
258 |
|
259 |
function mo2f_get_kba_authentication_prompt($login_status, $login_message, $redirect_to, $session_id_encrypt , $cookievalue) {
|
|
|
260 |
$mo_wpns_config = new MoWpnsHandler();
|
261 |
$mo2f_login_option = MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option');
|
262 |
$mo2f_remember_device_enabled = get_option( 'mo2f_remember_device' );
|
263 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
|
|
264 |
?>
|
265 |
<html>
|
266 |
<head>
|
@@ -482,11 +556,11 @@ function mo2f_backup_form($login_status, $login_message, $redirect_to, $session_
|
|
482 |
<?php
|
483 |
}
|
484 |
|
485 |
-
function mo2f_get_duo_push_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id
|
486 |
-
|
487 |
$mo_wpns_config = new MoWpnsHandler();
|
488 |
|
489 |
-
global $Mo2fdbQueries,$txid;
|
490 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
491 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user_id );
|
492 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
@@ -494,6 +568,7 @@ function mo2f_backup_form($login_status, $login_message, $redirect_to, $session_
|
|
494 |
$user_id = MO2f_Utility::mo2f_get_transient( $session_id_encrypt, 'mo2f_current_user_id' );
|
495 |
|
496 |
$current_user = get_user_by('id',$user_id);
|
|
|
497 |
update_user_meta($user_id,'current_user_email',$current_user->user_email);
|
498 |
|
499 |
|
@@ -688,14 +763,15 @@ function mo2f_backup_form($login_status, $login_message, $redirect_to, $session_
|
|
688 |
}
|
689 |
|
690 |
function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $cookievalue ) {
|
|
|
691 |
$mo_wpns_config = new MoWpnsHandler();
|
692 |
-
|
693 |
-
global $Mo2fdbQueries,$txid;
|
694 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
695 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $id );
|
696 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
697 |
$mo2f_EV_txid = get_user_meta($id,'mo2f_EV_txid',true);
|
698 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
|
|
699 |
?>
|
700 |
<html>
|
701 |
<head>
|
@@ -1103,14 +1179,16 @@ function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $
|
|
1103 |
<?php
|
1104 |
}
|
1105 |
|
1106 |
-
function
|
1107 |
-
global $Mo2fdbQueries;
|
1108 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
1109 |
$mo_wpns_config = new MoWpnsHandler();
|
1110 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
1111 |
$attempts = get_option('mo2f_attempts_before_redirect', 3);
|
1112 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
1113 |
$mo2f_otp_over_email_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_OTPOverEmail_config_status', $user_id );
|
|
|
|
|
1114 |
?>
|
1115 |
<html>
|
1116 |
<head>
|
@@ -1176,6 +1254,9 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
1176 |
<input type="hidden" name="option" value="miniorange_soft_token">
|
1177 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
1178 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
|
|
|
|
|
|
1179 |
</form>
|
1180 |
<?php
|
1181 |
$Kbaset = get_user_meta( $user_id ,'Security Questions' );
|
@@ -1412,11 +1493,12 @@ function mo2f_customize_logo() { ?>
|
|
1412 |
function echo_js_css_files() {
|
1413 |
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
|
1414 |
echo '<script src="' . plugins_url( 'includes/js/bootstrap.min.js', dirname(dirname(__FILE__)) ) . '" ></script>';
|
1415 |
-
echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/twofa_style_settings.css?version=5.
|
1416 |
}
|
1417 |
|
1418 |
function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
1419 |
global $Mo2fdbQueries;
|
|
|
1420 |
if(get_user_meta($id, 'mo_backup_code_generated', true) && !get_user_meta($id, 'mo_backup_code_downloaded', true)){
|
1421 |
$encrypted_codes =get_user_meta($id, 'chqwetcsdvnvd', true);
|
1422 |
$key = get_option( 'mo2f_encryption_key' );
|
@@ -1425,16 +1507,25 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
|
1425 |
delete_user_meta($id, 'chqwetcsdvnvd');
|
1426 |
$result = true;
|
1427 |
}else{
|
1428 |
-
|
1429 |
-
$codes_hash = MO2f_Utility::mo2f_get_codes_hash($codes);
|
1430 |
-
update_user_meta($id,'mo2f_backup_codes', $codes_hash);
|
1431 |
-
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
|
1432 |
if(empty($mo2f_user_email)){
|
1433 |
$currentuser = get_user_by( 'id', $id );
|
1434 |
$mo2f_user_email = $currentuser->user_email;
|
1435 |
}
|
1436 |
-
$
|
|
|
|
|
|
|
|
|
|
|
1437 |
update_user_meta($id, 'mo_backup_code_generated', 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1438 |
}
|
1439 |
update_user_meta($id, 'mo_backup_code_screen_shown', 1);
|
1440 |
?>
|
@@ -1465,6 +1556,7 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
|
1465 |
<h4 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login', 'miniorange-2-factor-authentication'); ?>" onclick="mologinback();"><span aria-hidden="true">×</span></button>
|
1466 |
<?php echo __('Two Factor Setup Complete', 'miniorange-2-factor-authentication'); ?></h4>
|
1467 |
</div>
|
|
|
1468 |
<div class="mo2f_modal-body center">
|
1469 |
|
1470 |
|
@@ -1480,13 +1572,13 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
|
1480 |
<div style="display: inline-flex;width: 350px; ">
|
1481 |
<div id="clipboard" style="border: solid;width: 55%;float: left;">
|
1482 |
<?php
|
1483 |
-
for ($x = 0; $x <
|
1484 |
$str = $codes[$x];
|
1485 |
echo("<br>".$str." <br>");
|
1486 |
}
|
1487 |
|
1488 |
$str1="";
|
1489 |
-
for ($x = 0; $x <
|
1490 |
$str = $codes[$x];
|
1491 |
$str1.=$str;
|
1492 |
if($x != 4){
|
@@ -1519,6 +1611,17 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
|
1519 |
<?php
|
1520 |
mo2f_customize_logo() ?>
|
1521 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1522 |
</div>
|
1523 |
</div>
|
1524 |
</div>
|
1 |
<?php
|
2 |
+
function mo2f_collect_device_attributes_handler( $session_id_encrypt,$redirect_to = null ) {
|
3 |
?>
|
4 |
<html>
|
5 |
<head>
|
40 |
</html>
|
41 |
<?php
|
42 |
}
|
43 |
+
function mo2fa_prompt_mfa_form_for_user($configure_array_method,$session_id_encrypt,$redirect_to)
|
44 |
+
{
|
45 |
+
?>
|
46 |
+
<html>
|
47 |
+
<head>
|
48 |
+
<meta charset="utf-8"/>
|
49 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
50 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
51 |
+
<?php
|
52 |
+
mo2f_inline_css_and_js();
|
53 |
+
?>
|
54 |
+
</head>
|
55 |
+
<body>
|
56 |
+
<div class="mo2f_modal1" tabindex="-1" role="dialog" id="myModal51">
|
57 |
+
<div class="mo2f-modal-backdrop"></div>
|
58 |
+
<div class="mo_customer_validation-modal-dialog mo_customer_validation-modal-md">
|
59 |
+
<div class="login mo_customer_validation-modal-content">
|
60 |
+
<div class="mo2f_modal-header">
|
61 |
+
<h3 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login','miniorange-2-factor-authentication');?>" onclick="mologinback();"><span aria-hidden="true">×</span></button>
|
62 |
+
|
63 |
+
<?php echo __('Select 2 Factor method for authentication', 'miniorange-2-factor-authentication'); ?></h3>
|
64 |
+
</div>
|
65 |
+
<div class="mo2f_modal-body">
|
66 |
+
<?php
|
67 |
+
foreach ($configure_array_method as $key => $value)
|
68 |
+
{
|
69 |
+
echo'<span >
|
70 |
+
<label>
|
71 |
+
<input type="radio" name="mo2f_selected_mfactor_method" class ="mo2f-styled-radio_conf" value="'.$value.'"/>';
|
72 |
+
echo'<span class="mo2f-styled-radio-text_conf">';
|
73 |
+
echo __($value, 'miniorange-2-factor-authentication');
|
74 |
+
echo ' </span> </label>
|
75 |
+
<br>
|
76 |
+
<br>
|
77 |
+
</span>';
|
78 |
+
|
79 |
+
}
|
80 |
+
|
81 |
+
?>
|
82 |
+
|
83 |
+
<?php mo2f_customize_logo() ?>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
</div>
|
87 |
+
</div>
|
88 |
+
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
89 |
+
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
90 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
91 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
92 |
+
</form>
|
93 |
+
<form name="f" method="post" action="" id="mo2f_select_mfa_methods_form" style="display:none;">
|
94 |
+
<input type="hidden" name="mo2f_selected_mfactor_method" />
|
95 |
+
<input type="hidden" name="mo2f_miniorange_2factor_method_nonce" value="<?php echo wp_create_nonce('mo2f_miniorange-2factor-method-nonce'); ?>" />
|
96 |
+
<input type="hidden" name="option" value="miniorange_mfactor_method" />
|
97 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
98 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
99 |
+
</form>
|
100 |
+
|
101 |
+
<script>
|
102 |
+
function mologinback(){
|
103 |
+
jQuery('#mo2f_backto_mo_loginform').submit();
|
104 |
+
}
|
105 |
+
jQuery('input:radio[name=mo2f_selected_mfactor_method]').click(function() {
|
106 |
+
var selectedMethod = jQuery(this).val();
|
107 |
+
document.getElementById("mo2f_select_mfa_methods_form").elements[0].value = selectedMethod;
|
108 |
+
jQuery('#mo2f_select_mfa_methods_form').submit();
|
109 |
+
});
|
110 |
+
|
111 |
+
</script>
|
112 |
+
</body>
|
113 |
+
</html>
|
114 |
+
<?php
|
115 |
+
}
|
116 |
function miniorange_get_user_role( $user ) {
|
117 |
return $user->roles;
|
118 |
}
|
329 |
<?php }
|
330 |
|
331 |
function mo2f_get_kba_authentication_prompt($login_status, $login_message, $redirect_to, $session_id_encrypt , $cookievalue) {
|
332 |
+
global $moWpnsUtility;
|
333 |
$mo_wpns_config = new MoWpnsHandler();
|
334 |
$mo2f_login_option = MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option');
|
335 |
$mo2f_remember_device_enabled = get_option( 'mo2f_remember_device' );
|
336 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
337 |
+
MO2f_Utility::mo2f_debug_file('Prompted KBA validation screen'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
338 |
?>
|
339 |
<html>
|
340 |
<head>
|
556 |
<?php
|
557 |
}
|
558 |
|
559 |
+
function mo2f_get_duo_push_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id ){
|
560 |
+
|
561 |
$mo_wpns_config = new MoWpnsHandler();
|
562 |
|
563 |
+
global $Mo2fdbQueries,$txid,$moWpnsUtility;
|
564 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
565 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $user_id );
|
566 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
568 |
$user_id = MO2f_Utility::mo2f_get_transient( $session_id_encrypt, 'mo2f_current_user_id' );
|
569 |
|
570 |
$current_user = get_user_by('id',$user_id);
|
571 |
+
MO2f_Utility::mo2f_debug_file('Waiting for duo push notification validation'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$current_user->ID.' Email-'.$current_user->user_email);
|
572 |
update_user_meta($user_id,'current_user_email',$current_user->user_email);
|
573 |
|
574 |
|
763 |
}
|
764 |
|
765 |
function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $cookievalue ) {
|
766 |
+
|
767 |
$mo_wpns_config = new MoWpnsHandler();
|
768 |
+
global $Mo2fdbQueries,$txid,$moWpnsUtility;
|
|
|
769 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
770 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $id );
|
771 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
772 |
$mo2f_EV_txid = get_user_meta($id,'mo2f_EV_txid',true);
|
773 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
774 |
+
MO2f_Utility::mo2f_debug_file('Waiting for push notification validation '.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
775 |
?>
|
776 |
<html>
|
777 |
<head>
|
1179 |
<?php
|
1180 |
}
|
1181 |
|
1182 |
+
function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to,$session_id_encrypt,$user_id,$show_back_button =null ,$mo2fa_transaction_id = null ) {
|
1183 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
1184 |
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
1185 |
$mo_wpns_config = new MoWpnsHandler();
|
1186 |
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
1187 |
$attempts = get_option('mo2f_attempts_before_redirect', 3);
|
1188 |
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
1189 |
$mo2f_otp_over_email_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_OTPOverEmail_config_status', $user_id );
|
1190 |
+
|
1191 |
+
MO2f_Utility::mo2f_debug_file('Prompted 2fa validation screen '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1192 |
?>
|
1193 |
<html>
|
1194 |
<head>
|
1254 |
<input type="hidden" name="option" value="miniorange_soft_token">
|
1255 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
1256 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
1257 |
+
<?php if($mo2fa_transaction_id!=null){ ?>
|
1258 |
+
<input type="hidden" name="mo2fa_transaction_id" id="mo2fa_transaction_id" value="<?php echo $mo2fa_transaction_id; ?>"/>
|
1259 |
+
<?php }?>
|
1260 |
</form>
|
1261 |
<?php
|
1262 |
$Kbaset = get_user_meta( $user_id ,'Security Questions' );
|
1493 |
function echo_js_css_files() {
|
1494 |
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
|
1495 |
echo '<script src="' . plugins_url( 'includes/js/bootstrap.min.js', dirname(dirname(__FILE__)) ) . '" ></script>';
|
1496 |
+
echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/twofa_style_settings.css?version=5.5', dirname(dirname(__FILE__))) . '" />';
|
1497 |
}
|
1498 |
|
1499 |
function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
|
1500 |
global $Mo2fdbQueries;
|
1501 |
+
update_site_option('mo2f_is_inline_used','1');
|
1502 |
if(get_user_meta($id, 'mo_backup_code_generated', true) && !get_user_meta($id, 'mo_backup_code_downloaded', true)){
|
1503 |
$encrypted_codes =get_user_meta($id, 'chqwetcsdvnvd', true);
|
1504 |
$key = get_option( 'mo2f_encryption_key' );
|
1507 |
delete_user_meta($id, 'chqwetcsdvnvd');
|
1508 |
$result = true;
|
1509 |
}else{
|
1510 |
+
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
|
|
|
|
|
|
|
1511 |
if(empty($mo2f_user_email)){
|
1512 |
$currentuser = get_user_by( 'id', $id );
|
1513 |
$mo2f_user_email = $currentuser->user_email;
|
1514 |
}
|
1515 |
+
$generate_backup_code = new Customer_Cloud_Setup();
|
1516 |
+
$codes = $generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
|
1517 |
+
|
1518 |
+
if($codes != 'DBConnectionIssue' && $codes != 'UnableToFetchData' && $codes != 'UserLimitReached' && $codes != 'ERROR' && $codes != 'LimitReached' && $codes != 'AllUsed' && $codes != 'invalid_request' ){
|
1519 |
+
$codes = explode(' ', $codes);
|
1520 |
+
$result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
|
1521 |
update_user_meta($id, 'mo_backup_code_generated', 1);
|
1522 |
+
$code_generated = 'code_generation_successful';
|
1523 |
+
}else{
|
1524 |
+
$code_generated = 'code_generation_failed';
|
1525 |
+
update_user_meta($id, 'error_during_code_generation',$codes);
|
1526 |
+
}
|
1527 |
+
|
1528 |
+
|
1529 |
}
|
1530 |
update_user_meta($id, 'mo_backup_code_screen_shown', 1);
|
1531 |
?>
|
1556 |
<h4 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login', 'miniorange-2-factor-authentication'); ?>" onclick="mologinback();"><span aria-hidden="true">×</span></button>
|
1557 |
<?php echo __('Two Factor Setup Complete', 'miniorange-2-factor-authentication'); ?></h4>
|
1558 |
</div>
|
1559 |
+
<?php if($code_generated == 'code_generation_successful') { ?>
|
1560 |
<div class="mo2f_modal-body center">
|
1561 |
|
1562 |
|
1572 |
<div style="display: inline-flex;width: 350px; ">
|
1573 |
<div id="clipboard" style="border: solid;width: 55%;float: left;">
|
1574 |
<?php
|
1575 |
+
for ($x = 0; $x < sizeof($codes); $x++) {
|
1576 |
$str = $codes[$x];
|
1577 |
echo("<br>".$str." <br>");
|
1578 |
}
|
1579 |
|
1580 |
$str1="";
|
1581 |
+
for ($x = 0; $x < sizeof($codes); $x++) {
|
1582 |
$str = $codes[$x];
|
1583 |
$str1.=$str;
|
1584 |
if($x != 4){
|
1611 |
<?php
|
1612 |
mo2f_customize_logo() ?>
|
1613 |
</div>
|
1614 |
+
<?php } else { ?>
|
1615 |
+
<div style="text-align:center;">
|
1616 |
+
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url();?>" >
|
1617 |
+
<input type="hidden" name="option" value="mo2f_goto_wp_dashboard" />
|
1618 |
+
<input type="hidden" name="mo2f_inline_wp_dashboard_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-wp-dashboard-nonce'); ?>" />
|
1619 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
1620 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
1621 |
+
<input type="submit" name="login_page" id="login_page" style ="margin-top: 7px" class="button button-primary button-large" value="<?php echo __('Finish','miniorange-2-factor-authentication');?>" /><br>
|
1622 |
+
</form>
|
1623 |
+
</div>
|
1624 |
+
<?php } ?>
|
1625 |
</div>
|
1626 |
</div>
|
1627 |
</div>
|
controllers/twofa/mo2fa_inline_registration.php
CHANGED
@@ -1,6 +1,9 @@
|
|
1 |
<?php
|
2 |
-
function fetch_methods(){
|
3 |
-
$methods = array("SMS","SOFT TOKEN","MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","GOOGLE AUTHENTICATOR","KBA","OTP_OVER_EMAIL","OTP OVER TELEGRAM"
|
|
|
|
|
|
|
4 |
if(get_site_option('duo_credentials_save_successfully'))
|
5 |
array_push($methods,"DUO");
|
6 |
return $methods;
|
@@ -27,11 +30,7 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
27 |
$current_selected_method = 'OTP Over Telegram';
|
28 |
prompt_user_for_phone_setup($current_user_id, $login_status, $login_message,$current_selected_method,$redirect_to,$session_id);
|
29 |
}
|
30 |
-
else if($current_selected_method == '
|
31 |
-
{
|
32 |
-
$current_selected_method == 'OTP Over Whatsapp';
|
33 |
-
prompt_user_for_phone_setup($current_user_id, $login_status, $login_message,$current_selected_method,$redirect_to,$session_id);
|
34 |
-
}else if($current_selected_method == 'Duo Authenticator'){
|
35 |
prompt_user_for_duo_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id);
|
36 |
}
|
37 |
else if($current_selected_method == 'GOOGLE AUTHENTICATOR' ){
|
@@ -336,7 +335,7 @@ function mo2f_inline_email_form($email,$current_user_id)
|
|
336 |
<br>
|
337 |
<input type="hidden" name="miniorange_emailChange_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-email-change-nonce'); ?>" />
|
338 |
<input type="text" name="current_user_id" hidden id="current_user_id" value="<?php echo $current_user_id;?>" />
|
339 |
-
<button type="submit" class="
|
340 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
341 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
342 |
</form>
|
@@ -619,7 +618,31 @@ function prompt_user_for_duo_authenticator_setup($current_user_id, $login_status
|
|
619 |
function prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
620 |
$ga_secret = MO2f_Utility::mo2f_get_transient($session_id, 'secret_ga');
|
621 |
$data = MO2f_Utility::mo2f_get_transient($session_id, 'ga_qrCode');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
622 |
|
|
|
|
|
623 |
?>
|
624 |
<html>
|
625 |
<head> <meta charset="utf-8"/>
|
@@ -938,7 +961,7 @@ function initialize_inline_duo_auth_registration($current_user,$session_id_encry
|
|
938 |
<img src="<?php echo plugins_url( 'includes/images/ajax-loader-login.gif', dirname(dirname(__FILE__)) ); ?>"/>
|
939 |
</center>
|
940 |
|
941 |
-
<input type="button" name="back" id="go_back" class="
|
942 |
value="<?php echo mo2f_lt( 'Back' ); ?>"
|
943 |
style="margin-top:100px;margin-left:10px;"/>
|
944 |
</div>
|
@@ -1003,7 +1026,7 @@ function initialize_inline_duo_auth_registration($current_user,$session_id_encry
|
|
1003 |
</script>
|
1004 |
|
1005 |
<?php
|
1006 |
-
}
|
1007 |
function prompt_user_for_kba_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
1008 |
$current_user = get_userdata($current_user_id);
|
1009 |
$opt=fetch_methods($current_user);
|
@@ -1316,7 +1339,7 @@ function prompt_user_for_setup_success($id, $login_status, $login_message,$redir
|
|
1316 |
}else{
|
1317 |
$redirect_to = isset($_POST[ 'redirect_to' ]) ? $_POST[ 'redirect_to' ] : null;
|
1318 |
$mo_enable_rem = new Miniorange_Password_2Factor_Login();
|
1319 |
-
mo2f_collect_device_attributes_handler($redirect_to
|
1320 |
}
|
1321 |
}
|
1322 |
mo2f_customize_logo() ?>
|
@@ -1375,10 +1398,6 @@ $current_user = get_userdata($current_user_id);
|
|
1375 |
{
|
1376 |
echo __('Verify Your Telegram Details', 'miniorange-2-factor-authentication');
|
1377 |
}
|
1378 |
-
else if($current_selected_method == 'OTP Over Whatsapp')
|
1379 |
-
{
|
1380 |
-
echo __('Verify Your Whatsapp Details', 'miniorange-2-factor-authentication');
|
1381 |
-
}
|
1382 |
else if($current_selected_method == 'OTP OVER EMAIL'){
|
1383 |
?>
|
1384 |
<?php echo __('Verify Your EMAIL', 'miniorange-2-factor-authentication'); ?></h4>
|
@@ -1423,46 +1442,6 @@ $current_user = get_userdata($current_user_id);
|
|
1423 |
<?php
|
1424 |
echo "<br>";
|
1425 |
|
1426 |
-
}
|
1427 |
-
else if($current_selected_method == 'OTP Over Whatsapp')
|
1428 |
-
{
|
1429 |
-
echo __('1. Add the given phone number (+34 644 17 94 64) in your phone with any name of your choice.', 'miniorange-2-factor-authentication');
|
1430 |
-
echo "<br><br>";
|
1431 |
-
echo __('2. Open the Whatsapp app in your phone and send the below text to the given phone number. <b>Message:</b> I allow callmebot to send me messages', 'miniorange-2-factor-authentication');
|
1432 |
-
|
1433 |
-
echo "<br><br>";
|
1434 |
-
echo '<table><tr><th>';
|
1435 |
-
echo __('3a. Enter the recieved API Key :', 'miniorange-2-factor-authentication');
|
1436 |
-
echo '</th>';
|
1437 |
-
$whatsapp_id = get_user_meta($current_user_id,'mo2f_whatsapp_id',true);
|
1438 |
-
$whatsapp_number = get_user_meta($current_user_id,'mo2f_whatsapp_num',true);
|
1439 |
-
|
1440 |
-
if($whatsapp_id == '' or empty($whatsapp_id))
|
1441 |
-
$whatsapp_id = get_user_meta($current_user_id,'mo2f_temp_whatsappID',true);
|
1442 |
-
|
1443 |
-
if($whatsapp_number == '')
|
1444 |
-
$whatsapp_number = get_user_meta($current_user_id,'mo2f_temp_whatsapp_num',true);
|
1445 |
-
?>
|
1446 |
-
<th>
|
1447 |
-
<input type="text" name="whatsapp_id" id="whatsapp_id"
|
1448 |
-
value="<?php echo $whatsapp_id; ?>" required="true" pattern="[0-9]+" title="<?php echo __('Enter chat ID without any space or dashes', 'miniorange-2-factor-authentication'); ?>" /><br />
|
1449 |
-
|
1450 |
-
</th>
|
1451 |
-
</tr>
|
1452 |
-
<tr>
|
1453 |
-
<td>
|
1454 |
-
<?php
|
1455 |
-
echo "<br>";
|
1456 |
-
echo __('<b>3b. Enter your phone number :</b>', 'miniorange-2-factor-authentication');
|
1457 |
-
?>
|
1458 |
-
</td><td>
|
1459 |
-
<input type="text" name="whatsapp_number" id="whatsapp_number"
|
1460 |
-
value="<?php echo $whatsapp_number; ?>" required="true" pattern="[\+]?[0-9]{1,4}\s?[0-9]{7,12}" title="<?php echo __('Enter Phone number with country code', 'miniorange-2-factor-authentication'); ?>" /><br />
|
1461 |
-
</td></tr></table>
|
1462 |
-
<?php
|
1463 |
-
|
1464 |
-
echo "<br>";
|
1465 |
-
|
1466 |
}
|
1467 |
else{
|
1468 |
?>
|
@@ -1500,7 +1479,7 @@ $current_user = get_userdata($current_user_id);
|
|
1500 |
<?php if ($current_selected_method == 'PHONE VERIFICATION'){ ?>
|
1501 |
<span style="color:#1F618D;"><?php echo mo2f_lt('Didn\'t get code?');?></span>
|
1502 |
<a href="#resendsmslink" style="color:#F4D03F ;font-weight:bold;"><?php echo __('CALL AGAIN', 'miniorange-2-factor-authentication'); ?></a>
|
1503 |
-
<?php } else if($current_selected_method != 'OTP Over
|
1504 |
?>
|
1505 |
<span style="color:#1F618D;"><?php echo mo2f_lt('Didn\'t get code?');?></span>
|
1506 |
<a href="#resendsmslink" style="color:#F4D03F ;font-weight:bold;"><?php echo __('RESEND IT', 'miniorange-2-factor-authentication'); ?></a>
|
1 |
<?php
|
2 |
+
function fetch_methods($current_user = null){
|
3 |
+
$methods = array("SMS","SOFT TOKEN","MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","GOOGLE AUTHENTICATOR","KBA","OTP_OVER_EMAIL","OTP OVER TELEGRAM");
|
4 |
+
if(!is_null($current_user) && ($current_user->roles[0] != 'administrator') && !mo2f_is_customer_registered()){
|
5 |
+
$methods = array("GOOGLE AUTHENTICATOR","KBA","OTP_OVER_EMAIL","OTP OVER TELEGRAM");
|
6 |
+
}
|
7 |
if(get_site_option('duo_credentials_save_successfully'))
|
8 |
array_push($methods,"DUO");
|
9 |
return $methods;
|
30 |
$current_selected_method = 'OTP Over Telegram';
|
31 |
prompt_user_for_phone_setup($current_user_id, $login_status, $login_message,$current_selected_method,$redirect_to,$session_id);
|
32 |
}
|
33 |
+
else if($current_selected_method == 'Duo Authenticator'){
|
|
|
|
|
|
|
|
|
34 |
prompt_user_for_duo_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id);
|
35 |
}
|
36 |
else if($current_selected_method == 'GOOGLE AUTHENTICATOR' ){
|
335 |
<br>
|
336 |
<input type="hidden" name="miniorange_emailChange_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-email-change-nonce'); ?>" />
|
337 |
<input type="text" name="current_user_id" hidden id="current_user_id" value="<?php echo $current_user_id;?>" />
|
338 |
+
<button type="submit" class="button button-primary button-large" style ="margin-left: 165px;" id="save_entered_email_inlinecloud">Save</button>
|
339 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
340 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
341 |
</form>
|
618 |
function prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
619 |
$ga_secret = MO2f_Utility::mo2f_get_transient($session_id, 'secret_ga');
|
620 |
$data = MO2f_Utility::mo2f_get_transient($session_id, 'ga_qrCode');
|
621 |
+
global $Mo2fdbQueries;
|
622 |
+
if(empty($data)){
|
623 |
+
$user = get_user_by('ID',$current_user_id);
|
624 |
+
if(!MO2F_IS_ONPREM){
|
625 |
+
if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
|
626 |
+
Miniorange_Authentication::mo2f_get_GA_parameters($user);
|
627 |
+
}
|
628 |
+
$mo2f_google_auth = get_user_meta($user->ID, 'mo2f_google_auth', true);
|
629 |
+
$data = isset($mo2f_google_auth['ga_qrCode']) ? $mo2f_google_auth['ga_qrCode'] : null;
|
630 |
+
$ga_secret = isset($mo2f_google_auth['ga_secret']) ? $mo2f_google_auth['ga_secret'] : null;
|
631 |
+
MO2f_Utility::mo2f_set_transient($session_id, 'secret_ga', $mo2f_google_auth['ga_secret']);
|
632 |
+
MO2f_Utility::mo2f_set_transient($session_id, 'ga_qrCode', $mo2f_google_auth['ga_qrCode']);
|
633 |
+
}else{
|
634 |
+
include_once dirname(dirname(dirname( __FILE__ ))) .DIRECTORY_SEPARATOR . 'handler'.DIRECTORY_SEPARATOR . 'twofa'. DIRECTORY_SEPARATOR . 'gaonprem.php';
|
635 |
+
$gauth_obj = new Google_auth_onpremise();
|
636 |
+
$email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user->ID);
|
637 |
+
$onpremise_secret = $gauth_obj->createSecret();
|
638 |
+
$issuer = get_site_option( 'mo2f_GA_account_name', 'miniOrangeAu' );
|
639 |
+
$url = $gauth_obj->geturl( $onpremise_secret, $issuer, $email );
|
640 |
+
$data = $url;
|
641 |
+
MO2f_Utility::mo2f_set_transient($session_id, 'secret_ga', $onpremise_secret);
|
642 |
+
MO2f_Utility::mo2f_set_transient($session_id, 'ga_qrCode', $url);
|
643 |
|
644 |
+
}
|
645 |
+
}
|
646 |
?>
|
647 |
<html>
|
648 |
<head> <meta charset="utf-8"/>
|
961 |
<img src="<?php echo plugins_url( 'includes/images/ajax-loader-login.gif', dirname(dirname(__FILE__)) ); ?>"/>
|
962 |
</center>
|
963 |
|
964 |
+
<input type="button" name="back" id="go_back" class="button button-primary button-large"
|
965 |
value="<?php echo mo2f_lt( 'Back' ); ?>"
|
966 |
style="margin-top:100px;margin-left:10px;"/>
|
967 |
</div>
|
1026 |
</script>
|
1027 |
|
1028 |
<?php
|
1029 |
+
}
|
1030 |
function prompt_user_for_kba_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
1031 |
$current_user = get_userdata($current_user_id);
|
1032 |
$opt=fetch_methods($current_user);
|
1339 |
}else{
|
1340 |
$redirect_to = isset($_POST[ 'redirect_to' ]) ? $_POST[ 'redirect_to' ] : null;
|
1341 |
$mo_enable_rem = new Miniorange_Password_2Factor_Login();
|
1342 |
+
mo2f_collect_device_attributes_handler($session_id,$redirect_to);
|
1343 |
}
|
1344 |
}
|
1345 |
mo2f_customize_logo() ?>
|
1398 |
{
|
1399 |
echo __('Verify Your Telegram Details', 'miniorange-2-factor-authentication');
|
1400 |
}
|
|
|
|
|
|
|
|
|
1401 |
else if($current_selected_method == 'OTP OVER EMAIL'){
|
1402 |
?>
|
1403 |
<?php echo __('Verify Your EMAIL', 'miniorange-2-factor-authentication'); ?></h4>
|
1442 |
<?php
|
1443 |
echo "<br>";
|
1444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1445 |
}
|
1446 |
else{
|
1447 |
?>
|
1479 |
<?php if ($current_selected_method == 'PHONE VERIFICATION'){ ?>
|
1480 |
<span style="color:#1F618D;"><?php echo mo2f_lt('Didn\'t get code?');?></span>
|
1481 |
<a href="#resendsmslink" style="color:#F4D03F ;font-weight:bold;"><?php echo __('CALL AGAIN', 'miniorange-2-factor-authentication'); ?></a>
|
1482 |
+
<?php } else if($current_selected_method != 'OTP Over Telegram'){
|
1483 |
?>
|
1484 |
<span style="color:#1F618D;"><?php echo mo2f_lt('Didn\'t get code?');?></span>
|
1485 |
<a href="#resendsmslink" style="color:#F4D03F ;font-weight:bold;"><?php echo __('RESEND IT', 'miniorange-2-factor-authentication'); ?></a>
|
controllers/twofa/two_factor_ajax.php
CHANGED
@@ -8,10 +8,14 @@ class mo_2f_ajax
|
|
8 |
|
9 |
function mo_2f_two_factor(){
|
10 |
add_action( 'wp_ajax_mo_two_factor_ajax', array($this,'mo_two_factor_ajax') );
|
|
|
11 |
}
|
12 |
|
13 |
function mo_two_factor_ajax(){
|
|
|
14 |
switch ($_POST['mo_2f_two_factor_ajax']) {
|
|
|
|
|
15 |
case 'mo2f_save_email_verification':
|
16 |
$this->mo2f_save_email_verification(); break;
|
17 |
case 'mo2f_unlimitted_user':
|
@@ -28,6 +32,8 @@ class mo_2f_ajax
|
|
28 |
$this->mo2f_enable_disable_twofactor(); break;
|
29 |
case 'mo2f_enable_disable_inline':
|
30 |
$this->mo2f_enable_disable_inline(); break;
|
|
|
|
|
31 |
case 'mo2f_shift_to_onprem':
|
32 |
$this->mo2f_shift_to_onprem();break;
|
33 |
case 'mo2f_enable_disable_twofactor_prompt_on_login':
|
@@ -35,8 +41,760 @@ class mo_2f_ajax
|
|
35 |
case 'mo2f_save_custom_form_settings':
|
36 |
$this ->mo2f_save_custom_form_settings();
|
37 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
function mo2f_save_custom_form_settings()
|
41 |
{
|
42 |
|
@@ -185,6 +943,48 @@ function mo2f_shift_to_onprem(){
|
|
185 |
|
186 |
}
|
187 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
|
189 |
function mo2f_enable_disable_twofactor(){
|
190 |
$nonce = sanitize_text_field($_POST['mo2f_nonce_enable_2FA']);
|
@@ -253,6 +1053,23 @@ function mo2f_shift_to_onprem(){
|
|
253 |
wp_send_json('false');
|
254 |
}
|
255 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
|
257 |
function mo2f_role_based_2_factor(){
|
258 |
if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
|
@@ -342,7 +1159,6 @@ function mo2f_shift_to_onprem(){
|
|
342 |
}
|
343 |
}
|
344 |
}
|
345 |
-
|
346 |
|
347 |
function mo2f_save_email_verification()
|
348 |
{
|
@@ -426,6 +1242,7 @@ function mo2f_save_email_verification()
|
|
426 |
exit;
|
427 |
|
428 |
}
|
|
|
429 |
update_user_meta( $user_id, 'configure_2FA', 1 );
|
430 |
update_user_meta($user_id,'Mo2fOtpOverEmailtxId',$decoded['txId']);
|
431 |
|
8 |
|
9 |
function mo_2f_two_factor(){
|
10 |
add_action( 'wp_ajax_mo_two_factor_ajax', array($this,'mo_two_factor_ajax') );
|
11 |
+
add_action( 'wp_ajax_nopriv_mo_two_factor_ajax', array($this,'mo_two_factor_ajax') );
|
12 |
}
|
13 |
|
14 |
function mo_two_factor_ajax(){
|
15 |
+
$GLOBALS['mo2f_is_ajax_request'] = true;
|
16 |
switch ($_POST['mo_2f_two_factor_ajax']) {
|
17 |
+
case 'mo2f_ajax_login_redirect':
|
18 |
+
$this->mo2f_ajax_login_redirect(); break;
|
19 |
case 'mo2f_save_email_verification':
|
20 |
$this->mo2f_save_email_verification(); break;
|
21 |
case 'mo2f_unlimitted_user':
|
32 |
$this->mo2f_enable_disable_twofactor(); break;
|
33 |
case 'mo2f_enable_disable_inline':
|
34 |
$this->mo2f_enable_disable_inline(); break;
|
35 |
+
case 'mo2f_enable_disable_configurd_methods':
|
36 |
+
$this->mo2f_enable_disable_configurd_methods(); break;
|
37 |
case 'mo2f_shift_to_onprem':
|
38 |
$this->mo2f_shift_to_onprem();break;
|
39 |
case 'mo2f_enable_disable_twofactor_prompt_on_login':
|
41 |
case 'mo2f_save_custom_form_settings':
|
42 |
$this ->mo2f_save_custom_form_settings();
|
43 |
break;
|
44 |
+
case 'mo2f_enable_disable_debug_log':
|
45 |
+
$this ->mo2f_enable_disable_debug_log();
|
46 |
+
break;
|
47 |
+
case 'mo2f_delete_log_file':
|
48 |
+
$this->mo2f_delete_log_file();
|
49 |
+
break;
|
50 |
+
case 'select_method_setup_wizard':
|
51 |
+
$this->mo2f_select_method_setup_wizard();
|
52 |
+
break;
|
53 |
+
case 'mo_wpns_register_verify_customer':
|
54 |
+
$this->mo_wpns_register_verify_customer();
|
55 |
+
break;
|
56 |
+
case 'mo_2fa_configure_GA_setup_wizard':
|
57 |
+
$this->mo_2fa_configure_GA_setup_wizard();
|
58 |
+
break;
|
59 |
+
case 'mo_2fa_verify_GA_setup_wizard':
|
60 |
+
$this->mo_2fa_verify_GA_setup_wizard();
|
61 |
+
break;
|
62 |
+
case 'mo_2fa_configure_OTPOverSMS_setup_wizard':
|
63 |
+
$this->mo_2fa_configure_OTPOverSMS_setup_wizard();
|
64 |
+
break;
|
65 |
+
case 'mo_2fa_configure_OTPOverEmail_setup_wizard':
|
66 |
+
$this->mo_2fa_configure_OTPOverEmail_setup_wizard();
|
67 |
+
break;
|
68 |
+
case 'mo_2fa_verify_OTPOverEmail_setup_wizard':
|
69 |
+
$this->mo_2fa_verify_OTPOverEmail_setup_wizard();
|
70 |
+
break;
|
71 |
+
case 'mo_2fa_verify_OTPOverSMS_setup_wizard':
|
72 |
+
$this->mo_2fa_verify_OTPOverSMS_setup_wizard();
|
73 |
+
break;
|
74 |
+
case 'mo_2fa_configure_KBA_setup_wizard':
|
75 |
+
$this->mo_2fa_configure_KBA_setup_wizard();
|
76 |
+
break;
|
77 |
+
case 'mo_2fa_verify_KBA_setup_wizard':
|
78 |
+
$this->mo_2fa_verify_KBA_setup_wizard();
|
79 |
+
break;
|
80 |
+
case 'mo_2fa_send_otp_token':
|
81 |
+
$this->mo_2fa_send_otp_token();
|
82 |
+
break;
|
83 |
+
case "mo2f_set_otp_over_sms":
|
84 |
+
$this->mo2f_set_otp_over_sms(); break;
|
85 |
+
case "mo2f_set_miniorange_methods":
|
86 |
+
$this->mo2f_set_miniorange_methods(); break;
|
87 |
+
case "mo2f_set_GA":
|
88 |
+
$this->mo2f_set_GA(); break;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
function mo_2fa_verify_KBA_setup_wizard()
|
92 |
+
{
|
93 |
+
global $Mo2fdbQueries;
|
94 |
+
$kba_q1 = sanitize_text_field($_POST['mo2f_kbaquestion_1']);
|
95 |
+
$kba_a1 = sanitize_text_field( $_POST['mo2f_kba_ans1'] );
|
96 |
+
$kba_q2 = sanitize_text_field($_POST['mo2f_kbaquestion_2']);
|
97 |
+
$kba_a2 = sanitize_text_field( $_POST['mo2f_kba_ans2'] );
|
98 |
+
$kba_q3 = sanitize_text_field( $_POST['mo2f_kbaquestion_3'] );
|
99 |
+
$kba_a3 = sanitize_text_field( $_POST['mo2f_kba_ans3'] );
|
100 |
+
$user = wp_get_current_user();
|
101 |
+
$this->mo2f_check_and_create_user($user->ID);
|
102 |
+
if ( MO2f_Utility::mo2f_check_empty_or_null( $kba_q1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q2 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a2) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q3) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a3) ) {
|
103 |
+
echo "Invalid Questions or Answers";
|
104 |
+
exit;
|
105 |
+
}
|
106 |
+
if ( strcasecmp( $kba_q1, $kba_q2 ) == 0 || strcasecmp( $kba_q2, $kba_q3 ) == 0 || strcasecmp( $kba_q3, $kba_q1 ) == 0 ) {
|
107 |
+
echo "The questions you select must be unique.";
|
108 |
+
exit;
|
109 |
+
}
|
110 |
+
$kba_q1 = addcslashes( stripslashes( $kba_q1 ), '"\\' );
|
111 |
+
$kba_q2 = addcslashes( stripslashes( $kba_q2 ), '"\\' );
|
112 |
+
$kba_q3 = addcslashes( stripslashes( $kba_q3 ), '"\\' );
|
113 |
+
$kba_a1 = addcslashes( stripslashes( $kba_a1 ), '"\\' );
|
114 |
+
$kba_a2 = addcslashes( stripslashes( $kba_a2 ), '"\\' );
|
115 |
+
$kba_a3 = addcslashes( stripslashes( $kba_a3 ), '"\\' );
|
116 |
+
$email = $user->user_email;
|
117 |
+
$kba_registration = new Two_Factor_Setup();
|
118 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
119 |
+
'mo2f_SecurityQuestions_config_status' => true,
|
120 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
121 |
+
'mo2f_user_email' => $email
|
122 |
+
));
|
123 |
+
$kba_reg_reponse = json_decode( $kba_registration->register_kba_details( $email, $kba_q1, $kba_a1, $kba_q2, $kba_a2, $kba_q3, $kba_a3, $user->ID ), true );
|
124 |
+
|
125 |
+
if($kba_reg_reponse['status']=='SUCCESS')
|
126 |
+
{
|
127 |
+
echo "SUCCESS";
|
128 |
+
exit;
|
129 |
+
}
|
130 |
+
else
|
131 |
+
{
|
132 |
+
echo "An error has occured while saving KBA details. Please try again.";
|
133 |
+
exit;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
function mo_2fa_send_otp_token()
|
137 |
+
{
|
138 |
+
$enduser = new Customer_Setup();
|
139 |
+
$email = sanitize_text_field($_POST['phone']);
|
140 |
+
$customer_key = get_site_option('mo2f_customerKey');
|
141 |
+
$api_key = get_site_option('mo2f_api_key');
|
142 |
+
$selected_2FA_method = sanitize_text_field($_POST['selected_2FA_method']);
|
143 |
+
$user_id = wp_get_current_user()->ID;
|
144 |
+
|
145 |
+
if($selected_2FA_method == 'OTP Over Email')
|
146 |
+
{
|
147 |
+
update_user_meta($user_id,'tempRegEmail',$email);
|
148 |
+
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
149 |
+
$emailErr = "Invalid email format";
|
150 |
+
echo $emailErr;
|
151 |
+
exit;
|
152 |
+
}
|
153 |
+
}
|
154 |
+
else if($selected_2FA_method == 'OTP Over SMS')
|
155 |
+
{
|
156 |
+
|
157 |
+
}
|
158 |
+
$content = $enduser->send_otp_token($email,$selected_2FA_method,$customer_key,$api_key);
|
159 |
+
$content = json_decode($content);
|
160 |
+
|
161 |
+
if($content->status =='SUCCESS')
|
162 |
+
{
|
163 |
+
echo 'SUCCESS';
|
164 |
+
update_user_meta($user_id,'txId',$content->txId);
|
165 |
+
update_user_meta($user_id,'tempRegPhone',$email);
|
166 |
+
exit;
|
167 |
+
}
|
168 |
+
else
|
169 |
+
echo "An error has occured while sending the OTP.";
|
170 |
+
exit;
|
171 |
+
}
|
172 |
+
function mo2f_check_and_create_user($user_id)
|
173 |
+
{
|
174 |
+
global $Mo2fdbQueries;
|
175 |
+
$twofactor_transactions = new Mo2fDB;
|
176 |
+
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user_id);
|
177 |
+
if($exceeded){
|
178 |
+
echo 'User Limit has been exceeded';
|
179 |
+
exit;
|
180 |
+
}
|
181 |
+
$Mo2fdbQueries->insert_user( $user_id );
|
182 |
+
}
|
183 |
+
function mo_2fa_verify_OTPOverSMS_setup_wizard()
|
184 |
+
{
|
185 |
+
global $Mo2fdbQueries;
|
186 |
+
$enduser = new Customer_Setup();
|
187 |
+
$current_user = wp_get_current_user();
|
188 |
+
$otpToken = sanitize_text_field($_POST['mo2f_otp_token']);
|
189 |
+
$user_id = wp_get_current_user()->ID;
|
190 |
+
$email = get_user_meta($user_id,'tempRegPhone',true);
|
191 |
+
$content = json_decode($enduser->validate_otp_token( 'SMS', null, get_user_meta($user_id,'txId',true), $otpToken, get_site_option('mo2f_customerKey'), get_site_option('mo2f_api_key') ),true);
|
192 |
+
|
193 |
+
if($content['status'] == 'SUCCESS')
|
194 |
+
{
|
195 |
+
$this->mo2f_check_and_create_user($user_id);
|
196 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
197 |
+
'mo2f_OTPOverSMS_config_status' => true,
|
198 |
+
'mo2f_configured_2FA_method' => "OTP Over SMS",
|
199 |
+
'mo2f_user_phone' => $email,
|
200 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
201 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
202 |
+
) );
|
203 |
+
echo "SUCCESS";
|
204 |
+
}
|
205 |
+
else
|
206 |
+
{
|
207 |
+
echo "Invalid OTP";
|
208 |
+
}
|
209 |
+
exit;
|
210 |
+
|
211 |
+
}
|
212 |
+
function mo_2fa_verify_OTPOverEmail_setup_wizard()
|
213 |
+
{
|
214 |
+
global $Mo2fdbQueries;
|
215 |
+
$enduser = new Customer_Setup();
|
216 |
+
$current_user = wp_get_current_user();
|
217 |
+
$otpToken = sanitize_text_field($_POST['mo2f_otp_token']);
|
218 |
+
$user_id = wp_get_current_user()->ID;
|
219 |
+
$email = get_user_meta($user_id,'tempRegEmail',true);
|
220 |
+
$content = json_decode($enduser->validate_otp_token( 'OTP_OVER_EMAIL', null, get_user_meta($current_user->ID,'mo2f_transactionId',true), $otpToken, get_site_option('mo2f_customerKey'), get_site_option('mo2f_api_key') ),true);
|
221 |
+
|
222 |
+
if($content['status'] == 'SUCCESS')
|
223 |
+
{
|
224 |
+
$this->mo2f_check_and_create_user($user_id);
|
225 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
226 |
+
'mo2f_OTPOverEmail_config_status' => true,
|
227 |
+
'mo2f_configured_2FA_method' => "OTP Over Email",
|
228 |
+
'mo2f_user_email' => $email,
|
229 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
230 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
231 |
+
) );
|
232 |
+
echo "SUCCESS";
|
233 |
+
}
|
234 |
+
else
|
235 |
+
{
|
236 |
+
echo "Invalid OTP";
|
237 |
+
}
|
238 |
+
exit;
|
239 |
+
}
|
240 |
+
function mo_2fa_verify_GA_setup_wizard()
|
241 |
+
{
|
242 |
+
global $Mo2fdbQueries;
|
243 |
+
$path = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'gaonprem.php';
|
244 |
+
include_once $path;
|
245 |
+
$obj_google_auth = new Google_auth_onpremise();
|
246 |
+
$user_id = wp_get_current_user()->ID;
|
247 |
+
$otpToken = sanitize_text_field($_POST['mo2f_google_auth_code']);
|
248 |
+
$session_id_encrypt = isset($_POST['mo2f_session_id']) ? sanitize_text_field($_POST['mo2f_session_id']) : null;
|
249 |
+
$secret= $obj_google_auth->mo_GAuth_get_secret($user_id);
|
250 |
+
if($session_id_encrypt){
|
251 |
+
$secret = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'secret_ga');
|
252 |
+
}
|
253 |
+
$content = $obj_google_auth->verifyCode($secret, $otpToken);
|
254 |
+
$content = json_decode($content);
|
255 |
+
if($content->status== 'false')
|
256 |
+
echo "Invalid One time Passcode. Please enter again";
|
257 |
+
else
|
258 |
+
{
|
259 |
+
$obj_google_auth->mo_GAuth_set_secret($user_id,$secret);
|
260 |
+
$this->mo2f_check_and_create_user($user_id);
|
261 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
262 |
+
'mo2f_GoogleAuthenticator_config_status' => true,
|
263 |
+
'mo2f_AuthyAuthenticator_config_status' => false,
|
264 |
+
'mo2f_configured_2FA_method' => "Google Authenticator",
|
265 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
266 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
267 |
+
) );
|
268 |
+
|
269 |
+
echo 'SUCCESS';
|
270 |
+
}
|
271 |
+
exit;
|
272 |
+
}
|
273 |
+
function mo_2fa_configure_GA_setup_wizard()
|
274 |
+
{
|
275 |
+
$path = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'gaonprem.php';
|
276 |
+
include_once $path;
|
277 |
+
$obj_google_auth = new Google_auth_onpremise();
|
278 |
+
update_option('mo2f_google_appname',$_SERVER['SERVER_NAME']);
|
279 |
+
$res = $obj_google_auth->mo_GAuth_get_details(true);
|
280 |
+
return $res;
|
281 |
+
}
|
282 |
+
function mo_2fa_configure_OTPOverSMS_setup_wizard()
|
283 |
+
{
|
284 |
+
global $Mo2fdbQueries;
|
285 |
+
$user = wp_get_current_user();
|
286 |
+
$mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user->ID );
|
287 |
+
$user_phone = $mo2f_user_phone ? $mo2f_user_phone : get_option( 'user_phone_temp' );
|
288 |
+
$session_id_encrypt = MO2f_Utility::random_str(20);
|
289 |
+
|
290 |
+
?>
|
291 |
+
<h4 style="padding:10px; background-color: #a7c5eb;font-weight:normal"> Remaining SMS Transactions: <b><?php echo get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z');?> </b></h4>
|
292 |
+
<form name="f" method="post" action="" id="mo2f_verifyphone_form">
|
293 |
+
<input type="hidden" name="option" value="mo2f_configure_otp_over_sms_send_otp"/>
|
294 |
+
<input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
|
295 |
+
<input type="hidden" name="mo2f_configure_otp_over_sms_send_otp_nonce"
|
296 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-sms-send-otp-nonce" ) ?>"/>
|
297 |
+
|
298 |
+
<div style="display:inline;">
|
299 |
+
<input class="mo2f_table_textbox_phone" style="width:200px;height: 30px;" type="text" name="phone" id="phone"
|
300 |
+
value="<?php echo $user_phone ?>" pattern="[\+]?[0-9]{1,4}\s?[0-9]{7,12}"
|
301 |
+
title="<?php echo mo2f_lt( 'Enter phone number without any space or dashes' ); ?>"/><br>
|
302 |
+
<input type="button" name="mo2f_send_otp" id="mo2f_send_otp" class="miniorange_button"
|
303 |
+
value="<?php echo mo2f_lt( 'Send OTP' ); ?>"/>
|
304 |
+
</div>
|
305 |
+
</form>
|
306 |
+
<br>
|
307 |
+
<form name="f" method="post" action="" id="mo2f_validateotp_form">
|
308 |
+
<input type="hidden" name="option" value="mo2f_configure_otp_over_sms_validate"/>
|
309 |
+
<input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
|
310 |
+
<input type="hidden" name="mo2f_configure_otp_over_sms_validate_nonce"
|
311 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-sms-validate-nonce" ) ?>"/>
|
312 |
+
<p><?php echo mo2f_lt( 'Enter One Time Passcode' ); ?></p>
|
313 |
+
<input class="mo2f_table_textbox_phone" style="width:200px;height: 30px" autofocus="true" type="text" name="mo2f_otp_token" id="mo2f_otp_token"
|
314 |
+
placeholder="<?php echo mo2f_lt( 'Enter OTP' ); ?>" style="width:95%;"/>
|
315 |
+
<br><br>
|
316 |
+
</form><br>
|
317 |
+
|
318 |
+
<?php
|
319 |
+
exit;
|
320 |
+
}
|
321 |
+
function mo_2fa_configure_OTPOverEmail_setup_wizard()
|
322 |
+
{
|
323 |
+
$session_id_encrypt = MO2f_Utility::random_str(20);
|
324 |
+
$user_email = wp_get_current_user()->user_email;
|
325 |
+
?>
|
326 |
+
<h4 style="padding:10px; background-color: #f1f3f5"> Remaining Email Transactions: <b><?php echo get_site_option('cmVtYWluaW5nT1RQ');?> </b></h4>
|
327 |
+
<form name="f" method="post" action="" id="mo2f_verifyemail_form">
|
328 |
+
<input type="hidden" name="option" value="mo2f_configure_otp_over_email_send_otp"/>
|
329 |
+
<input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
|
330 |
+
<input type="hidden" name="mo2f_configure_otp_over_email_send_otp_nonce"
|
331 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-email-send-otp-nonce" ) ?>"/>
|
332 |
+
|
333 |
+
<div style="display:inline;">
|
334 |
+
<b>Email Address: </b>
|
335 |
+
<input class="mo2f_table_textbox" style="width:280px;height: 30px;" type="email" name="verify_phone" id="phone"
|
336 |
+
value="<?php echo $user_email ?>"
|
337 |
+
title="<?php echo mo2f_lt( 'Enter your email address without any space or dashes' ); ?>"/><br><br>
|
338 |
+
<input type="button" name="mo2f_send_otp" id="mo2f_send_otp" class="miniorange_button"
|
339 |
+
value="<?php echo mo2f_lt( 'Send OTP' ); ?>"/>
|
340 |
+
</div>
|
341 |
+
</form>
|
342 |
+
<br><br>
|
343 |
+
<form name="f" method="post" action="" id="mo2f_validateotp_form">
|
344 |
+
<input type="hidden" name="option" value="mo2f_configure_otp_over_sms_validate"/>
|
345 |
+
<input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
|
346 |
+
<input type="hidden" name="mo2f_configure_otp_over_email_validate_nonce"
|
347 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-email-validate-nonce" ) ?>"/>
|
348 |
+
<b><?php echo mo2f_lt( 'Enter One Time Passcode:' ); ?>
|
349 |
+
<input class="mo2f_table_textbox" style="width:200px;height: 30px;" autofocus="true" type="text" name="mo2f_otp_token" id ="mo2f_otp_token"
|
350 |
+
placeholder="<?php echo mo2f_lt( 'Enter OTP' ); ?>" style="width:95%;"/></b>
|
351 |
+
<br><br>
|
352 |
+
</form><br>
|
353 |
+
|
354 |
+
<?php
|
355 |
+
exit;
|
356 |
+
}
|
357 |
+
function mo_2fa_configure_KBA_setup_wizard()
|
358 |
+
{
|
359 |
+
?>
|
360 |
+
<div class="mo2f_kba_header"><?php echo mo2f_lt( 'Please choose 3 questions' ); ?></div>
|
361 |
+
<br>
|
362 |
+
<table cellspacing="10">
|
363 |
+
<tr class="mo2f_kba_header">
|
364 |
+
<th style="width: 10%;">
|
365 |
+
<?php echo mo2f_lt( 'Sr. No.' ); ?>
|
366 |
+
</th>
|
367 |
+
<th class="mo2f_kba_tb_data">
|
368 |
+
<?php echo mo2f_lt( 'Questions' ); ?>
|
369 |
+
</th>
|
370 |
+
<th>
|
371 |
+
<?php echo mo2f_lt( 'Answers' ); ?>
|
372 |
+
</th>
|
373 |
+
</tr>
|
374 |
+
<tr class="mo2f_kba_body">
|
375 |
+
<td>
|
376 |
+
<center>1.</center>
|
377 |
+
</td>
|
378 |
+
<td class="mo2f_kba_tb_data">
|
379 |
+
<select name="mo2f_kbaquestion_1" id="mo2f_kbaquestion_1" class="mo2f_kba_ques" required="true"
|
380 |
+
>
|
381 |
+
<option value="" selected="selected">
|
382 |
+
-------------------------<?php echo mo2f_lt( 'Select your question' ); ?>
|
383 |
+
-------------------------
|
384 |
+
</option>
|
385 |
+
<option id="mq1_1"
|
386 |
+
value="What is your first company name?"><?php echo mo2f_lt( 'What is your first company name?' ); ?></option>
|
387 |
+
<option id="mq2_1"
|
388 |
+
value="What was your childhood nickname?"><?php echo mo2f_lt( 'What was your childhood nickname?' ); ?></option>
|
389 |
+
<option id="mq3_1"
|
390 |
+
value="In what city did you meet your spouse/significant other?"><?php echo mo2f_lt( 'In what city did you meet your spouse/significant other?' ); ?></option>
|
391 |
+
<option id="mq4_1"
|
392 |
+
value="What is the name of your favorite childhood friend?"><?php echo mo2f_lt( 'What is the name of your favorite childhood friend?' ); ?></option>
|
393 |
+
<option id="mq5_1"
|
394 |
+
value="What school did you attend for sixth grade?"><?php echo mo2f_lt( 'What school did you attend for sixth grade?' ); ?></option>
|
395 |
+
<option id="mq6_1"
|
396 |
+
value="In what city or town was your first job?"><?php echo mo2f_lt( 'In what city or town was your first job?' ); ?></option>
|
397 |
+
<option id="mq7_1"
|
398 |
+
value="What is your favourite sport?"><?php echo mo2f_lt( 'What is your favourite sport?' ); ?></option>
|
399 |
+
<option id="mq8_1"
|
400 |
+
value="Who is your favourite sports player?"><?php echo mo2f_lt( 'Who is your favourite sports player?' ); ?></option>
|
401 |
+
<option id="mq9_1"
|
402 |
+
value="What is your grandmother's maiden name?"><?php echo mo2f_lt( "What is your grandmother's maiden name?" ); ?></option>
|
403 |
+
<option id="mq10_1"
|
404 |
+
value="What was your first vehicle's registration number?"><?php echo mo2f_lt( "What was your first vehicle's registration number?" ); ?></option>
|
405 |
+
</select>
|
406 |
+
</td>
|
407 |
+
<td style="text-align: end;">
|
408 |
+
<input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans1" id="mo2f_kba_ans1"
|
409 |
+
title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&+-) are allowed.' ); ?>"
|
410 |
+
pattern="(?=\S)[A-Za-z0-9_@.$#&+\-\s]{1,100}" required="true" autofocus="true"
|
411 |
+
placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
|
412 |
+
</td>
|
413 |
+
</tr>
|
414 |
+
<tr class="mo2f_kba_body">
|
415 |
+
<td>
|
416 |
+
<center>2.</center>
|
417 |
+
</td>
|
418 |
+
<td class="mo2f_kba_tb_data">
|
419 |
+
<select name="mo2f_kbaquestion_2" id="mo2f_kbaquestion_2" class="mo2f_kba_ques" required="true"
|
420 |
+
>
|
421 |
+
<option value="" selected="selected">
|
422 |
+
-------------------------<?php echo mo2f_lt( 'Select your question' ); ?>
|
423 |
+
-------------------------
|
424 |
+
</option>
|
425 |
+
<option id="mq1_2"
|
426 |
+
value="What is your first company name?"><?php echo mo2f_lt( 'What is your first company name?' ); ?></option>
|
427 |
+
<option id="mq2_2"
|
428 |
+
value="What was your childhood nickname?"><?php echo mo2f_lt( 'What was your childhood nickname?' ); ?></option>
|
429 |
+
<option id="mq3_2"
|
430 |
+
value="In what city did you meet your spouse/significant other?"><?php echo mo2f_lt( 'In what city did you meet your spouse/significant other?' ); ?></option>
|
431 |
+
<option id="mq4_2"
|
432 |
+
value="What is the name of your favorite childhood friend?"><?php echo mo2f_lt( 'What is the name of your favorite childhood friend?' ); ?></option>
|
433 |
+
<option id="mq5_2"
|
434 |
+
value="What school did you attend for sixth grade?"><?php echo mo2f_lt( 'What school did you attend for sixth grade?' ); ?></option>
|
435 |
+
<option id="mq6_2"
|
436 |
+
value="In what city or town was your first job?"><?php echo mo2f_lt( 'In what city or town was your first job?' ); ?></option>
|
437 |
+
<option id="mq7_2"
|
438 |
+
value="What is your favourite sport?"><?php echo mo2f_lt( 'What is your favourite sport?' ); ?></option>
|
439 |
+
<option id="mq8_2"
|
440 |
+
value="Who is your favourite sports player?"><?php echo mo2f_lt( 'Who is your favourite sports player?' ); ?></option>
|
441 |
+
<option id="mq9_2"
|
442 |
+
value="What is your grandmother's maiden name?"><?php echo mo2f_lt( 'What is your grandmother\'s maiden name?' ); ?></option>
|
443 |
+
<option id="mq10_2"
|
444 |
+
value="What was your first vehicle's registration number?"><?php echo mo2f_lt( 'What was your first vehicle\'s registration number?' ); ?></option>
|
445 |
+
</select>
|
446 |
+
</td>
|
447 |
+
<td style="text-align: end;">
|
448 |
+
<input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans2" id="mo2f_kba_ans2"
|
449 |
+
title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&+-) are allowed.' ); ?>"
|
450 |
+
pattern="(?=\S)[A-Za-z0-9_@.$#&+\-\s]{1,100}" required="true"
|
451 |
+
placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
|
452 |
+
</td>
|
453 |
+
</tr>
|
454 |
+
<tr class="mo2f_kba_body">
|
455 |
+
<td>
|
456 |
+
<center>3.</center>
|
457 |
+
</td>
|
458 |
+
<td class="mo2f_kba_tb_data">
|
459 |
+
<input class="mo2f_kba_ques" type="text" style="width: 100%;"name="mo2f_kbaquestion_3" id="mo2f_kbaquestion_3"
|
460 |
+
required="true"
|
461 |
+
placeholder="<?php echo mo2f_lt( 'Enter your custom question here' ); ?>"/>
|
462 |
+
</td>
|
463 |
+
<td style="text-align: end;">
|
464 |
+
<input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans3" id="mo2f_kba_ans3"
|
465 |
+
title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&+-) are allowed.' ); ?>"
|
466 |
+
pattern="(?=\S)[A-Za-z0-9_@.$#&+\-\s]{1,100}" required="true"
|
467 |
+
placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
|
468 |
+
</td>
|
469 |
+
</tr>
|
470 |
+
</table>
|
471 |
+
<script type="text/javascript">
|
472 |
+
var mo_option_to_hide1;
|
473 |
+
//hidden element in dropdown list 2
|
474 |
+
var mo_option_to_hide2;
|
475 |
+
|
476 |
+
function mo_option_hide(list) {
|
477 |
+
//grab the team selected by the user in the dropdown list
|
478 |
+
var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
|
479 |
+
//if an element is currently hidden, unhide it
|
480 |
+
if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
|
481 |
+
mo_option_to_hide1.style.display = 'block';
|
482 |
+
} else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
|
483 |
+
mo_option_to_hide2.style.display = 'block';
|
484 |
+
}
|
485 |
+
//select the element to hide and then hide it
|
486 |
+
if (list == 1) {
|
487 |
+
if (list_selected != 0) {
|
488 |
+
mo_option_to_hide2 = document.getElementById("mq" + list_selected + "_2");
|
489 |
+
mo_option_to_hide2.style.display = 'none';
|
490 |
+
}
|
491 |
+
}
|
492 |
+
if (list == 2) {
|
493 |
+
if (list_selected != 0) {
|
494 |
+
mo_option_to_hide1 = document.getElementById("mq" + list_selected + "_1");
|
495 |
+
mo_option_to_hide1.style.display = 'none';
|
496 |
+
}
|
497 |
+
}
|
498 |
+
}
|
499 |
+
|
500 |
+
|
501 |
+
</script>
|
502 |
+
|
503 |
+
<?php
|
504 |
+
exit;
|
505 |
+
}
|
506 |
+
|
507 |
+
function mo2f_register_customer($post)
|
508 |
+
{
|
509 |
+
//validate and sanitize
|
510 |
+
global $moWpnsUtility, $Mo2fdbQueries;
|
511 |
+
$user = wp_get_current_user();
|
512 |
+
$email = sanitize_email($post['email']);
|
513 |
+
$company = $_SERVER["SERVER_NAME"];
|
514 |
+
|
515 |
+
$password = $post['password'];
|
516 |
+
$confirmPassword = $post['confirmPassword'];
|
517 |
+
|
518 |
+
if( strlen( $password ) < 6 || strlen( $confirmPassword ) < 6)
|
519 |
+
{
|
520 |
+
return "Password length is less then expected";
|
521 |
+
}
|
522 |
+
|
523 |
+
if( $password != $confirmPassword )
|
524 |
+
{
|
525 |
+
return "Password and confirm Password does not match.";
|
526 |
+
}
|
527 |
+
if( MoWpnsUtility::check_empty_or_null( $email ) || MoWpnsUtility::check_empty_or_null( $password )
|
528 |
+
|| MoWpnsUtility::check_empty_or_null( $confirmPassword ) )
|
529 |
+
{
|
530 |
+
return "Unknown Error has occured.";
|
531 |
+
}
|
532 |
+
|
533 |
+
update_option( 'mo2f_email', $email );
|
534 |
+
|
535 |
+
update_option( 'mo_wpns_company' , $company );
|
536 |
+
|
537 |
+
update_option( 'mo_wpns_password' , $password );
|
538 |
+
|
539 |
+
$customer = new MocURL();
|
540 |
+
$content = json_decode($customer->check_customer($email), true);
|
541 |
+
$Mo2fdbQueries->insert_user( $user->ID );
|
542 |
+
|
543 |
+
switch ($content['status'])
|
544 |
+
{
|
545 |
+
case 'CUSTOMER_NOT_FOUND':
|
546 |
+
$customerKey = json_decode($customer->create_customer($email, $company, $password, $phone = '', $first_name = '', $last_name = ''), true);
|
547 |
+
|
548 |
+
if(strcasecmp($customerKey['status'], 'SUCCESS') == 0)
|
549 |
+
{
|
550 |
+
update_site_option(base64_encode("totalUsersCloud"),get_site_option(base64_encode("totalUsersCloud"))+1);
|
551 |
+
update_option( 'mo2f_email', $email );
|
552 |
+
$this->save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
553 |
+
$this->_get_current_customer($email,$password);
|
554 |
+
return "SUCCESS";
|
555 |
+
}
|
556 |
+
|
557 |
+
break;
|
558 |
+
default:
|
559 |
+
$res = $this->_get_current_customer($email,$password);
|
560 |
+
if($res == "SUCCESS")
|
561 |
+
return $res;
|
562 |
+
return "Email is already registered in miniOrange. Please try to login to your account.";
|
563 |
+
|
564 |
+
}
|
565 |
+
|
566 |
+
}
|
567 |
+
function _verify_customer($post)
|
568 |
+
{
|
569 |
+
global $moWpnsUtility;
|
570 |
+
$email = sanitize_email( $post['email'] );
|
571 |
+
$password = sanitize_text_field( $post['password'] );
|
572 |
+
|
573 |
+
if( $moWpnsUtility->check_empty_or_null( $email ) || $moWpnsUtility->check_empty_or_null( $password ) )
|
574 |
+
{
|
575 |
+
return "Username or Password is missing.";
|
576 |
+
}
|
577 |
+
return $this->_get_current_customer($email,$password);
|
578 |
+
}
|
579 |
+
function _get_current_customer($email,$password)
|
580 |
+
{
|
581 |
+
global $Mo2fdbQueries;
|
582 |
+
$user = wp_get_current_user();
|
583 |
+
$customer = new MocURL();
|
584 |
+
$content = $customer->get_customer_key($email, $password);
|
585 |
+
$customerKey = json_decode($content, true);
|
586 |
+
if(json_last_error() == JSON_ERROR_NONE)
|
587 |
+
{
|
588 |
+
if(isset($customerKey['phone'])){
|
589 |
+
update_option( 'mo_wpns_admin_phone', $customerKey['phone'] );
|
590 |
+
}
|
591 |
+
update_option('mo2f_email',$email);
|
592 |
+
|
593 |
+
$this->save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
594 |
+
update_site_option(base64_encode("totalUsersCloud"),get_site_option(base64_encode("totalUsersCloud"))+1);
|
595 |
+
$customerT = new Customer_Cloud_Setup();
|
596 |
+
$content = json_decode( $customerT->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),'PREMIUM' ), true );
|
597 |
+
if($content['status'] == 'SUCCESS')
|
598 |
+
{
|
599 |
+
update_site_option('mo2f_license_type','PREMIUM');
|
600 |
+
}
|
601 |
+
else
|
602 |
+
{
|
603 |
+
update_site_option('mo2f_license_type','DEMO');
|
604 |
+
$content = json_decode( $customerT->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),'DEMO' ), true );
|
605 |
+
}
|
606 |
+
if(isset($content['smsRemaining']))
|
607 |
+
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',$content['smsRemaining']);
|
608 |
+
else if($content['status'] =='SUCCESS')
|
609 |
+
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',0);
|
610 |
+
|
611 |
+
if(isset($content['emailRemaining']))
|
612 |
+
{
|
613 |
+
if($content['emailRemaining']>30)
|
614 |
+
{
|
615 |
+
$currentTransaction = $content['emailRemaining'];
|
616 |
+
update_site_option('cmVtYWluaW5nT1RQ',$currentTransaction);
|
617 |
+
update_site_option('EmailTransactionCurrent',$content['emailRemaining']);
|
618 |
+
}
|
619 |
+
else if($content['emailRemaining'] == 10 and get_site_option('cmVtYWluaW5nT1RQ')>30)
|
620 |
+
{
|
621 |
+
update_site_option('cmVtYWluaW5nT1RQ',30);
|
622 |
+
}
|
623 |
+
}
|
624 |
+
return "SUCCESS";
|
625 |
+
}
|
626 |
+
else
|
627 |
+
{
|
628 |
+
update_option('mo_2factor_user_registration_status','MO_2_FACTOR_VERIFY_CUSTOMER' );
|
629 |
+
update_option('mo_wpns_verify_customer', 'true');
|
630 |
+
delete_option('mo_wpns_new_registration');
|
631 |
+
return "Invalid Username or Password";
|
632 |
+
}
|
633 |
+
}
|
634 |
+
|
635 |
+
|
636 |
+
function save_success_customer_config($email, $id, $apiKey, $token, $appSecret)
|
637 |
+
{
|
638 |
+
global $Mo2fdbQueries;
|
639 |
+
|
640 |
+
$user = wp_get_current_user();
|
641 |
+
update_option( 'mo2f_customerKey' , $id );
|
642 |
+
update_option( 'mo2f_api_key' , $apiKey );
|
643 |
+
update_option( 'mo2f_customer_token' , $token );
|
644 |
+
update_option( 'mo2f_app_secret' , $appSecret );
|
645 |
+
update_option( 'mo_wpns_enable_log_requests' , true );
|
646 |
+
update_option( 'mo2f_miniorange_admin', $user->ID );
|
647 |
+
update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
|
648 |
+
update_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS' );
|
649 |
+
|
650 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
651 |
+
'mo2f_user_email' => $email,
|
652 |
+
'user_registration_with_miniorange' => 'SUCCESS'
|
653 |
+
) );
|
654 |
+
$enduser = new Two_Factor_Setup();
|
655 |
+
$userinfo = json_decode( $enduser->mo2f_get_userinfo( $email ), true );
|
656 |
+
|
657 |
+
|
658 |
+
delete_option( 'mo_wpns_verify_customer' );
|
659 |
+
delete_option( 'mo_wpns_registration_status' );
|
660 |
+
delete_option( 'mo_wpns_password' );
|
661 |
+
}
|
662 |
+
|
663 |
+
function mo_wpns_register_verify_customer()
|
664 |
+
{
|
665 |
+
$res ="";
|
666 |
+
if(isset($_POST['Login_and_Continue']) && $_POST['Login_and_Continue'] =='Login and Continue')
|
667 |
+
$res = $this->_verify_customer($_POST);
|
668 |
+
|
669 |
+
else
|
670 |
+
$res = $this->mo2f_register_customer($_POST);
|
671 |
+
wp_send_json($res);
|
672 |
+
}
|
673 |
+
function mo2f_select_method_setup_wizard()
|
674 |
+
{
|
675 |
+
global $Mo2fdbQueries;
|
676 |
+
if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-select-method-setup-wizard'))
|
677 |
+
{
|
678 |
+
wp_send_json("ERROR");
|
679 |
+
}
|
680 |
+
|
681 |
+
$current_user = wp_get_current_user();
|
682 |
+
$selected_2FA_method = sanitize_text_field($_POST['mo2f_method']);
|
683 |
+
|
684 |
+
if(!MO2F_IS_ONPREM)
|
685 |
+
{
|
686 |
+
update_option('mo_2factor_user_registration_status','REGISTRATION_STARTED');
|
687 |
+
update_user_meta( $current_user->ID, 'register_account_popup', 1 );
|
688 |
+
update_user_meta( $current_user->ID, 'mo2f_2FA_method_to_configure', $selected_2FA_method );
|
689 |
+
wp_send_json("SUCCESS");
|
690 |
+
|
691 |
+
}
|
692 |
+
|
693 |
+
|
694 |
+
$exceeded = $Mo2fdbQueries->check_alluser_limit_exceeded($current_user->ID);
|
695 |
+
if(!$exceeded)
|
696 |
+
$Mo2fdbQueries->insert_user( $current_user->ID );
|
697 |
+
|
698 |
+
if($selected_2FA_method == 'OTP Over Email')
|
699 |
+
{
|
700 |
+
wp_send_json("SUCCESS");
|
701 |
+
}
|
702 |
+
update_user_meta( $current_user->ID, 'mo2f_2FA_method_to_configure', $selected_2FA_method );
|
703 |
+
|
704 |
+
$mo_2factor_admin_registration_status = get_option('mo_2factor_admin_registration_status');
|
705 |
+
if($selected_2FA_method == 'OTP Over SMS' && $mo_2factor_admin_registration_status != 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS')
|
706 |
+
{
|
707 |
+
update_option('mo_2factor_user_registration_status','REGISTRATION_STARTED');
|
708 |
+
update_user_meta( $current_user->ID, 'register_account_popup', 1 );
|
709 |
}
|
710 |
+
else
|
711 |
+
update_user_meta( $current_user->ID, 'configure_2FA', 1);
|
712 |
+
wp_send_json("SUCCESS");
|
713 |
+
}
|
714 |
+
function mo2f_set_miniorange_methods(){
|
715 |
+
$nonce = sanitize_text_field($_POST['nonce']);
|
716 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
|
717 |
+
$error = new WP_Error();
|
718 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
719 |
+
wp_send_json_error($error);
|
720 |
+
exit;
|
721 |
+
}
|
722 |
+
global $Mo2fdbQueries;
|
723 |
+
$transient_id=sanitize_text_field($_POST['transient_id']);
|
724 |
+
$user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
|
725 |
+
if(empty($user_id)){
|
726 |
+
wp_send_json('UserIdNotFound');
|
727 |
+
}
|
728 |
+
$user = get_user_by('id',$user_id);
|
729 |
+
$email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ):$user->user_email;
|
730 |
+
$otpToken=sanitize_text_field($_POST['code']);
|
731 |
+
$customer = new Customer_Setup();
|
732 |
+
$content = json_decode( $customer->validate_otp_token( 'SOFT TOKEN', $email, null, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
733 |
+
wp_send_json($content);
|
734 |
+
}
|
735 |
+
function mo2f_set_otp_over_sms(){
|
736 |
+
$nonce = sanitize_text_field($_POST['nonce']);
|
737 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
|
738 |
+
$error = new WP_Error();
|
739 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
740 |
+
wp_send_json_error($error);
|
741 |
+
exit;
|
742 |
+
}
|
743 |
+
global $Mo2fdbQueries;
|
744 |
+
$transient_id=sanitize_text_field($_POST['transient_id']);
|
745 |
+
$user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
|
746 |
+
if(empty($user_id)){
|
747 |
+
wp_send_json('UserIdNotFound');
|
748 |
+
}
|
749 |
+
$user = get_user_by('id',$user_id);
|
750 |
+
$new_phone = sanitize_text_field($_POST['phone']);
|
751 |
+
$new_phone = str_replace(' ','',$new_phone);
|
752 |
+
$Mo2fdbQueries->update_user_details($user_id, array("mo2f_user_phone" => $new_phone) );
|
753 |
+
$user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user_id );
|
754 |
+
wp_send_json($user_phone);
|
755 |
+
}
|
756 |
+
function mo2f_set_GA(){
|
757 |
+
$nonce = sanitize_text_field($_POST['nonce']);
|
758 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
|
759 |
+
$error = new WP_Error();
|
760 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
761 |
+
wp_send_json_error($error);
|
762 |
+
exit;
|
763 |
+
}
|
764 |
+
include_once dirname(dirname(dirname( __FILE__ ))) .DIRECTORY_SEPARATOR.'handler'. DIRECTORY_SEPARATOR.'twofa'. DIRECTORY_SEPARATOR. 'gaonprem.php';
|
765 |
+
global $Mo2fdbQueries;
|
766 |
+
$transient_id=sanitize_text_field($_POST['transient_id']);
|
767 |
+
$user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
|
768 |
+
if(empty($user_id)){
|
769 |
+
wp_send_json('UserIdNotFound');
|
770 |
+
}
|
771 |
+
$google_auth = new Miniorange_Rba_Attributes();
|
772 |
+
$user = get_user_by('id',$user_id);
|
773 |
+
$email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ):$user->user_email;
|
774 |
+
$otpToken = sanitize_text_field($_POST['code']);
|
775 |
+
$ga_secret = sanitize_text_field($_POST['ga_secret']);
|
776 |
+
if(MO2F_IS_ONPREM){
|
777 |
+
$gauth_obj = new Google_auth_onpremise();
|
778 |
+
$gauth_obj->mo_GAuth_set_secret($user_id, $ga_secret);
|
779 |
+
}else{
|
780 |
+
|
781 |
+
$google_auth = new Miniorange_Rba_Attributes();
|
782 |
+
$google_response = json_decode( $google_auth->mo2f_google_auth_service( $email, 'miniOrangeAu' ), true );
|
783 |
+
}
|
784 |
+
$google_response = json_decode($google_auth->mo2f_validate_google_auth($email,$otpToken,$ga_secret),true);
|
785 |
+
wp_send_json($google_response['status']);
|
786 |
}
|
787 |
+
function mo2f_ajax_login_redirect()
|
788 |
+
{
|
789 |
+
if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-2-factor-login-nonce'))
|
790 |
+
{
|
791 |
+
wp_send_json("ERROR");
|
792 |
+
exit;
|
793 |
+
}
|
794 |
+
$username = sanitize_text_field($_POST['username']);
|
795 |
+
$password = $_POST['password'];
|
796 |
+
apply_filters( 'authenticate', null, $username, $password );
|
797 |
+
}
|
798 |
function mo2f_save_custom_form_settings()
|
799 |
{
|
800 |
|
943 |
|
944 |
}
|
945 |
|
946 |
+
|
947 |
+
function mo2f_delete_log_file(){
|
948 |
+
$nonce = sanitize_text_field($_POST['mo2f_nonce_delete_log']);
|
949 |
+
|
950 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-nonce-delete-log' ) ) {
|
951 |
+
$error = new WP_Error();
|
952 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
953 |
+
|
954 |
+
}else{
|
955 |
+
$debug_log_path = wp_upload_dir();
|
956 |
+
$debug_log_path = $debug_log_path['basedir'];
|
957 |
+
$file_name = 'miniorange_debug_log.txt';
|
958 |
+
$status = file_exists( $debug_log_path.DIRECTORY_SEPARATOR.$file_name);
|
959 |
+
if($status){
|
960 |
+
unlink($debug_log_path.DIRECTORY_SEPARATOR.$file_name);
|
961 |
+
wp_send_json('true');
|
962 |
+
}
|
963 |
+
else{
|
964 |
+
wp_send_json('false');
|
965 |
+
}
|
966 |
+
}
|
967 |
+
}
|
968 |
+
function mo2f_enable_disable_debug_log(){
|
969 |
+
|
970 |
+
$nonce = sanitize_text_field($_POST['mo2f_nonce_enable_debug_log']);
|
971 |
+
|
972 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-nonce-enable-debug-log' ) ) {
|
973 |
+
$error = new WP_Error();
|
974 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
975 |
+
|
976 |
+
}
|
977 |
+
|
978 |
+
$enable = sanitize_text_field($_POST['mo2f_enable_debug_log']);
|
979 |
+
if($enable == 'true'){
|
980 |
+
update_site_option('mo2f_enable_debug_log' , 1);
|
981 |
+
wp_send_json('true');
|
982 |
+
}
|
983 |
+
else{
|
984 |
+
update_site_option('mo2f_enable_debug_log' , 0);
|
985 |
+
wp_send_json('false');
|
986 |
+
}
|
987 |
+
}
|
988 |
|
989 |
function mo2f_enable_disable_twofactor(){
|
990 |
$nonce = sanitize_text_field($_POST['mo2f_nonce_enable_2FA']);
|
1053 |
wp_send_json('false');
|
1054 |
}
|
1055 |
}
|
1056 |
+
function mo2f_enable_disable_configurd_methods(){
|
1057 |
+
$nonce = sanitize_text_field($_POST['nonce']);
|
1058 |
+
|
1059 |
+
if ( ! wp_verify_nonce( $nonce, 'WAFsettingNonce_configurd_methods' ) ) {
|
1060 |
+
wp_send_json_error("error");
|
1061 |
+
}
|
1062 |
+
$enable = sanitize_text_field($_POST['mo2f_nonce_enable_configured_methods']);
|
1063 |
+
|
1064 |
+
if($enable == 'true'){
|
1065 |
+
update_site_option('mo2f_nonce_enable_configured_methods' ,true);
|
1066 |
+
wp_send_json('true');
|
1067 |
+
}
|
1068 |
+
else{
|
1069 |
+
update_site_option('mo2f_nonce_enable_configured_methods' , false);
|
1070 |
+
wp_send_json('false');
|
1071 |
+
}
|
1072 |
+
}
|
1073 |
|
1074 |
function mo2f_role_based_2_factor(){
|
1075 |
if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
|
1159 |
}
|
1160 |
}
|
1161 |
}
|
|
|
1162 |
|
1163 |
function mo2f_save_email_verification()
|
1164 |
{
|
1242 |
exit;
|
1243 |
|
1244 |
}
|
1245 |
+
MO2f_Utility::mo2f_debug_file('OTP has been sent successfully over Email');
|
1246 |
update_user_meta( $user_id, 'configure_2FA', 1 );
|
1247 |
update_user_meta($user_id,'Mo2fOtpOverEmailtxId',$decoded['txId']);
|
1248 |
|
controllers/upgrade.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
2 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'upgrade.php';
|
3 |
MoWpnsUtility::checkSecurity();
|
4 |
-
update_site_option("mo_2fa_pnp",time());
|
|
1 |
<?php
|
2 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'upgrade.php';
|
3 |
MoWpnsUtility::checkSecurity();
|
4 |
+
update_site_option("mo_2fa_pnp",time());
|
5 |
+
update_site_option("mo2fa_visit",intval(get_site_option("mo2fa_visit",0))+1);
|
controllers/wpns-loginsecurity-ajax.php
CHANGED
@@ -4,6 +4,7 @@ class wpns_ajax
|
|
4 |
function __construct(){
|
5 |
//add comment here
|
6 |
add_action( 'admin_init' , array( $this, 'mo_login_security_ajax' ) );
|
|
|
7 |
}
|
8 |
|
9 |
function mo_login_security_ajax(){
|
@@ -24,7 +25,27 @@ class wpns_ajax
|
|
24 |
$this->mo2f_ajax_otp(); break;
|
25 |
}
|
26 |
}
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
function wpns_login_security(){
|
29 |
switch($_POST['wpns_loginsecurity_ajax'])
|
30 |
{
|
@@ -64,15 +85,15 @@ class wpns_ajax
|
|
64 |
function update_plan(){
|
65 |
$mo2f_all_plannames = $_POST['planname'];
|
66 |
$mo_2fa_plan_type = $_POST['planType'];
|
67 |
-
|
68 |
if ($mo2f_all_plannames == 'addon_plan')
|
69 |
{
|
70 |
-
|
71 |
update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
|
72 |
}
|
73 |
elseif ($mo2f_all_plannames == '2fa_plan')
|
74 |
{
|
75 |
-
|
76 |
update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
|
77 |
}
|
78 |
}
|
@@ -195,15 +216,15 @@ class wpns_ajax
|
|
195 |
{
|
196 |
$mo2f_all_plannames = $_POST['planname'];
|
197 |
$mo_2fa_plan_type = $_POST['planType'];
|
198 |
-
|
199 |
if ($mo2f_all_plannames == 'addon_plan')
|
200 |
{
|
201 |
-
|
202 |
update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
|
203 |
}
|
204 |
elseif ($mo2f_all_plannames == '2fa_plan')
|
205 |
{
|
206 |
-
|
207 |
update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
|
208 |
}
|
209 |
}
|
@@ -1278,28 +1299,60 @@ class wpns_ajax
|
|
1278 |
|
1279 |
|
1280 |
function wpns_captcha_settings(){
|
1281 |
-
|
|
|
1282 |
if ( ! wp_verify_nonce( $nonce, 'wpns-captcha' ) ){
|
1283 |
wp_send_json('ERROR');
|
1284 |
return;
|
1285 |
}
|
|
|
1286 |
$site_key = sanitize_text_field($_POST['site_key']);
|
1287 |
$secret_key = sanitize_text_field($_POST['secret_key']);
|
1288 |
-
$enable_captcha = $_POST['enable_captcha'];
|
1289 |
-
|
1290 |
-
$
|
1291 |
-
|
1292 |
-
$
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1296 |
wp_send_json('empty');
|
1297 |
return;
|
1298 |
-
}
|
|
|
1299 |
|
1300 |
-
|
1301 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1302 |
update_option( 'mo_wpns_activate_recaptcha' , $enable_captcha );
|
|
|
|
|
1303 |
|
1304 |
if($enable_captcha == "on"){
|
1305 |
update_option( 'mo_wpns_activate_recaptcha_for_login' , $login_form_captcha );
|
4 |
function __construct(){
|
5 |
//add comment here
|
6 |
add_action( 'admin_init' , array( $this, 'mo_login_security_ajax' ) );
|
7 |
+
add_action('init', array( $this, 'mo2fa_elementor_ajax_fun' ));
|
8 |
}
|
9 |
|
10 |
function mo_login_security_ajax(){
|
25 |
$this->mo2f_ajax_otp(); break;
|
26 |
}
|
27 |
}
|
28 |
+
function mo2fa_elementor_ajax_fun()
|
29 |
+
{
|
30 |
+
|
31 |
+
if (isset( $_POST['miniorange_elementor_login_nonce'])){
|
32 |
+
$nonce = sanitize_text_field($_POST['miniorange_elementor_login_nonce']);
|
33 |
+
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-nonce' ) ){
|
34 |
+
wp_send_json('ERROR');
|
35 |
+
}
|
36 |
+
if(isset($_POST['mo2fa_elementor_user_password']) && !empty($_POST['mo2fa_elementor_user_password']) && isset($_POST['mo2fa_elementor_user_name']))
|
37 |
+
{
|
38 |
+
$info = array();
|
39 |
+
$info['user_login'] = sanitize_text_field($_POST['mo2fa_elementor_user_name']);
|
40 |
+
$info['user_password'] = $_POST['mo2fa_elementor_user_password'];
|
41 |
+
$info['remember'] = false;
|
42 |
+
$user_signon = wp_signon($info, false);
|
43 |
+
if (is_wp_error($user_signon)) {
|
44 |
+
wp_send_json(array('loggedin'=>false, 'message'=>__('Wrong username or password.')));
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
}
|
49 |
function wpns_login_security(){
|
50 |
switch($_POST['wpns_loginsecurity_ajax'])
|
51 |
{
|
85 |
function update_plan(){
|
86 |
$mo2f_all_plannames = $_POST['planname'];
|
87 |
$mo_2fa_plan_type = $_POST['planType'];
|
88 |
+
update_site_option('mo2f_planname', $mo2f_all_plannames);
|
89 |
if ($mo2f_all_plannames == 'addon_plan')
|
90 |
{
|
91 |
+
update_site_option('mo2f_planname', 'addon_plan');
|
92 |
update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
|
93 |
}
|
94 |
elseif ($mo2f_all_plannames == '2fa_plan')
|
95 |
{
|
96 |
+
update_site_option('mo2f_planname', '2fa_plan');
|
97 |
update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
|
98 |
}
|
99 |
}
|
216 |
{
|
217 |
$mo2f_all_plannames = $_POST['planname'];
|
218 |
$mo_2fa_plan_type = $_POST['planType'];
|
219 |
+
update_site_option('mo2f_planname', $mo2f_all_plannames);
|
220 |
if ($mo2f_all_plannames == 'addon_plan')
|
221 |
{
|
222 |
+
update_site_option('mo2f_planname', 'addon_plan');
|
223 |
update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
|
224 |
}
|
225 |
elseif ($mo2f_all_plannames == '2fa_plan')
|
226 |
{
|
227 |
+
update_site_option('mo2f_planname', '2fa_plan');
|
228 |
update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
|
229 |
}
|
230 |
}
|
1299 |
|
1300 |
|
1301 |
function wpns_captcha_settings(){
|
1302 |
+
|
1303 |
+
$nonce=sanitize_text_field($_POST['nonce']);
|
1304 |
if ( ! wp_verify_nonce( $nonce, 'wpns-captcha' ) ){
|
1305 |
wp_send_json('ERROR');
|
1306 |
return;
|
1307 |
}
|
1308 |
+
|
1309 |
$site_key = sanitize_text_field($_POST['site_key']);
|
1310 |
$secret_key = sanitize_text_field($_POST['secret_key']);
|
1311 |
+
$enable_captcha = sanitize_text_field($_POST['enable_captcha']);
|
1312 |
+
$login_form_captcha = sanitize_text_field($_POST['login_form']);
|
1313 |
+
$reg_form_captcha = sanitize_text_field($_POST['registeration_form']);
|
1314 |
+
|
1315 |
+
if((isset($_POST['version'])))
|
1316 |
+
{
|
1317 |
+
$mo2f_g_version = sanitize_text_field($_POST['version']);
|
1318 |
+
}
|
1319 |
+
else $mo2f_g_version='reCAPTCHA_v3';
|
1320 |
+
|
1321 |
+
if($enable_captcha == 'true') $enable_captcha = "on";
|
1322 |
+
else if($enable_captcha == 'false') $enable_captcha = "";
|
1323 |
+
|
1324 |
+
if($login_form_captcha == 'true') $login_form_captcha = "on";
|
1325 |
+
else if($login_form_captcha == 'false') $login_form_captcha = "";
|
1326 |
+
|
1327 |
+
if($reg_form_captcha == 'true') $reg_form_captcha = "on";
|
1328 |
+
else if($reg_form_captcha == 'false') $reg_form_captcha = "";
|
1329 |
+
|
1330 |
+
if(($site_key == "" || $secret_key == "") and $enable_captcha == 'on'){
|
1331 |
wp_send_json('empty');
|
1332 |
return;
|
1333 |
+
}
|
1334 |
+
|
1335 |
|
1336 |
+
if((($login_form_captcha == "on") || ($enable_captcha=="on")) && $mo2f_g_version==""){
|
1337 |
+
wp_send_json('version_select');
|
1338 |
+
return;
|
1339 |
+
}
|
1340 |
+
if($mo2f_g_version=='reCAPTCHA_v2')
|
1341 |
+
{
|
1342 |
+
|
1343 |
+
update_option( 'mo_wpns_recaptcha_site_key' , $site_key );
|
1344 |
+
update_option( 'mo_wpns_recaptcha_secret_key' , $secret_key );
|
1345 |
+
}
|
1346 |
+
if($mo2f_g_version=='reCAPTCHA_v3')
|
1347 |
+
{
|
1348 |
+
|
1349 |
+
update_option( 'mo_wpns_recaptcha_site_key_v3' , $site_key );
|
1350 |
+
update_option( 'mo_wpns_recaptcha_secret_key_v3' , $secret_key );
|
1351 |
+
}
|
1352 |
+
|
1353 |
update_option( 'mo_wpns_activate_recaptcha' , $enable_captcha );
|
1354 |
+
update_option( 'mo_wpns_recaptcha_version' , $mo2f_g_version );
|
1355 |
+
|
1356 |
|
1357 |
if($enable_captcha == "on"){
|
1358 |
update_option( 'mo_wpns_activate_recaptcha_for_login' , $login_form_captcha );
|
database/database_functions_2fa.php
CHANGED
@@ -211,7 +211,6 @@ class Mo2fDB {
|
|
211 |
);
|
212 |
return $count;
|
213 |
}
|
214 |
-
|
215 |
function get_all_user_2fa_methods() {
|
216 |
global $wpdb;
|
217 |
$all_methods = [];
|
@@ -322,6 +321,11 @@ class Mo2fDB {
|
|
322 |
|
323 |
return $value == '' ? '' : $value[ $column_name ];
|
324 |
}
|
|
|
|
|
|
|
|
|
|
|
325 |
|
326 |
function delete_user_login_sessions($session_id ) {
|
327 |
global $wpdb;
|
211 |
);
|
212 |
return $count;
|
213 |
}
|
|
|
214 |
function get_all_user_2fa_methods() {
|
215 |
global $wpdb;
|
216 |
$all_methods = [];
|
321 |
|
322 |
return $value == '' ? '' : $value[ $column_name ];
|
323 |
}
|
324 |
+
function get_user_configured_methods( $user_id ) {
|
325 |
+
global $wpdb;
|
326 |
+
$user_methods_detail = $wpdb->get_results( "SELECT * FROM " . $this->userDetailsTable . " WHERE user_id = " . $user_id . ";" );
|
327 |
+
return $user_methods_detail;
|
328 |
+
}
|
329 |
|
330 |
function delete_user_login_sessions($session_id ) {
|
331 |
global $wpdb;
|
database/mo2f_db_options.php
CHANGED
@@ -21,6 +21,7 @@ $GLOBALS['scheduled_db_backup'] = 0;
|
|
21 |
$GLOBALS['file_backup_created_time'] = 0;
|
22 |
$GLOBALS['db_backup_created_time'] = 0;
|
23 |
$GLOBALS['mo2f_inline_registration'] = 1;
|
|
|
24 |
$GLOBALS['mo_database_backup'] = 1;
|
25 |
$GLOBALS['mo_wpns_scan_initialize'] = 1;
|
26 |
$GLOBALS['mo_file_manual_backup_plugins'] = 1;
|
@@ -35,3 +36,5 @@ $GLOBALS['bGltaXRSZWFjaGVk'] = 0;
|
|
35 |
$GLOBALS['mo2f_is_NC'] = 1;
|
36 |
$GLOBALS['mo2f_is_NNC'] = 1;
|
37 |
$GLOBALS['mo2f_enforce_strong_passswords'] = false;
|
|
|
|
21 |
$GLOBALS['file_backup_created_time'] = 0;
|
22 |
$GLOBALS['db_backup_created_time'] = 0;
|
23 |
$GLOBALS['mo2f_inline_registration'] = 1;
|
24 |
+
$GLOBALS['mo2f_nonce_enable_configured_methods'] = true;
|
25 |
$GLOBALS['mo_database_backup'] = 1;
|
26 |
$GLOBALS['mo_wpns_scan_initialize'] = 1;
|
27 |
$GLOBALS['mo_file_manual_backup_plugins'] = 1;
|
36 |
$GLOBALS['mo2f_is_NC'] = 1;
|
37 |
$GLOBALS['mo2f_is_NNC'] = 1;
|
38 |
$GLOBALS['mo2f_enforce_strong_passswords'] = false;
|
39 |
+
$GLOBALS['mo2f_enable_debug_log'] = 0;
|
40 |
+
$GLOBALS['mo2f_trial_query_sent'] = false;
|
handler/ajax.php
CHANGED
@@ -41,6 +41,10 @@ class AjaxHandler
|
|
41 |
case "plugin_warning_never_show_again":
|
42 |
$this->wpns_plugin_warning_never_show_again();
|
43 |
break;
|
|
|
|
|
|
|
|
|
44 |
|
45 |
case "dismissSms":
|
46 |
$this->wpns_sms_notice(); break;
|
@@ -56,6 +60,8 @@ class AjaxHandler
|
|
56 |
|
57 |
case "dismisscodeswarning":
|
58 |
$this->mo2f_backup_codes_dismiss(); break;
|
|
|
|
|
59 |
}
|
60 |
}
|
61 |
}
|
@@ -138,6 +144,12 @@ class AjaxHandler
|
|
138 |
wp_send_json('success');
|
139 |
}
|
140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
function wpns_dismiss_firewall_notice(){
|
142 |
update_site_option('waf_notification_option', 1);
|
143 |
update_site_option('notice_dismiss_time',time());
|
@@ -169,7 +181,7 @@ class AjaxHandler
|
|
169 |
update_user_meta($user_id, 'donot_show_backup_code_notice' , 1);
|
170 |
wp_send_json('success');
|
171 |
}
|
172 |
-
|
173 |
|
174 |
|
175 |
}new AjaxHandler;
|
41 |
case "plugin_warning_never_show_again":
|
42 |
$this->wpns_plugin_warning_never_show_again();
|
43 |
break;
|
44 |
+
|
45 |
+
case "mo2f_banner_never_show_again":
|
46 |
+
$this->wpns_mo2f_banner_never_show_again();
|
47 |
+
break;
|
48 |
|
49 |
case "dismissSms":
|
50 |
$this->wpns_sms_notice(); break;
|
60 |
|
61 |
case "dismisscodeswarning":
|
62 |
$this->mo2f_backup_codes_dismiss(); break;
|
63 |
+
|
64 |
+
|
65 |
}
|
66 |
}
|
67 |
}
|
144 |
wp_send_json('success');
|
145 |
}
|
146 |
|
147 |
+
function wpns_mo2f_banner_never_show_again(){
|
148 |
+
update_site_option('mo2f_banner_never_show_again', 1);
|
149 |
+
wp_send_json('success');
|
150 |
+
}
|
151 |
+
|
152 |
+
|
153 |
function wpns_dismiss_firewall_notice(){
|
154 |
update_site_option('waf_notification_option', 1);
|
155 |
update_site_option('notice_dismiss_time',time());
|
181 |
update_user_meta($user_id, 'donot_show_backup_code_notice' , 1);
|
182 |
wp_send_json('success');
|
183 |
}
|
184 |
+
|
185 |
|
186 |
|
187 |
}new AjaxHandler;
|
handler/feedback_form.php
CHANGED
@@ -20,6 +20,10 @@ class FeedbackHandler
|
|
20 |
case "mo_wpns_backup_download":
|
21 |
$this->mo2f_backup_download($_POST);
|
22 |
break;
|
|
|
|
|
|
|
|
|
23 |
|
24 |
}
|
25 |
}
|
@@ -127,6 +131,40 @@ class FeedbackHandler
|
|
127 |
}
|
128 |
}
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
function mo2f_backup_download($postdata){
|
131 |
global $wpnsDbQueries;
|
132 |
|
20 |
case "mo_wpns_backup_download":
|
21 |
$this->mo2f_backup_download($_POST);
|
22 |
break;
|
23 |
+
case "log_file_download":
|
24 |
+
$this->mo2f_download_log_file();
|
25 |
+
break;
|
26 |
+
|
27 |
|
28 |
}
|
29 |
}
|
131 |
}
|
132 |
}
|
133 |
|
134 |
+
function mo2f_download_log_file(){
|
135 |
+
ob_start();
|
136 |
+
$nonce = sanitize_text_field($_POST['mo2f_nonce_download_log']);
|
137 |
+
|
138 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-nonce-download-log' ) ) {
|
139 |
+
$error = new WP_Error();
|
140 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
141 |
+
|
142 |
+
}else{
|
143 |
+
|
144 |
+
|
145 |
+
$debug_log_path = wp_upload_dir();
|
146 |
+
$debug_log_path = $debug_log_path['basedir'];
|
147 |
+
$file_name = 'miniorange_debug_log.txt';
|
148 |
+
$status = file_exists($debug_log_path.DIRECTORY_SEPARATOR.$file_name);
|
149 |
+
if($status){
|
150 |
+
header("Pragma: public");
|
151 |
+
header("Expires: 0");
|
152 |
+
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
153 |
+
header("Content-Type: application/octet-stream");
|
154 |
+
header("Content-Disposition: attachment; filename=".$file_name);
|
155 |
+
header("Content-Transfer-Encoding: binary");
|
156 |
+
header("Content-Length: ".filesize($debug_log_path.DIRECTORY_SEPARATOR.$file_name));
|
157 |
+
while (ob_get_level()) {
|
158 |
+
ob_end_clean();
|
159 |
+
@readfile($debug_log_path.DIRECTORY_SEPARATOR.$file_name);
|
160 |
+
exit;
|
161 |
+
}
|
162 |
+
}else{
|
163 |
+
do_action('wpns_show_message','File does not exist.','ERROR');
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
function mo2f_backup_download($postdata){
|
169 |
global $wpnsDbQueries;
|
170 |
|
handler/logger.php
CHANGED
@@ -14,6 +14,7 @@ class mo2f_Logger
|
|
14 |
global $moWpnsUtility;
|
15 |
$mo_wpns_config = new MoWpnsHandler();
|
16 |
$userIp = $moWpnsUtility->get_client_ip();
|
|
|
17 |
$url = $moWpnsUtility->get_current_url();
|
18 |
$user = wp_get_current_user();
|
19 |
$username = is_user_logged_in() ? $user->user_login : 'GUEST';
|
@@ -28,6 +29,7 @@ class mo2f_Logger
|
|
28 |
return;
|
29 |
$mo_wpns_config = new MoWpnsHandler();
|
30 |
$userIp = $moWpnsUtility->get_client_ip();
|
|
|
31 |
$url = $moWpnsUtility->get_current_url();
|
32 |
$user = wp_get_current_user();
|
33 |
$username = is_user_logged_in() ? $user->user_login : 'GUEST';
|
14 |
global $moWpnsUtility;
|
15 |
$mo_wpns_config = new MoWpnsHandler();
|
16 |
$userIp = $moWpnsUtility->get_client_ip();
|
17 |
+
$userIp = sanitize_text_field( $userIp );
|
18 |
$url = $moWpnsUtility->get_current_url();
|
19 |
$user = wp_get_current_user();
|
20 |
$username = is_user_logged_in() ? $user->user_login : 'GUEST';
|
29 |
return;
|
30 |
$mo_wpns_config = new MoWpnsHandler();
|
31 |
$userIp = $moWpnsUtility->get_client_ip();
|
32 |
+
$userIp = sanitize_text_field( $userIp );
|
33 |
$url = $moWpnsUtility->get_current_url();
|
34 |
$user = wp_get_current_user();
|
35 |
$username = is_user_logged_in() ? $user->user_login : 'GUEST';
|
handler/login.php
CHANGED
@@ -35,7 +35,10 @@ class LoginHandler
|
|
35 |
|
36 |
function mo_wpns_init()
|
37 |
{
|
38 |
-
|
|
|
|
|
|
|
39 |
global $moWpnsUtility,$mo2f_dirName;
|
40 |
$WAFEnabled = get_option('WAFEnabled');
|
41 |
$WAFLevel = get_option('WAF');
|
@@ -51,15 +54,12 @@ class LoginHandler
|
|
51 |
{
|
52 |
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
|
53 |
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
|
54 |
-
else
|
55 |
-
{
|
56 |
-
//UNable to find file. Please reconfigure.
|
57 |
-
}
|
58 |
}
|
59 |
}
|
60 |
|
61 |
|
62 |
$userIp = $moWpnsUtility->get_client_ip();
|
|
|
63 |
$mo_wpns_config = new MoWpnsHandler();
|
64 |
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
65 |
$isIpBlocked = false;
|
@@ -113,39 +113,44 @@ class LoginHandler
|
|
113 |
}
|
114 |
|
115 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
function mo2f_IP_email_send()
|
118 |
{
|
119 |
-
global $moWpnsUtility;
|
120 |
$userIp = $moWpnsUtility->get_client_ip();
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
|
|
|
|
127 |
|
128 |
if ($check_Ip != $userIp)
|
129 |
-
{
|
130 |
-
|
131 |
-
$email = get_option('admin_email');
|
132 |
$subject ="Alert: New IP Detected";
|
133 |
$message = mo_IP_template();
|
134 |
$headers=array('Content-Type: text/html; charset=UTF-8');
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
if(is_email($email))
|
141 |
-
{
|
142 |
-
|
143 |
-
wp_mail( $email,$subject,$message,$headers);
|
144 |
-
|
145 |
-
}
|
146 |
-
|
147 |
-
}
|
148 |
-
|
149 |
}
|
150 |
|
151 |
function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
|
@@ -222,8 +227,17 @@ class LoginHandler
|
|
222 |
|
223 |
if($user)
|
224 |
{
|
|
|
225 |
if(get_option('mo_wpns_activate_recaptcha_for_login'))
|
226 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
|
228 |
if(!empty($recaptchaError->errors))
|
229 |
$error = $recaptchaError;
|
@@ -237,11 +251,11 @@ class LoginHandler
|
|
237 |
}
|
238 |
else
|
239 |
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid Username or password.'));
|
|
|
240 |
|
241 |
}
|
242 |
|
243 |
-
|
244 |
-
}
|
245 |
|
246 |
|
247 |
//Function to check user password
|
@@ -277,7 +291,7 @@ class LoginHandler
|
|
277 |
|
278 |
$mo_wpns_config = new MoWpnsHandler();
|
279 |
$userIp = $moWpnsUtility->get_client_ip();
|
280 |
-
|
281 |
$mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
|
282 |
|
283 |
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
@@ -321,7 +335,7 @@ class LoginHandler
|
|
321 |
{
|
322 |
global $moWpnsUtility;
|
323 |
$userIp = $moWpnsUtility->get_client_ip();
|
324 |
-
|
325 |
if(empty($userIp) || empty($username) || !MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
326 |
return;
|
327 |
|
35 |
|
36 |
function mo_wpns_init()
|
37 |
{
|
38 |
+
add_action( 'show_user_profile', array($this,'twofa_on_user_profile') ,10,3);
|
39 |
+
add_action( 'edit_user_profile', array($this,'twofa_on_user_profile') ,10,3);
|
40 |
+
add_action( 'personal_options_update', array( $this, 'user_two_factor_options_update' ) ,10,3);
|
41 |
+
add_action( 'edit_user_profile_update', array( $this, 'user_two_factor_options_update' ) ,10,3);
|
42 |
global $moWpnsUtility,$mo2f_dirName;
|
43 |
$WAFEnabled = get_option('WAFEnabled');
|
44 |
$WAFLevel = get_option('WAF');
|
54 |
{
|
55 |
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
|
56 |
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
}
|
59 |
|
60 |
|
61 |
$userIp = $moWpnsUtility->get_client_ip();
|
62 |
+
$userIp = sanitize_text_field( $userIp );
|
63 |
$mo_wpns_config = new MoWpnsHandler();
|
64 |
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
65 |
$isIpBlocked = false;
|
113 |
}
|
114 |
|
115 |
}
|
116 |
+
function twofa_on_user_profile( $user ) {
|
117 |
+
global $mo2f_dirName;
|
118 |
+
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa.php')){
|
119 |
+
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa.php');
|
120 |
+
}
|
121 |
+
}
|
122 |
+
function user_two_factor_options_update( $user ) {
|
123 |
+
global $mo2f_dirName;
|
124 |
+
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa-update.php')){
|
125 |
+
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa-update.php');
|
126 |
+
}
|
127 |
+
}
|
128 |
|
129 |
function mo2f_IP_email_send()
|
130 |
{
|
131 |
+
global $moWpnsUtility, $Mo2fdbQueries;
|
132 |
$userIp = $moWpnsUtility->get_client_ip();
|
133 |
+
$userIp = sanitize_text_field( $userIp );
|
134 |
+
$user = wp_get_current_user();
|
135 |
+
$user_id = $user->ID;
|
136 |
+
$meta_key = 'mo2f_user_IP';
|
137 |
+
add_user_meta($user->ID, $meta_key,$userIp);
|
138 |
+
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID);
|
139 |
+
if (empty($email)) {
|
140 |
+
$email = $user->user_email;
|
141 |
+
}
|
142 |
+
$check_Ip = get_user_meta($user->ID,$meta_key)[0];
|
143 |
|
144 |
if ($check_Ip != $userIp)
|
145 |
+
{
|
|
|
|
|
146 |
$subject ="Alert: New IP Detected";
|
147 |
$message = mo_IP_template();
|
148 |
$headers=array('Content-Type: text/html; charset=UTF-8');
|
149 |
+
if(is_email($email))
|
150 |
+
{
|
151 |
+
wp_mail( $email,$subject,$message,$headers);
|
152 |
+
}
|
153 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
|
227 |
|
228 |
if($user)
|
229 |
{
|
230 |
+
$moCURL=new MocURL;
|
231 |
if(get_option('mo_wpns_activate_recaptcha_for_login'))
|
232 |
+
{
|
233 |
+
$captcha_version=get_option('mo_wpns_recaptcha_version');
|
234 |
+
if($captcha_version=='reCAPTCHA_v3')
|
235 |
+
$recaptchaError = $moWpnsUtility->verify_recaptcha_3(sanitize_text_field($_POST['g-recaptcha-response']));
|
236 |
+
else if($captcha_version=='reCAPTCHA_v2')
|
237 |
+
$recaptchaError = $moWpnsUtility->verify_recaptcha(sanitize_text_field($_POST['g-recaptcha-response']));
|
238 |
+
|
239 |
+
}
|
240 |
+
}
|
241 |
|
242 |
if(!empty($recaptchaError->errors))
|
243 |
$error = $recaptchaError;
|
251 |
}
|
252 |
else
|
253 |
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid Username or password.'));
|
254 |
+
return $error;
|
255 |
|
256 |
}
|
257 |
|
258 |
+
|
|
|
259 |
|
260 |
|
261 |
//Function to check user password
|
291 |
|
292 |
$mo_wpns_config = new MoWpnsHandler();
|
293 |
$userIp = $moWpnsUtility->get_client_ip();
|
294 |
+
$userIp = sanitize_text_field( $userIp );
|
295 |
$mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
|
296 |
|
297 |
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
335 |
{
|
336 |
global $moWpnsUtility;
|
337 |
$userIp = $moWpnsUtility->get_client_ip();
|
338 |
+
$userIp = sanitize_text_field( $userIp );
|
339 |
if(empty($userIp) || empty($username) || !MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
340 |
return;
|
341 |
|
handler/malware_scanner.php
CHANGED
@@ -338,7 +338,7 @@ class Mo_wpns_Scan_Handler{
|
|
338 |
$cfile=curl_file_create($source_file_path, 'test/plain', time().basename($source_file_path));
|
339 |
$postdata = array('file' => $cfile);
|
340 |
$content_type = 'multipart/form-data';
|
341 |
-
$issues = $this->mo_wpns_malware_scan_request(
|
342 |
if ($issues) {
|
343 |
$scan_malware_count++;
|
344 |
$scanresult['scan'] = $issues;
|
@@ -409,7 +409,7 @@ class Mo_wpns_Scan_Handler{
|
|
409 |
$host = 'http://scanner.api.xecurify.com/malwareservice/rest/file/data';
|
410 |
$postdata = http_build_query(array('fileCount' => $nooffiles, 'maliciousCount' => $scan_malware_count));
|
411 |
$content_type = 'application/x-www-form-urlencoded';
|
412 |
-
$lastRequest = $this->mo_wpns_malware_scan_request(
|
413 |
}
|
414 |
update_option('mo_wpns_files_scanned', $nooffiles);
|
415 |
return array('file_count'=> $nooffiles, 'malware_count'=>$scan_malware_count, 'repo_issues'=>$repo_issue_count, 'malicious_link'=>$malicious_link_count, 'scan'=>$scanresults);
|
@@ -431,7 +431,7 @@ class Mo_wpns_Scan_Handler{
|
|
431 |
}
|
432 |
}
|
433 |
|
434 |
-
function mo_wpns_malware_scan_request($postdata = array()
|
435 |
$response = null;
|
436 |
$ch=curl_init($host);
|
437 |
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
|
338 |
$cfile=curl_file_create($source_file_path, 'test/plain', time().basename($source_file_path));
|
339 |
$postdata = array('file' => $cfile);
|
340 |
$content_type = 'multipart/form-data';
|
341 |
+
$issues = $this->mo_wpns_malware_scan_request( $host, $content_type,$postdata);
|
342 |
if ($issues) {
|
343 |
$scan_malware_count++;
|
344 |
$scanresult['scan'] = $issues;
|
409 |
$host = 'http://scanner.api.xecurify.com/malwareservice/rest/file/data';
|
410 |
$postdata = http_build_query(array('fileCount' => $nooffiles, 'maliciousCount' => $scan_malware_count));
|
411 |
$content_type = 'application/x-www-form-urlencoded';
|
412 |
+
$lastRequest = $this->mo_wpns_malware_scan_request( $host, $content_type,$postdata);
|
413 |
}
|
414 |
update_option('mo_wpns_files_scanned', $nooffiles);
|
415 |
return array('file_count'=> $nooffiles, 'malware_count'=>$scan_malware_count, 'repo_issues'=>$repo_issue_count, 'malicious_link'=>$malicious_link_count, 'scan'=>$scanresults);
|
431 |
}
|
432 |
}
|
433 |
|
434 |
+
function mo_wpns_malware_scan_request( $host, $content_type,$postdata = array()){
|
435 |
$response = null;
|
436 |
$ch=curl_init($host);
|
437 |
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
|
handler/malware_scanner/malware_scanner_cron.php
CHANGED
@@ -193,7 +193,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
193 |
}
|
194 |
}
|
195 |
}
|
196 |
-
$result = $this->iterator_plugins_themes($all_plugins, $wp_plugin_repo_file,
|
197 |
if($result === -99){
|
198 |
$scan_config['check_repo'] = 0;
|
199 |
$repo_check_status_code = -99;
|
@@ -264,7 +264,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
264 |
}
|
265 |
update_site_option('mo2f_download_info', $download_info);
|
266 |
|
267 |
-
$result = $this->iterator_plugins_themes($all_themes, $wp_theme_repo_file,
|
268 |
if($result === -99){
|
269 |
$scan_config['check_repo'] = 0;
|
270 |
$repo_check_status_code = -99;
|
@@ -297,7 +297,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
297 |
$response=$Mo_wpns_Scan_Handler_Cron->mo2f_wp_remote_get($scan_config['type_scan'], $reportid, $scanverification, $scan_stage_complete);
|
298 |
}
|
299 |
|
300 |
-
function iterator_plugins_themes($themes_or_plugins, $path, $
|
301 |
$downloaded_already= get_site_option('mo2f_download_done');
|
302 |
if($downloaded_already == false){
|
303 |
$downloaded_already=0;
|
@@ -488,7 +488,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
488 |
}
|
489 |
}
|
490 |
|
491 |
-
function mo_wpns_malware_scan_request($postdata = array()
|
492 |
$response = null;
|
493 |
$ch=curl_init($host);
|
494 |
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
|
@@ -785,7 +785,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
785 |
return $avergaeTimeEachFile;
|
786 |
}
|
787 |
|
788 |
-
function get_scan_result_parts($mo2f_malware_db_handler=null, $folderpaths=array()
|
789 |
if(!empty($folderpaths)){
|
790 |
if ( in_array( 'curl', get_loaded_extensions() ) ) {
|
791 |
$scanresults=array();
|
@@ -883,7 +883,7 @@ class Mo_wpns_Scan_Handler_Cron{
|
|
883 |
$postdata = array('file' => $cfile);
|
884 |
|
885 |
$content_type = 'multipart/form-data';
|
886 |
-
$issues = $this->mo_wpns_malware_scan_request($
|
887 |
if ($issues) {
|
888 |
$scan_malware_count++;
|
889 |
$scanresult['scan'] = $issues;
|
193 |
}
|
194 |
}
|
195 |
}
|
196 |
+
$result = $this->iterator_plugins_themes($all_plugins, $wp_plugin_repo_file, $start_time, $time_limit,$scan_config,$reportid, $scanverification, 'plugins');
|
197 |
if($result === -99){
|
198 |
$scan_config['check_repo'] = 0;
|
199 |
$repo_check_status_code = -99;
|
264 |
}
|
265 |
update_site_option('mo2f_download_info', $download_info);
|
266 |
|
267 |
+
$result = $this->iterator_plugins_themes($all_themes, $wp_theme_repo_file, $start_time, $time_limit,$scan_config,$reportid,$scanverification, 'themes');
|
268 |
if($result === -99){
|
269 |
$scan_config['check_repo'] = 0;
|
270 |
$repo_check_status_code = -99;
|
297 |
$response=$Mo_wpns_Scan_Handler_Cron->mo2f_wp_remote_get($scan_config['type_scan'], $reportid, $scanverification, $scan_stage_complete);
|
298 |
}
|
299 |
|
300 |
+
function iterator_plugins_themes($themes_or_plugins, $path, $start_time, $time_limit, $scan_config,$reportid, $scanverification, $type=''){
|
301 |
$downloaded_already= get_site_option('mo2f_download_done');
|
302 |
if($downloaded_already == false){
|
303 |
$downloaded_already=0;
|
488 |
}
|
489 |
}
|
490 |
|
491 |
+
function mo_wpns_malware_scan_request( $host, $content_type,$postdata = array()){
|
492 |
$response = null;
|
493 |
$ch=curl_init($host);
|
494 |
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
|
785 |
return $avergaeTimeEachFile;
|
786 |
}
|
787 |
|
788 |
+
function get_scan_result_parts( $scan_config, $start_time, $time_limit,$mo2f_malware_db_handler=null, $folderpaths=array()){
|
789 |
if(!empty($folderpaths)){
|
790 |
if ( in_array( 'curl', get_loaded_extensions() ) ) {
|
791 |
$scanresults=array();
|
883 |
$postdata = array('file' => $cfile);
|
884 |
|
885 |
$content_type = 'multipart/form-data';
|
886 |
+
$issues = $this->mo_wpns_malware_scan_request($host, $content_type,$postdata);
|
887 |
if ($issues) {
|
888 |
$scan_malware_count++;
|
889 |
$scanresult['scan'] = $issues;
|
handler/malware_scanner/scanner_set_cron.php
CHANGED
@@ -124,7 +124,7 @@ class mo2f_scanner_parts
|
|
124 |
$host = 'http://scanner.api.xecurify.com/malwareservice/rest/file/data';
|
125 |
$postdata = http_build_query(array('fileCount' => $last_scan, 'maliciousCount' => $scan_malware_count));
|
126 |
$content_type = 'application/x-www-form-urlencoded';
|
127 |
-
$lastRequest = $mo_wpns_scan_handler->mo_wpns_malware_scan_request($
|
128 |
}
|
129 |
$Mo_wpns_Scan_Handler_Cron = new Mo_wpns_Scan_Handler_Cron();
|
130 |
$response=$Mo_wpns_Scan_Handler_Cron->mo2f_wp_remote_get($scan_config['type_scan'], $reportid, $scanverification, 2);
|
@@ -132,7 +132,7 @@ class mo2f_scanner_parts
|
|
132 |
}else{//sending next 100 files
|
133 |
$current_time= time();
|
134 |
$time_limit= ini_get('max_execution_time');
|
135 |
-
$result=$mo_wpns_scan_handler->get_scan_result_parts($
|
136 |
|
137 |
if($result['scan']){
|
138 |
foreach ($result['scan'] as $key => $value) {
|
124 |
$host = 'http://scanner.api.xecurify.com/malwareservice/rest/file/data';
|
125 |
$postdata = http_build_query(array('fileCount' => $last_scan, 'maliciousCount' => $scan_malware_count));
|
126 |
$content_type = 'application/x-www-form-urlencoded';
|
127 |
+
$lastRequest = $mo_wpns_scan_handler->mo_wpns_malware_scan_request($host, $content_type,$postdata);
|
128 |
}
|
129 |
$Mo_wpns_Scan_Handler_Cron = new Mo_wpns_Scan_Handler_Cron();
|
130 |
$response=$Mo_wpns_Scan_Handler_Cron->mo2f_wp_remote_get($scan_config['type_scan'], $reportid, $scanverification, 2);
|
132 |
}else{//sending next 100 files
|
133 |
$current_time= time();
|
134 |
$time_limit= ini_get('max_execution_time');
|
135 |
+
$result=$mo_wpns_scan_handler->get_scan_result_parts($scan_config, $current_time, $time_limit,$mo2f_malware_db_handler, $files_to_scan);
|
136 |
|
137 |
if($result['scan']){
|
138 |
foreach ($result['scan'] as $key => $value) {
|
handler/recaptcha.php
CHANGED
@@ -24,6 +24,7 @@
|
|
24 |
if(array_key_exists('g-recaptcha-response',$_POST))
|
25 |
{
|
26 |
$userIp = $moWpnsUtility->get_client_ip();
|
|
|
27 |
$mocURL = new MocURL;
|
28 |
$response = $mocURL->validate_recaptcha($userIp,sanitize_text_field($_POST['g-recaptcha-response']));
|
29 |
$content = json_decode($response, true);
|
@@ -34,30 +35,70 @@
|
|
34 |
else
|
35 |
echo "<br><br><h2 style=color:red;text-align:center>Invalid captcha. Please try again.</h2>";
|
36 |
}
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
}
|
40 |
}
|
41 |
|
42 |
|
43 |
-
|
|
|
|
|
|
|
44 |
{
|
45 |
-
if(get_option('
|
46 |
-
|
|
|
|
|
47 |
echo "<script src='".MoWpnsConstants::RECAPTCHA_URL."'></script>";
|
48 |
echo '<div class="g-recaptcha" data-sitekey="'.get_option("mo_wpns_recaptcha_site_key").'"></div>';
|
49 |
echo '<style>#login{ width:349px;padding:2% 0 0; }.g-recaptcha{margin-bottom:5%;}#loginform{padding-bottom:20px;}</style>';
|
50 |
}
|
51 |
}
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
60 |
}
|
|
|
61 |
|
62 |
function woocommerce_register_with_captcha(){
|
63 |
if(get_option('mo_wpns_activate_recaptcha_for_woocommerce_registration'))
|
@@ -95,6 +136,7 @@
|
|
95 |
{
|
96 |
global $moWpnsUtility;
|
97 |
$userIp = $moWpnsUtility->get_client_ip();
|
|
|
98 |
$mocURL = new MocURL;
|
99 |
$response = $mocURL->validate_recaptcha($userIp,$response);
|
100 |
$content = json_decode($response, true);
|
@@ -102,5 +144,17 @@
|
|
102 |
return $isvalid;
|
103 |
}
|
104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
new mo2f_ReCaptcha;
|
24 |
if(array_key_exists('g-recaptcha-response',$_POST))
|
25 |
{
|
26 |
$userIp = $moWpnsUtility->get_client_ip();
|
27 |
+
$userIp = sanitize_text_field( $userIp );
|
28 |
$mocURL = new MocURL;
|
29 |
$response = $mocURL->validate_recaptcha($userIp,sanitize_text_field($_POST['g-recaptcha-response']));
|
30 |
$content = json_decode($response, true);
|
35 |
else
|
36 |
echo "<br><br><h2 style=color:red;text-align:center>Invalid captcha. Please try again.</h2>";
|
37 |
}
|
38 |
+
show_google_recaptcha_form_v2();
|
39 |
+
}
|
40 |
+
if(isset($_REQUEST['option']) && $_REQUEST['option']=='testrecaptchaconfig3')
|
41 |
+
{
|
42 |
+
if(array_key_exists('g-recaptcha-response',$_REQUEST))
|
43 |
+
{
|
44 |
+
$userIp = $moWpnsUtility->get_client_ip();
|
45 |
+
$userIp = sanitize_text_field( $userIp );
|
46 |
+
$mocURL = new MocURL;
|
47 |
+
|
48 |
+
$response = $mocURL->get_Captcha_v3($_REQUEST['g-recaptcha-response']);
|
49 |
+
|
50 |
+
$content = json_decode($response, true);
|
51 |
+
if(isset($content['error-codes']) && in_array("invalid-input-secret", $content['error-codes']))
|
52 |
+
echo "<br><br><h2 style=color:red;text-align:center>Invalid Secret Key.</h2>";
|
53 |
+
else if(isset($content['success']) && $content['success']==1)
|
54 |
+
{
|
55 |
+
|
56 |
+
if($content['success']==1)
|
57 |
+
{
|
58 |
+
if($content['score']>=0.9)
|
59 |
+
{
|
60 |
+
echo "<br><br><h2 style=color:green;text-align:center>Welcome!</h2>";
|
61 |
+
echo "<h2 style=color:green;text-align:center>Test was successful and captcha verified.</h2>";
|
62 |
+
}
|
63 |
+
else echo "<br><br><h2 style=color:red;text-align:center>Captcha verification failed! Permission denied.</h2>";
|
64 |
+
}
|
65 |
+
}
|
66 |
+
else
|
67 |
+
echo "<br><br><h2 style=color:red;text-align:center>Invalid captcha. Please try again.</h2>";
|
68 |
+
}
|
69 |
+
show_google_recaptcha_form_v3();
|
70 |
}
|
71 |
}
|
72 |
}
|
73 |
|
74 |
|
75 |
+
function custom_login_fields()
|
76 |
+
{
|
77 |
+
global $moWpnsUtility,$mo2f_dirName;
|
78 |
+
if(get_option('mo_wpns_activate_recaptcha_for_login') && MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option'))
|
79 |
{
|
80 |
+
if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v3')
|
81 |
+
show_google_recaptcha_form_v3_login();
|
82 |
+
else if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v2')
|
83 |
+
{
|
84 |
echo "<script src='".MoWpnsConstants::RECAPTCHA_URL."'></script>";
|
85 |
echo '<div class="g-recaptcha" data-sitekey="'.get_option("mo_wpns_recaptcha_site_key").'"></div>';
|
86 |
echo '<style>#login{ width:349px;padding:2% 0 0; }.g-recaptcha{margin-bottom:5%;}#loginform{padding-bottom:20px;}</style>';
|
87 |
}
|
88 |
}
|
89 |
+
}
|
90 |
+
|
91 |
+
|
92 |
+
function register_with_captcha(){
|
93 |
+
global $moWpnsUtility,$mo2f_dirName;
|
94 |
+
if(get_option('mo_wpns_activate_recaptcha_for_registration'))
|
95 |
+
{
|
96 |
+
if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v3')
|
97 |
+
show_google_recaptcha_form_v3_login();
|
98 |
+
else if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v2')
|
99 |
+
show_google_recaptcha_form_v2_login();
|
100 |
}
|
101 |
+
}
|
102 |
|
103 |
function woocommerce_register_with_captcha(){
|
104 |
if(get_option('mo_wpns_activate_recaptcha_for_woocommerce_registration'))
|
136 |
{
|
137 |
global $moWpnsUtility;
|
138 |
$userIp = $moWpnsUtility->get_client_ip();
|
139 |
+
$userIp = sanitize_text_field( $userIp );
|
140 |
$mocURL = new MocURL;
|
141 |
$response = $mocURL->validate_recaptcha($userIp,$response);
|
142 |
$content = json_decode($response, true);
|
144 |
return $isvalid;
|
145 |
}
|
146 |
|
147 |
+
public static function recaptcha_verify_3($response)
|
148 |
+
{
|
149 |
+
global $moWpnsUtility;
|
150 |
+
$userIp = $moWpnsUtility->get_client_ip();
|
151 |
+
$userIp = sanitize_text_field( $userIp );
|
152 |
+
$mocURL = new MocURL;
|
153 |
+
$response = $mocURL->get_Captcha_v3($response);
|
154 |
+
$content = json_decode($response, true);
|
155 |
+
$isvalid = isset($content['success']) && $content['success']==1 && $content['score']>=0.9? true : false;
|
156 |
+
return $isvalid;
|
157 |
+
}
|
158 |
+
|
159 |
}
|
160 |
new mo2f_ReCaptcha;
|
handler/registration.php
CHANGED
@@ -43,8 +43,14 @@ class RegistrationHandler
|
|
43 |
{
|
44 |
|
45 |
global $moWpnsUtility;
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
if(get_site_option('mo_wpns_enable_fake_domain_blocking')){
|
49 |
if($moWpnsUtility->check_if_valid_email($user_email) && empty($recaptchaError->errors))
|
50 |
$errors->add( 'blocked_email_error', __( '<strong>ERROR</strong>: Your email address is not allowed to register. Please select different email address.') );
|
43 |
{
|
44 |
|
45 |
global $moWpnsUtility;
|
46 |
+
if(get_option('mo_wpns_activate_recaptcha_for_registration')){
|
47 |
+
if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v3')
|
48 |
+
$recaptchaError = $moWpnsUtility->verify_recaptcha_3(sanitize_text_field($_POST['g-recaptcha-response']));
|
49 |
+
else if(get_option('mo_wpns_recaptcha_version')=='reCAPTCHA_v2')
|
50 |
+
$recaptchaError = $moWpnsUtility->verify_recaptcha(sanitize_text_field($_POST['g-recaptcha-response']));
|
51 |
+
if(!empty($recaptchaError->errors))
|
52 |
+
$errors = $recaptchaError;
|
53 |
+
}
|
54 |
if(get_site_option('mo_wpns_enable_fake_domain_blocking')){
|
55 |
if($moWpnsUtility->check_if_valid_email($user_email) && empty($recaptchaError->errors))
|
56 |
$errors->add( 'blocked_email_error', __( '<strong>ERROR</strong>: Your email address is not allowed to register. Please select different email address.') );
|
handler/twofa/class_miniorange_2fa_strong_password.php
CHANGED
@@ -20,7 +20,7 @@ class class_miniorange_2fa_strong_password {
|
|
20 |
}
|
21 |
public static function validatePassword($errors, $update, $userData){
|
22 |
$Users = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option');
|
23 |
-
$UserRole
|
24 |
if(is_null($UserRole) and $Users == 'user')
|
25 |
{
|
26 |
return true;
|
20 |
}
|
21 |
public static function validatePassword($errors, $update, $userData){
|
22 |
$Users = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option');
|
23 |
+
$UserRole = isset($_POST['role'])?sanitize_text_field($_POST['role']):NULL;
|
24 |
if(is_null($UserRole) and $Users == 'user')
|
25 |
{
|
26 |
return true;
|
handler/twofa/gaonprem.php
CHANGED
@@ -6,7 +6,7 @@ class Google_auth_onpremise{
|
|
6 |
|
7 |
}
|
8 |
|
9 |
-
function mo_GAuth_get_details()
|
10 |
{
|
11 |
|
12 |
$user=wp_get_current_user();
|
@@ -28,10 +28,16 @@ class Google_auth_onpremise{
|
|
28 |
$email=$user->user_email;
|
29 |
$otpcode=$this->getCode($secret_ga);
|
30 |
$url=$this->geturl($secret_ga ,$issuer,$email);
|
31 |
-
|
|
|
|
|
32 |
mo2f_configure_google_authenticator_onprem( $secret_ga ,$url,$otpcode, $session_id_encrypt );
|
33 |
echo '</div>';
|
34 |
-
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
function mo_GAuth_set_secret($user_id,$secret){
|
6 |
|
7 |
}
|
8 |
|
9 |
+
function mo_GAuth_get_details($setupWizard = false)
|
10 |
{
|
11 |
|
12 |
$user=wp_get_current_user();
|
28 |
$email=$user->user_email;
|
29 |
$otpcode=$this->getCode($secret_ga);
|
30 |
$url=$this->geturl($secret_ga ,$issuer,$email);
|
31 |
+
if(!$setupWizard)
|
32 |
+
{
|
33 |
+
echo '<div class="mo2f_table_layout">';
|
34 |
mo2f_configure_google_authenticator_onprem( $secret_ga ,$url,$otpcode, $session_id_encrypt );
|
35 |
echo '</div>';
|
36 |
+
}
|
37 |
+
else
|
38 |
+
{
|
39 |
+
mo2f_configure_google_authenticator_setupWizard($secret_ga ,$url,$otpcode, $session_id_encrypt);
|
40 |
+
}
|
41 |
}
|
42 |
|
43 |
function mo_GAuth_set_secret($user_id,$secret){
|
handler/twofa/setup_twofa.php
CHANGED
@@ -8,7 +8,6 @@
|
|
8 |
include $setup_dirName.'setup_miniorange_authenticator.php';
|
9 |
include $setup_dirName.'setup_otp_over_sms.php';
|
10 |
include $setup_dirName.'setup_otp_over_telegram.php';
|
11 |
-
include $setup_dirName.'setup_otp_over_whatsapp.php';
|
12 |
include $setup_dirName.'setup_duo_authenticator.php';
|
13 |
include $test_dirName.'test_twofa_email_verification.php';
|
14 |
include $test_dirName.'test_twofa_duo_authenticator.php';
|
@@ -19,8 +18,7 @@
|
|
19 |
include $test_dirName.'test_twofa_miniorange_soft_token.php';
|
20 |
include $test_dirName.'test_twofa_otp_over_sms.php';
|
21 |
include $test_dirName.'test_twofa_otp_over_Telegram.php';
|
22 |
-
|
23 |
-
|
24 |
function mo2f_decode_2_factor( $selected_2_factor_method, $decode_type ) {
|
25 |
|
26 |
if ( $selected_2_factor_method == 'NONE' ) {
|
@@ -83,16 +81,19 @@
|
|
83 |
|
84 |
function mo2f_create_2fa_form( $user, $category, $auth_methods, $can_display_admin_features='' ) {
|
85 |
global $Mo2fdbQueries;
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
$all_two_factor_methods = array(
|
87 |
-
"miniOrange
|
88 |
-
"miniOrange Soft Token",
|
89 |
-
"miniOrange Push Notification",
|
90 |
"Google Authenticator",
|
91 |
"Security Questions",
|
92 |
"OTP Over SMS",
|
93 |
"OTP Over Email",
|
94 |
"OTP Over Telegram",
|
95 |
-
"OTP Over Whatsapp",
|
96 |
"Duo Authenticator",
|
97 |
"Authy Authenticator",
|
98 |
"Email Verification",
|
@@ -101,25 +102,24 @@
|
|
101 |
);
|
102 |
$two_factor_methods_descriptions = array(
|
103 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
104 |
-
"miniOrange
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
$two_factor_methods_doc = array(
|
120 |
"Security Questions" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-security-question",
|
121 |
"Google Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator",
|
122 |
-
"miniOrange QR Code Authentication" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-QR-code",
|
123 |
"Email Verification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/email_verification",
|
124 |
"miniOrange Soft Token" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-soft-token",
|
125 |
"miniOrange Push Notification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-push-notification",
|
@@ -134,7 +134,7 @@
|
|
134 |
$two_factor_methods_video = array(
|
135 |
"Security Questions" => "https://www.youtube.com/watch?v=pXPqQ047o-0",
|
136 |
"Google Authenticator" => "https://www.youtube.com/watch?v=BS6tY-Goa1Q",
|
137 |
-
"miniOrange
|
138 |
"Email Verification" => "https://www.youtube.com/watch?v=OacJWBYx_AE",
|
139 |
"miniOrange Soft Token" => "https://www.youtube.com/watch?v=9HV8V4f80k8",
|
140 |
"miniOrange Push Notification" => "https://www.youtube.com/watch?v=it_dAhFcxvw",
|
@@ -147,17 +147,15 @@
|
|
147 |
|
148 |
);
|
149 |
|
150 |
-
$two_factor_methods_EC = array_slice( $all_two_factor_methods, 0,
|
151 |
-
$two_factor_methods_NC = array_slice( $all_two_factor_methods, 0,
|
152 |
if(MO2F_IS_ONPREM or $category != 'free_plan')
|
153 |
{
|
154 |
$all_two_factor_methods = array(
|
155 |
"Security Questions",
|
156 |
"Google Authenticator",
|
157 |
"Email Verification",
|
158 |
-
"miniOrange
|
159 |
-
"miniOrange Soft Token",
|
160 |
-
"miniOrange Push Notification",
|
161 |
"Authy Authenticator",
|
162 |
"OTP Over SMS",
|
163 |
"OTP Over Email",
|
@@ -169,21 +167,23 @@
|
|
169 |
);
|
170 |
$two_factor_methods_descriptions = array(
|
171 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
|
|
|
|
187 |
}
|
188 |
|
189 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
@@ -197,6 +197,11 @@
|
|
197 |
<br>
|
198 |
<table class="mo2f_auth_methods_table">';
|
199 |
|
|
|
|
|
|
|
|
|
|
|
200 |
for ( $i = 0; $i < count( $auth_methods ); $i ++ ) {
|
201 |
|
202 |
$form .= '<tr>';
|
@@ -213,7 +218,8 @@
|
|
213 |
$auth_method_abr = str_replace( ' ', '', $auth_method );
|
214 |
$configured_auth_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
215 |
$is_auth_method_selected = ( $configured_auth_method == $auth_method ? true : false );
|
216 |
-
|
|
|
217 |
$is_auth_method_av = false;
|
218 |
if ( ( $is_EC && in_array( $auth_method, $two_factor_methods_EC ) ) ||
|
219 |
( $is_NC && in_array( $auth_method, $two_factor_methods_NC ) ) ) {
|
@@ -223,8 +229,8 @@
|
|
223 |
$thumbnail_height = $is_auth_method_av && $category == 'free_plan' ? 190 : 160;
|
224 |
$is_image = $auth_method == "" ? 0 :1;
|
225 |
|
226 |
-
$form .= '<td style="width:
|
227 |
-
<div class="mo2f_thumbnail" id="'.$auth_method_abr.'_thumbnail_2_factor" style="height:' . $thumbnail_height . 'px;
|
228 |
if(MO2F_IS_ONPREM)
|
229 |
{
|
230 |
$iscurrentMethod = 0;
|
@@ -232,39 +238,35 @@
|
|
232 |
if($currentMethod == $auth_method)
|
233 |
$iscurrentMethod = 1;
|
234 |
|
235 |
-
$form .= $iscurrentMethod ? '#
|
236 |
-
$form .= '
|
237 |
-
$form .= $iscurrentMethod ? '#48b74b' : '#20b2aa';
|
238 |
$form .= ';">';
|
239 |
}
|
240 |
else
|
241 |
{
|
242 |
-
$form .= $is_auth_method_selected ? '#
|
243 |
-
$form .= '
|
244 |
-
$form .= $is_auth_method_selected ? '#48b74b' : '#20b2aa';
|
245 |
$form .= ';">';
|
246 |
|
247 |
}
|
248 |
$form .= '<div>
|
249 |
<div class="mo2f_thumbnail_method" style="width:100%";>
|
250 |
-
<div style="width: 17%; float:left;padding-top:
|
251 |
|
252 |
if($is_image){
|
253 |
-
$form .= '<img src="' . plugins_url( "includes/images/authmethods/" . $auth_method_abr . ".png", dirname(dirname(__FILE__ ))) . '" style="width:
|
254 |
}
|
255 |
|
256 |
$form .= '</div>
|
257 |
-
<div class="mo2f_thumbnail_method_desc" style="
|
258 |
switch ($auth_method) {
|
259 |
case 'Google Authenticator':
|
260 |
$form .=' <span style="float:right">
|
261 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
262 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
263 |
-
|
264 |
</a>
|
265 |
-
|
266 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
267 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
268 |
</a>
|
269 |
</span>';
|
270 |
break;
|
@@ -272,10 +274,10 @@
|
|
272 |
case 'Security Questions':
|
273 |
$form .=' <span style="float:right">
|
274 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
275 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
276 |
</a>
|
277 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
278 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
279 |
</a>
|
280 |
|
281 |
|
@@ -285,11 +287,11 @@
|
|
285 |
case 'OTP Over SMS':
|
286 |
$form .=' <span style="float:right">
|
287 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
288 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
289 |
|
290 |
</a>
|
291 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
292 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
293 |
</a>
|
294 |
|
295 |
</span>';
|
@@ -299,25 +301,42 @@
|
|
299 |
case 'miniOrange Soft Token':
|
300 |
$form .=' <span style="float:right">
|
301 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
302 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
303 |
|
304 |
</a>
|
305 |
|
306 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
307 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
308 |
</a>
|
309 |
</span>';
|
310 |
|
311 |
break;
|
312 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
case 'miniOrange QR Code Authentication':
|
314 |
$form .=' <span style="float:right">
|
315 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
316 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
317 |
|
318 |
</a>
|
319 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
320 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
321 |
</a>
|
322 |
|
323 |
</span>';
|
@@ -327,11 +346,11 @@
|
|
327 |
case 'miniOrange Push Notification':
|
328 |
$form .=' <span style="float:right">
|
329 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
330 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
331 |
|
332 |
</a>
|
333 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
334 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
335 |
</a>
|
336 |
|
337 |
</span>';
|
@@ -340,27 +359,19 @@
|
|
340 |
case 'Email Verification':
|
341 |
$form .=' <span style="float:right">
|
342 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
343 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
344 |
|
345 |
</a>
|
346 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
347 |
-
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
348 |
</a>
|
349 |
|
350 |
</span>';
|
351 |
break;
|
352 |
-
case 'OTP Over
|
353 |
-
$form .=' <span style="float:right">
|
354 |
-
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
355 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
356 |
-
</a>
|
357 |
-
|
358 |
-
</span>';
|
359 |
-
break;
|
360 |
-
case 'OTP Over Telegram':
|
361 |
$form .=' <span style="float:right">
|
362 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
363 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
364 |
</a>
|
365 |
|
366 |
</span>';
|
@@ -368,7 +379,7 @@
|
|
368 |
case 'OTP Over Email':
|
369 |
$form .=' <span style="float:right">
|
370 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
371 |
-
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#
|
372 |
</a>
|
373 |
|
374 |
</span>';
|
@@ -388,22 +399,25 @@
|
|
388 |
|
389 |
if ( $is_auth_method_av && $category == 'free_plan' ) {
|
390 |
$is_auth_method_configured = 0;
|
391 |
-
|
|
|
|
|
|
|
|
|
392 |
if(($auth_method == 'OUT OF BAND EMAIL' or $auth_method == 'OTP Over Email') and !MO2F_IS_ONPREM )
|
393 |
$is_auth_method_configured = 1;
|
394 |
$chat_id = get_user_meta($user->ID,'mo2f_chat_id',true);
|
395 |
-
$WhatsappID = get_user_meta($user->ID,'mo2f_whatsapp_id',true);
|
396 |
$form .= '<div style="height:40px;width:100%;position: absolute;bottom: 0;background-color:';
|
397 |
$iscurrentMethod = 0;
|
398 |
if(MO2F_IS_ONPREM)
|
399 |
{
|
400 |
$currentMethod = $configured_auth_method;
|
401 |
-
if($currentMethod == $auth_method)
|
402 |
$iscurrentMethod = 1;
|
403 |
-
$form .= $iscurrentMethod ? '#
|
404 |
}
|
405 |
else
|
406 |
-
$form .= $is_auth_method_selected ? '#
|
407 |
if(MO2F_IS_ONPREM)
|
408 |
{
|
409 |
$twofactor_transactions = new Mo2fDB;
|
@@ -428,9 +442,9 @@
|
|
428 |
|
429 |
|
430 |
|
431 |
-
$cloud_methods = array('miniOrange
|
432 |
|
433 |
-
if($auth_method == 'Email Verification' || $auth_method == 'Security Questions' || $auth_method == 'Google Authenticator' || $auth_method == 'miniOrange
|
434 |
{
|
435 |
$show = 1;
|
436 |
}
|
@@ -451,13 +465,16 @@
|
|
451 |
<button type="button" id="'.$auth_method_abr.'_set_2_factor" class="mo2f_configure_set_2_factor" onclick="configureOrSet2ndFactor_' . $category . '(\'' . $auth_method_abr . '\', \'select2factor\');"';
|
452 |
$form .= $can_user_configure_2fa_method ? "" : " disabled ";
|
453 |
$form .= $show==1 ? "" : " disabled ";
|
454 |
-
if($show == 1 and $is_auth_method_configured and $iscurrentMethod == 0)
|
455 |
-
|
456 |
-
|
|
|
|
|
|
|
|
|
|
|
457 |
}
|
458 |
-
|
459 |
-
$form .= '</div>';
|
460 |
-
|
461 |
}
|
462 |
else
|
463 |
{
|
@@ -490,8 +507,19 @@
|
|
490 |
</div>';
|
491 |
}
|
492 |
|
493 |
-
$form .= '</div>';
|
494 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
}
|
496 |
$form .= '</div></div></td>';
|
497 |
}
|
@@ -507,13 +535,19 @@
|
|
507 |
<p style="font-size:16px;margin-left: 1%">In addition to these authentication methods, for other features in this plan, <a href="admin.php?page=mo_2fa_upgrade"><i>Click here.</i></a></p>
|
508 |
</div>';
|
509 |
}
|
510 |
-
|
511 |
$form .= '</div> <input type="hidden" name="miniorange_save_form_auth_methods_nonce"
|
512 |
value="'. wp_create_nonce( "miniorange-save-form-auth-methods-nonce" ) .'"/>
|
513 |
<input type="hidden" name="option" value="mo2f_save_' . $category . '_auth_methods" />
|
514 |
<input type="hidden" name="mo2f_configured_2FA_method_' . $category . '" id="mo2f_configured_2FA_method_' . $category . '" />
|
515 |
<input type="hidden" name="mo2f_selected_action_' . $category . '" id="mo2f_selected_action_' . $category . '" />
|
516 |
-
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
517 |
|
518 |
return $form;
|
519 |
}
|
@@ -696,64 +730,59 @@ function mo2f_show_2FA_configuration_screen( $user, $selected2FAmethod ) {
|
|
696 |
if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
|
697 |
Miniorange_Authentication::mo2f_get_GA_parameters($user);
|
698 |
}
|
699 |
-
echo '<div class="
|
700 |
mo2f_configure_google_authenticator( $user );
|
701 |
echo '</div>';
|
702 |
}
|
703 |
break;
|
704 |
case "Authy Authenticator":
|
705 |
-
echo '<div class="
|
706 |
mo2f_configure_authy_authenticator( $user );
|
707 |
echo '</div>';
|
708 |
break;
|
709 |
case "Security Questions":
|
710 |
-
echo '<div class="
|
711 |
mo2f_configure_for_mobile_suppport_kba( $user );
|
712 |
echo '</div>';
|
713 |
break;
|
714 |
case "Email Verification":
|
715 |
-
echo '<div class="
|
716 |
mo2f_configure_for_mobile_suppport_kba( $user );
|
717 |
echo '</div>';
|
718 |
break;
|
719 |
case "OTP Over SMS":
|
720 |
-
echo '<div class="
|
721 |
mo2f_configure_otp_over_sms( $user );
|
722 |
echo '</div>';
|
723 |
break;
|
724 |
case "miniOrange Soft Token":
|
725 |
-
echo '<div class="
|
726 |
mo2f_configure_miniorange_authenticator( $user );
|
727 |
echo '</div>';
|
728 |
break;
|
729 |
case "miniOrange QR Code Authentication":
|
730 |
-
echo '<div class="
|
731 |
mo2f_configure_miniorange_authenticator( $user );
|
732 |
echo '</div>';
|
733 |
break;
|
734 |
case "miniOrange Push Notification":
|
735 |
-
echo '<div class="
|
736 |
mo2f_configure_miniorange_authenticator( $user );
|
737 |
echo '</div>';
|
738 |
break;
|
739 |
case "OTP Over Email":
|
740 |
-
echo '<div class="
|
741 |
mo2f_test_otp_over_email($user,$selected2FAmethod);
|
742 |
echo '</div>';
|
743 |
break;
|
744 |
case "OTP Over Telegram":
|
745 |
-
echo '<div class="
|
746 |
mo2f_configure_otp_over_Telegram($user);
|
747 |
echo '</div>';
|
748 |
break;
|
749 |
-
case "OTP Over Whatsapp":
|
750 |
-
echo '<div class="mo_wpns_setting_layout">';
|
751 |
-
mo2f_configure_otp_over_Whatsapp($user);
|
752 |
-
echo '</div>';
|
753 |
-
break;
|
754 |
case "DuoAuthenticator":
|
755 |
case "Duo Authenticator":
|
756 |
-
echo '<div class="
|
757 |
mo2f_configure_duo_authenticator($user);
|
758 |
echo '</div>';
|
759 |
break;
|
@@ -783,9 +812,6 @@ function mo2f_show_2FA_test_screen( $user, $selected2FAmethod ) {
|
|
783 |
case "OTP Over Telegram":
|
784 |
mo2f_test_otp_over_Telegram( $user );
|
785 |
break;
|
786 |
-
case "OTP Over Whatsapp":
|
787 |
-
mo2f_test_otp_over_Whatsapp( $user );
|
788 |
-
break;
|
789 |
case "Security Questions":
|
790 |
mo2f_test_kba_security_questions( $user );
|
791 |
break;
|
@@ -829,12 +855,12 @@ function mo2f_rba_description($mo2f_user_email) {?>
|
|
829 |
<div id="mo2f_rba_addon">
|
830 |
<?php if ( get_option( 'mo2f_rba_installed' ) ) { ?>
|
831 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_rba_addon"
|
832 |
-
class="
|
833 |
style="float:right; margin-top:2%;"><?php echo __( 'Activate Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
834 |
<?php } ?>
|
835 |
<?php if ( ! get_option( 'mo2f_rba_purchased' ) ) { ?>
|
836 |
<a onclick="mo2f_addonform('wp_2fa_addon_rba')" id="mo2f_purchase_rba_addon"
|
837 |
-
class="
|
838 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a><?php } ?>
|
839 |
<div id="mo2f_rba_addon_hide">
|
840 |
|
@@ -892,12 +918,12 @@ function mo2f_personalization_description($mo2f_user_email) {?>
|
|
892 |
<div id="mo2f_custom_addon">
|
893 |
<?php if ( get_option( 'mo2f_personalization_installed' ) ) { ?>
|
894 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_custom_addon"
|
895 |
-
class="
|
896 |
style="float:right; margin-top:2%;"><?php echo __( 'Activate Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
897 |
<?php } ?>
|
898 |
<?php if ( ! get_option( 'mo2f_personalization_purchased' ) ) { ?> <a
|
899 |
onclick="mo2f_addonform('wp_2fa_addon_shortcode')" id="mo2f_purchase_custom_addon"
|
900 |
-
class="
|
901 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a>
|
902 |
<?php } ?>
|
903 |
<div id="mo2f_custom_addon_hide">
|
@@ -948,11 +974,11 @@ function mo2f_shortcode_description($mo2f_user_email) { ?>
|
|
948 |
<div id="mo2f_Shortcode_addon_hide">
|
949 |
<?php if ( get_option( 'mo2f_shortcode_installed' ) ) { ?>
|
950 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_shortcode_addon"
|
951 |
-
class="
|
952 |
Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
953 |
<?php } if ( ! get_option( 'mo2f_shortcode_purchased' ) ) { ?>
|
954 |
<a onclick="mo2f_addonform('wp_2fa_addon_personalization')" id="mo2f_purchase_shortcode_addon"
|
955 |
-
class="
|
956 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a>
|
957 |
<?php } ?>
|
958 |
|
8 |
include $setup_dirName.'setup_miniorange_authenticator.php';
|
9 |
include $setup_dirName.'setup_otp_over_sms.php';
|
10 |
include $setup_dirName.'setup_otp_over_telegram.php';
|
|
|
11 |
include $setup_dirName.'setup_duo_authenticator.php';
|
12 |
include $test_dirName.'test_twofa_email_verification.php';
|
13 |
include $test_dirName.'test_twofa_duo_authenticator.php';
|
18 |
include $test_dirName.'test_twofa_miniorange_soft_token.php';
|
19 |
include $test_dirName.'test_twofa_otp_over_sms.php';
|
20 |
include $test_dirName.'test_twofa_otp_over_Telegram.php';
|
21 |
+
|
|
|
22 |
function mo2f_decode_2_factor( $selected_2_factor_method, $decode_type ) {
|
23 |
|
24 |
if ( $selected_2_factor_method == 'NONE' ) {
|
81 |
|
82 |
function mo2f_create_2fa_form( $user, $category, $auth_methods, $can_display_admin_features='' ) {
|
83 |
global $Mo2fdbQueries;
|
84 |
+
|
85 |
+
$miniorange_authenticator = array(
|
86 |
+
"miniOrange QR Code Authentication",
|
87 |
+
"miniOrange Soft Token",
|
88 |
+
"miniOrange Push Notification",
|
89 |
+
);
|
90 |
$all_two_factor_methods = array(
|
91 |
+
"miniOrange Authenticator",
|
|
|
|
|
92 |
"Google Authenticator",
|
93 |
"Security Questions",
|
94 |
"OTP Over SMS",
|
95 |
"OTP Over Email",
|
96 |
"OTP Over Telegram",
|
|
|
97 |
"Duo Authenticator",
|
98 |
"Authy Authenticator",
|
99 |
"Email Verification",
|
102 |
);
|
103 |
$two_factor_methods_descriptions = array(
|
104 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
105 |
+
"miniOrange Authenticator" => "Scan the QR code from the account in your miniOrange Authenticator App to login.",
|
106 |
+
"miniOrange Soft Token" => "Use One Time Password / Soft Token shown in the miniOrange Authenticator App",
|
107 |
+
"miniOrange Push Notification" => "A Push notification will be sent to the miniOrange Authenticator App for your account,
|
108 |
+
Accept it to log in",
|
109 |
+
"Google Authenticator" => "Use One Time Password shown in <b>Google/Authy/LastPass Authenticator App</b> to login",
|
110 |
+
"Security Questions" => "Configure and Answer Three Security Questions to login",
|
111 |
+
"OTP Over SMS" => "A One Time Passcode (OTP) will be sent to your Phone number",
|
112 |
+
"OTP Over Email" => "A One Time Passcode (OTP) will be sent to your Email address",
|
113 |
+
"Authy Authenticator" => "Enter Soft Token/ One Time Password from the Authy Authenticator App",
|
114 |
+
"Email Verification" => "Accept the verification link sent to your email address",
|
115 |
+
"OTP Over SMS and Email" => "A One Time Passcode (OTP) will be sent to your Phone number and Email address",
|
116 |
+
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token",
|
117 |
+
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your WhatsApp account. This method is supported with twillio",
|
118 |
+
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account",
|
119 |
+
"Duo Authenticator" => "A Push notification will be sent to the Duo Authenticator App");
|
120 |
$two_factor_methods_doc = array(
|
121 |
"Security Questions" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-security-question",
|
122 |
"Google Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator",
|
|
|
123 |
"Email Verification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/email_verification",
|
124 |
"miniOrange Soft Token" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-soft-token",
|
125 |
"miniOrange Push Notification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-push-notification",
|
134 |
$two_factor_methods_video = array(
|
135 |
"Security Questions" => "https://www.youtube.com/watch?v=pXPqQ047o-0",
|
136 |
"Google Authenticator" => "https://www.youtube.com/watch?v=BS6tY-Goa1Q",
|
137 |
+
"miniOrange Authenticator" => "https://www.youtube.com/watch?v=oRaGtKxouiI",
|
138 |
"Email Verification" => "https://www.youtube.com/watch?v=OacJWBYx_AE",
|
139 |
"miniOrange Soft Token" => "https://www.youtube.com/watch?v=9HV8V4f80k8",
|
140 |
"miniOrange Push Notification" => "https://www.youtube.com/watch?v=it_dAhFcxvw",
|
147 |
|
148 |
);
|
149 |
|
150 |
+
$two_factor_methods_EC = array_slice( $all_two_factor_methods, 0, 10 );
|
151 |
+
$two_factor_methods_NC = array_slice( $all_two_factor_methods, 0, 9 );
|
152 |
if(MO2F_IS_ONPREM or $category != 'free_plan')
|
153 |
{
|
154 |
$all_two_factor_methods = array(
|
155 |
"Security Questions",
|
156 |
"Google Authenticator",
|
157 |
"Email Verification",
|
158 |
+
"miniOrange Authenticator",
|
|
|
|
|
159 |
"Authy Authenticator",
|
160 |
"OTP Over SMS",
|
161 |
"OTP Over Email",
|
167 |
);
|
168 |
$two_factor_methods_descriptions = array(
|
169 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
170 |
+
"miniOrange QR Code Authentication" => "A QR Code will be displayed in the miniOrange Authenticator App for your account,
|
171 |
+
scan it to log in",
|
172 |
+
"miniOrange Authenticator" => 'Supports methods like soft token, QR code Authentication, Push Notification',
|
173 |
+
"miniOrange Push Notification" => "A Push notification will be sent to the miniOrange Authenticator App for your account,
|
174 |
+
Accept it to log in",
|
175 |
+
"Google Authenticator" => "Use One Time Password shown in <b>Google/Authy/LastPass Authenticator App</b> to login",
|
176 |
+
"Security Questions" => "Configure and Answer Three Security Questions to login",
|
177 |
+
"OTP Over SMS" => "A One Time Passcode (OTP) will be sent to your Phone number",
|
178 |
+
"OTP Over Email" => "A One Time Passcode (OTP) will be sent to your Email address",
|
179 |
+
"Authy Authenticator" => "Enter Soft Token/ One Time Password from the Authy Authenticator App",
|
180 |
+
"Email Verification" => "Accept the verification link sent to your email address",
|
181 |
+
"OTP Over SMS and Email" => "A One Time Passcode (OTP) will be sent to your Phone number and Email address",
|
182 |
+
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token",
|
183 |
+
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your WhatsApp account. This method is supported with twillio",
|
184 |
+
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account",
|
185 |
+
"Duo Authenticator" => "A Push notification will be sent to the Duo Authenticator App"
|
186 |
+
);
|
187 |
}
|
188 |
|
189 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
197 |
<br>
|
198 |
<table class="mo2f_auth_methods_table">';
|
199 |
|
200 |
+
$configured_auth_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
201 |
+
$selected_miniorange_method = false;
|
202 |
+
if(in_array($configured_auth_method, $miniorange_authenticator)){
|
203 |
+
$selected_miniorange_method = true;
|
204 |
+
}
|
205 |
for ( $i = 0; $i < count( $auth_methods ); $i ++ ) {
|
206 |
|
207 |
$form .= '<tr>';
|
218 |
$auth_method_abr = str_replace( ' ', '', $auth_method );
|
219 |
$configured_auth_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
220 |
$is_auth_method_selected = ( $configured_auth_method == $auth_method ? true : false );
|
221 |
+
if($auth_method == 'miniOrange Authenticator' && $selected_miniorange_method )
|
222 |
+
$is_auth_method_selected = true;
|
223 |
$is_auth_method_av = false;
|
224 |
if ( ( $is_EC && in_array( $auth_method, $two_factor_methods_EC ) ) ||
|
225 |
( $is_NC && in_array( $auth_method, $two_factor_methods_NC ) ) ) {
|
229 |
$thumbnail_height = $is_auth_method_av && $category == 'free_plan' ? 190 : 160;
|
230 |
$is_image = $auth_method == "" ? 0 :1;
|
231 |
|
232 |
+
$form .= '<td style="width:25%;">
|
233 |
+
<div class="mo2f_thumbnail" id="'.$auth_method_abr.'_thumbnail_2_factor" style="height:' . $thumbnail_height . 'px; ';
|
234 |
if(MO2F_IS_ONPREM)
|
235 |
{
|
236 |
$iscurrentMethod = 0;
|
238 |
if($currentMethod == $auth_method)
|
239 |
$iscurrentMethod = 1;
|
240 |
|
241 |
+
$form .= $iscurrentMethod ? '#413c69' : '#a7c5eb';
|
242 |
+
$form .= $iscurrentMethod ? '#413c69' : '#a7c5eb';
|
|
|
243 |
$form .= ';">';
|
244 |
}
|
245 |
else
|
246 |
{
|
247 |
+
$form .= $is_auth_method_selected ? '#413c69' : '#a7c5eb';
|
248 |
+
$form .= $is_auth_method_selected ? '#413c69' : '#a7c5eb';
|
|
|
249 |
$form .= ';">';
|
250 |
|
251 |
}
|
252 |
$form .= '<div>
|
253 |
<div class="mo2f_thumbnail_method" style="width:100%";>
|
254 |
+
<div style="width: 17%; float:left;padding-top:20px;padding-left:20px;">';
|
255 |
|
256 |
if($is_image){
|
257 |
+
$form .= '<img src="' . plugins_url( "includes/images/authmethods/" . $auth_method_abr . ".png", dirname(dirname(__FILE__ ))) . '" style="width: 50px;height: 50px !important; " line-height: 80px;" />';
|
258 |
}
|
259 |
|
260 |
$form .= '</div>
|
261 |
+
<div class="mo2f_thumbnail_method_desc" style="width: 75%;">';
|
262 |
switch ($auth_method) {
|
263 |
case 'Google Authenticator':
|
264 |
$form .=' <span style="float:right">
|
265 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
266 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
|
|
267 |
</a>
|
|
|
268 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
269 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
270 |
</a>
|
271 |
</span>';
|
272 |
break;
|
274 |
case 'Security Questions':
|
275 |
$form .=' <span style="float:right">
|
276 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
277 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
278 |
</a>
|
279 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
280 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
281 |
</a>
|
282 |
|
283 |
|
287 |
case 'OTP Over SMS':
|
288 |
$form .=' <span style="float:right">
|
289 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
290 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
291 |
|
292 |
</a>
|
293 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
294 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
295 |
</a>
|
296 |
|
297 |
</span>';
|
301 |
case 'miniOrange Soft Token':
|
302 |
$form .=' <span style="float:right">
|
303 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
304 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
305 |
|
306 |
</a>
|
307 |
|
308 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
309 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
310 |
</a>
|
311 |
</span>';
|
312 |
|
313 |
break;
|
314 |
|
315 |
+
case 'miniOrange Authenticator':
|
316 |
+
$form .=' <span style="float:right">';
|
317 |
+
if(isset($two_factor_methods_doc[$auth_method])){
|
318 |
+
$form .='<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
319 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
320 |
+
</a>';
|
321 |
+
}
|
322 |
+
|
323 |
+
if(isset($two_factor_methods_video[$auth_method])){
|
324 |
+
$form .='<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
325 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right;margin-right: 5px;"></span>
|
326 |
+
</a>';
|
327 |
+
}
|
328 |
+
|
329 |
+
$form .='</span>';
|
330 |
+
break;
|
331 |
+
|
332 |
case 'miniOrange QR Code Authentication':
|
333 |
$form .=' <span style="float:right">
|
334 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
335 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
336 |
|
337 |
</a>
|
338 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
339 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
340 |
</a>
|
341 |
|
342 |
</span>';
|
346 |
case 'miniOrange Push Notification':
|
347 |
$form .=' <span style="float:right">
|
348 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
349 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
350 |
|
351 |
</a>
|
352 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
353 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
354 |
</a>
|
355 |
|
356 |
</span>';
|
359 |
case 'Email Verification':
|
360 |
$form .=' <span style="float:right">
|
361 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
362 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
363 |
|
364 |
</a>
|
365 |
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
366 |
+
<span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
367 |
</a>
|
368 |
|
369 |
</span>';
|
370 |
break;
|
371 |
+
case 'OTP Over Telegram':
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
$form .=' <span style="float:right">
|
373 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
374 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
375 |
</a>
|
376 |
|
377 |
</span>';
|
379 |
case 'OTP Over Email':
|
380 |
$form .=' <span style="float:right">
|
381 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
382 |
+
<span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
|
383 |
</a>
|
384 |
|
385 |
</span>';
|
399 |
|
400 |
if ( $is_auth_method_av && $category == 'free_plan' ) {
|
401 |
$is_auth_method_configured = 0;
|
402 |
+
if($auth_method_abr == 'miniOrangeAuthenticator'){
|
403 |
+
$is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_miniOrangeSoftToken_config_status', $user->ID );
|
404 |
+
}else{
|
405 |
+
$is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_' . $auth_method_abr . '_config_status', $user->ID );
|
406 |
+
}
|
407 |
if(($auth_method == 'OUT OF BAND EMAIL' or $auth_method == 'OTP Over Email') and !MO2F_IS_ONPREM )
|
408 |
$is_auth_method_configured = 1;
|
409 |
$chat_id = get_user_meta($user->ID,'mo2f_chat_id',true);
|
|
|
410 |
$form .= '<div style="height:40px;width:100%;position: absolute;bottom: 0;background-color:';
|
411 |
$iscurrentMethod = 0;
|
412 |
if(MO2F_IS_ONPREM)
|
413 |
{
|
414 |
$currentMethod = $configured_auth_method;
|
415 |
+
if($currentMethod == $auth_method || ($auth_method=='miniOrange Authenticator' && $selected_miniorange_method ) )
|
416 |
$iscurrentMethod = 1;
|
417 |
+
$form .= $iscurrentMethod ? '#413c69' : '#a7c5eb';
|
418 |
}
|
419 |
else
|
420 |
+
$form .= $is_auth_method_selected ? '#413c69' : '#a7c5eb';
|
421 |
if(MO2F_IS_ONPREM)
|
422 |
{
|
423 |
$twofactor_transactions = new Mo2fDB;
|
442 |
|
443 |
|
444 |
|
445 |
+
$cloud_methods = array('miniOrange Authenticator' , 'miniOrange Soft Token','miniOrange Push Notification');
|
446 |
|
447 |
+
if($auth_method == 'Email Verification' || $auth_method == 'Security Questions' || $auth_method == 'Google Authenticator' || $auth_method == 'miniOrange Authenticator' || $auth_method == 'OTP Over SMS' || $auth_method == 'OTP Over Email' || $auth_method == 'OTP Over Telegram' || $auth_method == 'Duo Authenticator')
|
448 |
{
|
449 |
$show = 1;
|
450 |
}
|
465 |
<button type="button" id="'.$auth_method_abr.'_set_2_factor" class="mo2f_configure_set_2_factor" onclick="configureOrSet2ndFactor_' . $category . '(\'' . $auth_method_abr . '\', \'select2factor\');"';
|
466 |
$form .= $can_user_configure_2fa_method ? "" : " disabled ";
|
467 |
$form .= $show==1 ? "" : " disabled ";
|
468 |
+
if($show == 1 and $is_auth_method_configured and $iscurrentMethod == 0){
|
469 |
+
$form .= '>Set as 2-factor</button>
|
470 |
+
</div>';
|
471 |
+
}else{
|
472 |
+
$form .= '
|
473 |
+
</button>
|
474 |
+
</div>';
|
475 |
+
}
|
476 |
}
|
477 |
+
|
|
|
|
|
478 |
}
|
479 |
else
|
480 |
{
|
507 |
</div>';
|
508 |
}
|
509 |
|
|
|
510 |
}
|
511 |
+
if($is_auth_method_selected && $auth_method == 'miniOrange Authenticator'){
|
512 |
+
$form .='<select name="mo2fa_MO_methods" id="mo2fa_MO_methods" class="mo2f_set_2_factor mo2f_configure_switch_2_factor mo2f_kba_ques" style="color: white;font-weight: 700;background: #48b74b;background-size: 16px 16px;border: 1px solid #48b74b;padding: 0px 0px 0px 17px;min-height: 30px;max-width: 9em;max-width: 9em;" onchange="show_3_minorange_methods();">
|
513 |
+
<option value="" selected disabled hidden style="color:white!important;">Switch to >></option>
|
514 |
+
<option value="miniOrangeSoftToken">Soft Token</option>
|
515 |
+
<option value="miniOrangeQRCodeAuthentication">QR Code</option>
|
516 |
+
<option value="miniOrangePushNotification">Push Notification</option>
|
517 |
+
</select></div>
|
518 |
+
<br><br>
|
519 |
+
|
520 |
+
';
|
521 |
+
}
|
522 |
+
$form .= '</div>';
|
523 |
}
|
524 |
$form .= '</div></div></td>';
|
525 |
}
|
535 |
<p style="font-size:16px;margin-left: 1%">In addition to these authentication methods, for other features in this plan, <a href="admin.php?page=mo_2fa_upgrade"><i>Click here.</i></a></p>
|
536 |
</div>';
|
537 |
}
|
538 |
+
$configured_auth_method_abr = str_replace(' ', '',$configured_auth_method);
|
539 |
$form .= '</div> <input type="hidden" name="miniorange_save_form_auth_methods_nonce"
|
540 |
value="'. wp_create_nonce( "miniorange-save-form-auth-methods-nonce" ) .'"/>
|
541 |
<input type="hidden" name="option" value="mo2f_save_' . $category . '_auth_methods" />
|
542 |
<input type="hidden" name="mo2f_configured_2FA_method_' . $category . '" id="mo2f_configured_2FA_method_' . $category . '" />
|
543 |
<input type="hidden" name="mo2f_selected_action_' . $category . '" id="mo2f_selected_action_' . $category . '" />
|
544 |
+
</form><script>
|
545 |
+
var selected_miniorange_method = "'.$selected_miniorange_method.'";
|
546 |
+
if(selected_miniorange_method)
|
547 |
+
jQuery("<input>").attr({type: "hidden",id: "miniOrangeAuthenticator",value: "'.$configured_auth_method_abr.'"}).appendTo("form");
|
548 |
+
else
|
549 |
+
jQuery("<input>").attr({type: "hidden",id: "miniOrangeAuthenticator",value: "miniOrangeSoftToken"}).appendTo("form");
|
550 |
+
</script>';
|
551 |
|
552 |
return $form;
|
553 |
}
|
730 |
if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
|
731 |
Miniorange_Authentication::mo2f_get_GA_parameters($user);
|
732 |
}
|
733 |
+
echo '<div class="mo2f_table_layout">';
|
734 |
mo2f_configure_google_authenticator( $user );
|
735 |
echo '</div>';
|
736 |
}
|
737 |
break;
|
738 |
case "Authy Authenticator":
|
739 |
+
echo '<div class="mo2f_table_layout">';
|
740 |
mo2f_configure_authy_authenticator( $user );
|
741 |
echo '</div>';
|
742 |
break;
|
743 |
case "Security Questions":
|
744 |
+
echo '<div class="mo2f_table_layout">';
|
745 |
mo2f_configure_for_mobile_suppport_kba( $user );
|
746 |
echo '</div>';
|
747 |
break;
|
748 |
case "Email Verification":
|
749 |
+
echo '<div class="mo2f_table_layout">';
|
750 |
mo2f_configure_for_mobile_suppport_kba( $user );
|
751 |
echo '</div>';
|
752 |
break;
|
753 |
case "OTP Over SMS":
|
754 |
+
echo '<div class="mo2f_table_layout">';
|
755 |
mo2f_configure_otp_over_sms( $user );
|
756 |
echo '</div>';
|
757 |
break;
|
758 |
case "miniOrange Soft Token":
|
759 |
+
echo '<div class="mo2f_table_layout">';
|
760 |
mo2f_configure_miniorange_authenticator( $user );
|
761 |
echo '</div>';
|
762 |
break;
|
763 |
case "miniOrange QR Code Authentication":
|
764 |
+
echo '<div class="mo2f_table_layout">';
|
765 |
mo2f_configure_miniorange_authenticator( $user );
|
766 |
echo '</div>';
|
767 |
break;
|
768 |
case "miniOrange Push Notification":
|
769 |
+
echo '<div class="mo2f_table_layout">';
|
770 |
mo2f_configure_miniorange_authenticator( $user );
|
771 |
echo '</div>';
|
772 |
break;
|
773 |
case "OTP Over Email":
|
774 |
+
echo '<div class="mo2f_table_layout">';
|
775 |
mo2f_test_otp_over_email($user,$selected2FAmethod);
|
776 |
echo '</div>';
|
777 |
break;
|
778 |
case "OTP Over Telegram":
|
779 |
+
echo '<div class="mo2f_table_layout">';
|
780 |
mo2f_configure_otp_over_Telegram($user);
|
781 |
echo '</div>';
|
782 |
break;
|
|
|
|
|
|
|
|
|
|
|
783 |
case "DuoAuthenticator":
|
784 |
case "Duo Authenticator":
|
785 |
+
echo '<div class="mo2f_table_layout">';
|
786 |
mo2f_configure_duo_authenticator($user);
|
787 |
echo '</div>';
|
788 |
break;
|
812 |
case "OTP Over Telegram":
|
813 |
mo2f_test_otp_over_Telegram( $user );
|
814 |
break;
|
|
|
|
|
|
|
815 |
case "Security Questions":
|
816 |
mo2f_test_kba_security_questions( $user );
|
817 |
break;
|
855 |
<div id="mo2f_rba_addon">
|
856 |
<?php if ( get_option( 'mo2f_rba_installed' ) ) { ?>
|
857 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_rba_addon"
|
858 |
+
class="button button-primary button-large"
|
859 |
style="float:right; margin-top:2%;"><?php echo __( 'Activate Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
860 |
<?php } ?>
|
861 |
<?php if ( ! get_option( 'mo2f_rba_purchased' ) ) { ?>
|
862 |
<a onclick="mo2f_addonform('wp_2fa_addon_rba')" id="mo2f_purchase_rba_addon"
|
863 |
+
class="button button-primary button-large"
|
864 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a><?php } ?>
|
865 |
<div id="mo2f_rba_addon_hide">
|
866 |
|
918 |
<div id="mo2f_custom_addon">
|
919 |
<?php if ( get_option( 'mo2f_personalization_installed' ) ) { ?>
|
920 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_custom_addon"
|
921 |
+
class="button button-primary button-large"
|
922 |
style="float:right; margin-top:2%;"><?php echo __( 'Activate Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
923 |
<?php } ?>
|
924 |
<?php if ( ! get_option( 'mo2f_personalization_purchased' ) ) { ?> <a
|
925 |
onclick="mo2f_addonform('wp_2fa_addon_shortcode')" id="mo2f_purchase_custom_addon"
|
926 |
+
class="button button-primary button-large"
|
927 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a>
|
928 |
<?php } ?>
|
929 |
<div id="mo2f_custom_addon_hide">
|
974 |
<div id="mo2f_Shortcode_addon_hide">
|
975 |
<?php if ( get_option( 'mo2f_shortcode_installed' ) ) { ?>
|
976 |
<a href="<?php echo admin_url(); ?>plugins.php" id="mo2f_activate_shortcode_addon"
|
977 |
+
class="button button-primary button-large" style="float:right; margin-top:2%;"><?php echo __( 'Activate
|
978 |
Plugin', 'miniorange-2-factor-authentication' ); ?></a>
|
979 |
<?php } if ( ! get_option( 'mo2f_shortcode_purchased' ) ) { ?>
|
980 |
<a onclick="mo2f_addonform('wp_2fa_addon_personalization')" id="mo2f_purchase_shortcode_addon"
|
981 |
+
class="button button-primary button-large"
|
982 |
style="float:right;"><?php echo __( 'Purchase', 'miniorange-2-factor-authentication' ); ?></a>
|
983 |
<?php } ?>
|
984 |
|
handler/twofa/two_fa_constants.php
CHANGED
@@ -273,6 +273,22 @@ class Mo2fConstants {
|
|
273 |
case 'ANSWER_SECURITY_QUESTIONS':
|
274 |
Return mo2f_lt( 'Please answer the following security questions.' );
|
275 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
case 'ERROR_FETCHING_QUESTIONS':
|
277 |
Return mo2f_lt( 'There was an error fetching security questions. Please try again.' );
|
278 |
break;
|
273 |
case 'ANSWER_SECURITY_QUESTIONS':
|
274 |
Return mo2f_lt( 'Please answer the following security questions.' );
|
275 |
break;
|
276 |
+
|
277 |
+
case 'BACKUP_CODE_LIMIT_REACH':
|
278 |
+
Return mo2f_lt( 'You have already downloaded the backup codes for this domain.' );
|
279 |
+
break;
|
280 |
+
case 'BACKUP_CODE_DOMAIN_LIMIT_REACH':
|
281 |
+
Return mo2f_lt( 'User Limit is reached for your domain.' );
|
282 |
+
break;
|
283 |
+
case 'BACKUP_CODE_INVALID_REQUEST':
|
284 |
+
Return mo2f_lt( 'Invalid request.' );
|
285 |
+
break;
|
286 |
+
case 'USED_ALL_BACKUP_CODES':
|
287 |
+
Return mo2f_lt( 'You have used all of the backup codes' );
|
288 |
+
break;
|
289 |
+
case 'RESET_DUO_CONFIGURATON':
|
290 |
+
Return mo2f_lt( 'Your Duo configuration has been reset successfully.' );
|
291 |
+
break;
|
292 |
case 'ERROR_FETCHING_QUESTIONS':
|
293 |
Return mo2f_lt( 'There was an error fetching security questions. Please try again.' );
|
294 |
break;
|
handler/twofa/two_fa_login.php
CHANGED
@@ -173,7 +173,7 @@ class Miniorange_Mobile_Login {
|
|
173 |
function mo_2_factor_hide_login() {
|
174 |
$bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
|
175 |
$bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
|
176 |
-
$hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.1
|
177 |
$hidepath = str_replace('/handler/includes/css', '/includes/css', $hidepath);
|
178 |
|
179 |
wp_register_style( 'hide-login', $hidepath );
|
@@ -270,7 +270,7 @@ class Miniorange_Mobile_Login {
|
|
270 |
}
|
271 |
|
272 |
function mo_2_factor_show_login_with_password_when_phonelogin_enabled() {
|
273 |
-
wp_register_style( 'show-login', plugins_url( 'includes/css/show-login.css?version=5.1
|
274 |
wp_enqueue_style( 'show-login' );
|
275 |
}
|
276 |
|
@@ -291,9 +291,9 @@ class Miniorange_Mobile_Login {
|
|
291 |
}
|
292 |
|
293 |
function mo_2_factor_show_login() {
|
294 |
-
$hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.1
|
295 |
|
296 |
-
$showpath = plugins_url( 'includes/css/show-login.css?version=5.1
|
297 |
|
298 |
if ( get_option( 'mo2f_enable_login_with_2nd_factor' ) ) {
|
299 |
wp_register_style( 'show-login', $hidepath );
|
@@ -317,20 +317,11 @@ class Miniorange_Mobile_Login {
|
|
317 |
<?php } ?>
|
318 |
|
319 |
<br>
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
if(get_option('mo_wpns_activate_recaptcha_for_login'))
|
326 |
-
{
|
327 |
-
|
328 |
-
echo "<script src='".MoWpnsConstants::RECAPTCHA_URL."'></script>";
|
329 |
-
echo '<div class="g-recaptcha" data-sitekey="'.get_option("mo_wpns_recaptcha_site_key").'"></div>';
|
330 |
-
echo '<style>#login{ width:349px;padding:2% 0 0; }.g-recaptcha{margin-bottom:5%;}#loginform{padding-bottom:20px;}</style>';
|
331 |
-
}
|
332 |
-
|
333 |
-
?>
|
334 |
<input type="button" name="miniorange_login_submit" style="width:100% !important;"
|
335 |
onclick="mouserloginsubmit();" id="miniorange_login_submit"
|
336 |
class="button button-primary button-large"
|
@@ -347,20 +338,22 @@ class Miniorange_Mobile_Login {
|
|
347 |
function mouserloginsubmit() {
|
348 |
var username = jQuery('#mo2fa_usernamekey').val();
|
349 |
var recap = jQuery('#g-recaptcha-response').val();
|
350 |
-
|
351 |
-
document.getElementById("
|
352 |
-
document.getElementById("
|
353 |
|
354 |
-
jQuery('#
|
355 |
-
|
356 |
}
|
357 |
|
358 |
jQuery('#mo2fa_usernamekey').keypress(function (e) {
|
359 |
if (e.which == 13) {//Enter key pressed
|
360 |
e.preventDefault();
|
361 |
var username = jQuery('#mo2fa_usernamekey').val();
|
362 |
-
document.getElementById("
|
363 |
-
|
|
|
|
|
364 |
}
|
365 |
|
366 |
});
|
@@ -384,7 +377,7 @@ class Miniorange_Mobile_Login {
|
|
384 |
<input type="hidden" id="sessids" name="session_id"
|
385 |
value="<?php echo $session_id_encrypt; ?>"/>
|
386 |
</form>
|
387 |
-
<form name="f" id="
|
388 |
<input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>
|
389 |
<input type="text" name="g-recaptcha-response" id = 'g-recaptcha-response' hidden/>
|
390 |
<input type="hidden" name="miniorange_login_nonce"
|
@@ -397,6 +390,7 @@ class Miniorange_Mobile_Login {
|
|
397 |
var session_ids="<?php echo $session_id_encrypt; ?>";
|
398 |
if (document.getElementById('loginform') != null) {
|
399 |
jQuery("#user_pass").after( "<input type='hidden' id='sessid' name='session_id' value='"+session_ids+"'/>");
|
|
|
400 |
|
401 |
}
|
402 |
});
|
173 |
function mo_2_factor_hide_login() {
|
174 |
$bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
|
175 |
$bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
|
176 |
+
$hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.5.1', dirname(dirname(__FILE__)) );
|
177 |
$hidepath = str_replace('/handler/includes/css', '/includes/css', $hidepath);
|
178 |
|
179 |
wp_register_style( 'hide-login', $hidepath );
|
270 |
}
|
271 |
|
272 |
function mo_2_factor_show_login_with_password_when_phonelogin_enabled() {
|
273 |
+
wp_register_style( 'show-login', plugins_url( 'includes/css/show-login.css?version=5.5.1', dirname(dirname(__FILE__ ))) );
|
274 |
wp_enqueue_style( 'show-login' );
|
275 |
}
|
276 |
|
291 |
}
|
292 |
|
293 |
function mo_2_factor_show_login() {
|
294 |
+
$hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.5.1', dirname(dirname(__FILE__)) );
|
295 |
|
296 |
+
$showpath = plugins_url( 'includes/css/show-login.css?version=5.5.1', dirname(dirname(__FILE__ )));
|
297 |
|
298 |
if ( get_option( 'mo2f_enable_login_with_2nd_factor' ) ) {
|
299 |
wp_register_style( 'show-login', $hidepath );
|
317 |
<?php } ?>
|
318 |
|
319 |
<br>
|
320 |
+
<div class="mo2f-button-container" id="mo2f_button_container">
|
321 |
+
<input type="text" name="mo2fa_usernamekey" id="mo2fa_usernamekey" autofocus="true"
|
322 |
+
placeholder="<?php echo mo2f_lt( 'Username' ); ?>"/>
|
323 |
+
<p>
|
324 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
<input type="button" name="miniorange_login_submit" style="width:100% !important;"
|
326 |
onclick="mouserloginsubmit();" id="miniorange_login_submit"
|
327 |
class="button button-primary button-large"
|
338 |
function mouserloginsubmit() {
|
339 |
var username = jQuery('#mo2fa_usernamekey').val();
|
340 |
var recap = jQuery('#g-recaptcha-response').val();
|
341 |
+
if(document.getElementById("mo2fa-g-recaptcha-response-form") !== null){
|
342 |
+
document.getElementById("mo2fa-g-recaptcha-response-form").elements[0].value = username;
|
343 |
+
document.getElementById("mo2fa-g-recaptcha-response-form").elements[1].value = recap;
|
344 |
|
345 |
+
jQuery('#mo2fa-g-recaptcha-response-form').submit();
|
346 |
+
}
|
347 |
}
|
348 |
|
349 |
jQuery('#mo2fa_usernamekey').keypress(function (e) {
|
350 |
if (e.which == 13) {//Enter key pressed
|
351 |
e.preventDefault();
|
352 |
var username = jQuery('#mo2fa_usernamekey').val();
|
353 |
+
if(document.getElementById("mo2fa-g-recaptcha-response-form") !== null){
|
354 |
+
document.getElementById("mo2fa-g-recaptcha-response-form").elements[0].value = username;
|
355 |
+
jQuery('#mo2fa-g-recaptcha-response-form').submit();
|
356 |
+
}
|
357 |
}
|
358 |
|
359 |
});
|
377 |
<input type="hidden" id="sessids" name="session_id"
|
378 |
value="<?php echo $session_id_encrypt; ?>"/>
|
379 |
</form>
|
380 |
+
<form name="f" id="mo2fa-g-recaptcha-response-form" method="post" action="" hidden>
|
381 |
<input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>
|
382 |
<input type="text" name="g-recaptcha-response" id = 'g-recaptcha-response' hidden/>
|
383 |
<input type="hidden" name="miniorange_login_nonce"
|
390 |
var session_ids="<?php echo $session_id_encrypt; ?>";
|
391 |
if (document.getElementById('loginform') != null) {
|
392 |
jQuery("#user_pass").after( "<input type='hidden' id='sessid' name='session_id' value='"+session_ids+"'/>");
|
393 |
+
jQuery(".wp-hide-pw").addClass('mo2fa_visible');
|
394 |
|
395 |
}
|
396 |
});
|
handler/twofa/two_fa_pass2login.php
CHANGED
@@ -174,40 +174,67 @@ class Miniorange_Password_2Factor_Login {
|
|
174 |
}
|
175 |
$backup_codes=get_user_meta($currentuser_id,'mo2f_backup_codes',true);
|
176 |
$mo2f_backup_code= sanitize_text_field($POSTED[ 'mo2f_backup_code' ]);
|
177 |
-
$
|
178 |
-
|
|
|
|
|
179 |
if(in_array($mo2f_backup_code,$backup_codes)){
|
180 |
foreach ($backup_codes as $key => $value) {
|
181 |
if($value==$mo2f_backup_code){
|
182 |
unset($backup_codes[$key]);
|
183 |
update_user_meta($currentuser_id,'mo2f_backup_codes', $backup_codes);
|
|
|
184 |
}
|
185 |
}
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
if(empty($mo2f_user_email)){
|
191 |
-
$currentuser = get_user_by( 'id', $currentuser_id );
|
192 |
-
$mo2f_user_email = $currentuser->user_email;
|
193 |
-
}
|
194 |
-
$subject = '2-Factor Authentication(Backup Codes)';
|
195 |
-
$headers = array('Content-Type: text/html; charset=UTF-8');
|
196 |
-
$message = MO2f_Utility::get_codes_warning_email_content($codes_remaining);
|
197 |
-
$result = wp_mail($mo2f_user_email,$subject,$message,$headers);
|
198 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
|
200 |
-
$this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
|
201 |
-
}else{
|
202 |
-
$mo2fa_login_message = __('The codes you have provided are either expired or incorrect.','miniorange-2-factor-authentication');
|
203 |
-
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
204 |
-
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
205 |
-
}
|
206 |
-
}else{
|
207 |
-
$mo2fa_login_message = __('There are no codes left.','miniorange-2-factor-authentication');
|
208 |
-
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
209 |
-
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
210 |
-
}
|
211 |
}else{
|
212 |
$this->remove_current_activity($session_id_encrypt);
|
213 |
return new WP_Error('invalid_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') . '</strong>: ' . __('Please try again..', 'miniorange-2-factor-authentication'));
|
@@ -227,18 +254,41 @@ class Miniorange_Password_2Factor_Login {
|
|
227 |
$redirect_to = esc_url_raw($_POST['redirect_to']);
|
228 |
$session_id = sanitize_text_field($_POST['session_id']);
|
229 |
$id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id, 'mo2f_current_user_id');
|
230 |
-
|
231 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
$codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
|
233 |
$str1="";
|
234 |
-
for ($x = 0; $x <
|
235 |
$str = $codes[$x];
|
236 |
$str1.=$str;
|
237 |
if($x != 4){
|
238 |
$str1.=',';
|
239 |
}
|
240 |
}
|
241 |
-
|
242 |
$key = get_option( 'mo2f_encryption_key' );
|
243 |
$codes_encrypt = MO2f_Utility::encrypt_data($str1, $key);
|
244 |
update_user_meta($id,'chqwetcsdvnvd', $codes_encrypt);
|
@@ -326,47 +376,7 @@ class Miniorange_Password_2Factor_Login {
|
|
326 |
|
327 |
|
328 |
$selected_2factor_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$current_user);
|
329 |
-
|
330 |
-
{
|
331 |
-
|
332 |
-
$userID = $current_user;
|
333 |
-
$otp = $otp_token;
|
334 |
-
$otpToken = get_user_meta($userID,'mo2f_otp_token_wa',true);
|
335 |
-
$time = get_user_meta($userID,'mo2f_whatsapp_time',true);
|
336 |
-
$accepted_time = time()-600;
|
337 |
-
$time = (int)$time;
|
338 |
-
|
339 |
-
|
340 |
-
if($otp == $otpToken)
|
341 |
-
{
|
342 |
-
if($accepted_time<$time){
|
343 |
-
update_user_meta( $userID, 'mo2f_whatsapp_id',get_user_meta($userID,'mo2f_temp_whatsappID',true));
|
344 |
-
update_user_meta( $userID, 'mo2f_whatsapp_num',get_user_meta($userID,'mo2f_temp_whatsapp_num',true));
|
345 |
-
delete_user_meta( $userID, 'mo2f_temp_whatsappID' );
|
346 |
-
delete_user_meta( $userID, 'mo2f_temp_whatsapp_num' );
|
347 |
-
delete_user_meta( $userID, 'mo2f_otp_token_wa');
|
348 |
-
delete_user_meta( $userID, 'mo2f_whatsapp_time');
|
349 |
-
|
350 |
-
$Mo2fdbQueries->update_user_details($userID, array(
|
351 |
-
"mo2f_configured_2FA_method" => 'OTP Over Whatsapp',
|
352 |
-
'mo2f_OTPOverWhatsapp_config_status' => true,
|
353 |
-
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
354 |
-
) );
|
355 |
-
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
356 |
-
}
|
357 |
-
else
|
358 |
-
{
|
359 |
-
delete_user_meta($userID,'mo2f_otp_token_wa');
|
360 |
-
delete_user_meta($userID,'mo2f_whatsapp_time');
|
361 |
-
$mo2fa_login_message = __('OTP has been expired please initiate a new transaction by clicking on Send OTP Button.','miniorange-2-factor-authentication');
|
362 |
-
}
|
363 |
-
}
|
364 |
-
else
|
365 |
-
{
|
366 |
-
$mo2fa_login_message = __('Invalid OTP. Please try again.','miniorange-2-factor-authentication');
|
367 |
-
}
|
368 |
-
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message,$redirect_to,null,$session_id_encrypt);
|
369 |
-
}
|
370 |
if($selected_2factor_method == 'OTP Over Telegram')
|
371 |
{
|
372 |
|
@@ -492,53 +502,6 @@ class Miniorange_Password_2Factor_Login {
|
|
492 |
}else if($selected_2factor_method == 'OTP OVER EMAIL'){
|
493 |
$currentMethod = "OTP_OVER_EMAIL";
|
494 |
$parameters = $email;
|
495 |
-
}else if($selected_2factor_method == 'OTP Over Whatsapp')
|
496 |
-
{
|
497 |
-
$currentMethod = "OTP Over Whatsapp";
|
498 |
-
$user_id = $current_user;
|
499 |
-
$whatsapp_number = sanitize_text_field($_POST['whatsapp_number']);
|
500 |
-
$whatsapp_id = sanitize_text_field($_POST['whatsapp_id']);
|
501 |
-
|
502 |
-
$otpToken = '';
|
503 |
-
$dnvjn = get_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=');
|
504 |
-
$dnvjn = (int)$dnvjn;
|
505 |
-
|
506 |
-
if($dnvjn<=0)
|
507 |
-
{
|
508 |
-
$mo2fa_login_message = 'Your Free transactions limit has been exceeded. Please contact miniOrange for more transactions.';
|
509 |
-
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message,$redirect_to,null,$session_id_encrypt);
|
510 |
-
}
|
511 |
-
|
512 |
-
for($i=1;$i<7;$i++)
|
513 |
-
{
|
514 |
-
$otpToken .= rand(0,9);
|
515 |
-
}
|
516 |
-
|
517 |
-
update_user_meta($user_id,'mo2f_otp_token_wa',$otpToken);
|
518 |
-
update_user_meta($user_id,'mo2f_whatsapp_time',time());
|
519 |
-
|
520 |
-
$whatsapp_id = str_replace( ' ', '', $whatsapp_id );
|
521 |
-
$whatsapp_number = str_replace( ' ', '', $whatsapp_number );
|
522 |
-
|
523 |
-
|
524 |
-
update_user_meta($user_id,'mo2f_temp_whatsappID',$whatsapp_id);
|
525 |
-
update_user_meta($user_id,'mo2f_temp_whatsapp_num',$whatsapp_number);
|
526 |
-
|
527 |
-
$url = 'https://api.callmebot.com/whatsapp.php?phone='.$whatsapp_number.'&text=Please+find+your+one+time+passcode:+'.$otpToken.'&apikey='.$whatsapp_id;
|
528 |
-
|
529 |
-
$data = file_get_contents($url);
|
530 |
-
if(strpos($data, 'Message queued') !== false)
|
531 |
-
{
|
532 |
-
update_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=',$dnvjn-1);
|
533 |
-
$mo2fa_login_message = 'An OTP has been sent to your given Whatsapp Number. It can take a couple of minutes to arrive.';
|
534 |
-
|
535 |
-
}
|
536 |
-
|
537 |
-
else
|
538 |
-
$mo2fa_login_message = 'There were an error while sending the OTP. Please confirm your API Key and phone number and try again. Make sure to add country code in phone number';
|
539 |
-
|
540 |
-
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message,$redirect_to,null,$session_id_encrypt);
|
541 |
-
|
542 |
}
|
543 |
|
544 |
else if($selected_2factor_method == 'OTP Over Telegram')
|
@@ -993,8 +956,21 @@ class Miniorange_Password_2Factor_Login {
|
|
993 |
}
|
994 |
update_user_meta($current_user->ID,'mo2f_external_app_type','GOOGLE AUTHENTICATOR');
|
995 |
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
996 |
}else{
|
997 |
-
$mo2fa_login_message = __('An error occured while
|
998 |
}
|
999 |
}else{
|
1000 |
$mo2fa_login_message = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
|
@@ -1312,21 +1288,13 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1312 |
{
|
1313 |
$selected_method = 'OTP Over Telegram';
|
1314 |
}
|
1315 |
-
|
1316 |
-
{
|
1317 |
-
$selected_method = 'OTP Over Whatsapp';
|
1318 |
-
}
|
1319 |
-
$Mo2fdbQueries->update_user_details( $current_user->ID, array('mo2f_configured_2FA_method' =>$selected_method) );
|
1320 |
}
|
1321 |
}else{
|
1322 |
if($selected_method == 'OTP OVER TELEGRAM')
|
1323 |
{
|
1324 |
$selected_method = 'OTP Over Telegram';
|
1325 |
}
|
1326 |
-
if($selected_method == 'OTP OVER WHATSAPP')
|
1327 |
-
{
|
1328 |
-
$selected_method = 'OTP Over Whatsapp';
|
1329 |
-
}
|
1330 |
$Mo2fdbQueries->update_user_details( $current_user->ID, array(
|
1331 |
'mo2f_configured_2FA_method' =>$selected_method,
|
1332 |
) );
|
@@ -1341,6 +1309,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1341 |
}
|
1342 |
|
1343 |
function check_kba_validation($POSTED){
|
|
|
1344 |
if ( isset( $POSTED['miniorange_kba_nonce'] ) ) { /*check kba validation*/
|
1345 |
$nonce = $POSTED['miniorange_kba_nonce'];
|
1346 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-kba-nonce' ) ) {
|
@@ -1354,6 +1323,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1354 |
$redirect_to = isset( $_POST['redirect_to'] ) ? esc_url_raw($_POST['redirect_to']) : null;
|
1355 |
if ( isset( $user_id ) ) {
|
1356 |
if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_1'] ) || MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_2'] ) ) {
|
|
|
1357 |
$mo2fa_login_message = 'Please provide both the answers.';
|
1358 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
|
1359 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
@@ -1367,6 +1337,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1367 |
$check_trust_device = isset( $_POST['mo2f_trust_device'] ) ? sanitize_text_field($_POST['mo2f_trust_device']) : 'false';
|
1368 |
//if the php session folder has insufficient permissions, cookies to be used
|
1369 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
|
|
|
1370 |
$mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
|
1371 |
$kba_validate = new Customer_Setup();
|
1372 |
$kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
@@ -1379,16 +1350,20 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1379 |
} catch ( Exception $e ) {
|
1380 |
echo $e->getMessage();
|
1381 |
}
|
|
|
1382 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1383 |
} else {
|
|
|
1384 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1385 |
}
|
1386 |
} else {
|
|
|
1387 |
$mo2fa_login_message = 'The answers you have provided are incorrect.';
|
1388 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
|
1389 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
1390 |
}
|
1391 |
} else {
|
|
|
1392 |
$this->remove_current_activity($session_id_encrypt);
|
1393 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
|
1394 |
}
|
@@ -1511,6 +1486,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1511 |
}
|
1512 |
|
1513 |
function check_miniorange_duo_push_validation($POSTED){
|
|
|
1514 |
$nonce = $POSTED['miniorange_duo_push_validation_nonce'];
|
1515 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-duo-validation-nonce' ) ) {
|
1516 |
$error = new WP_Error();
|
@@ -1519,13 +1495,16 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1519 |
} else {
|
1520 |
$this->miniorange_pass2login_start_session();
|
1521 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1522 |
-
|
1523 |
-
|
1524 |
$redirect_to = isset( $POSTED['redirect_to'] ) ? esc_url_raw($POSTED['redirect_to']) : null;
|
1525 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
|
|
|
|
1526 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1527 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to, null,$session_id_encrypt );
|
1528 |
} else {
|
|
|
1529 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1530 |
}
|
1531 |
|
@@ -1533,13 +1512,14 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1533 |
}
|
1534 |
|
1535 |
function check_miniorange_duo_push_validation_failed($POSTED){
|
1536 |
-
|
1537 |
$nonce = $POSTED['miniorange_duo_push_validation_failed_nonce'];
|
1538 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-duo-push-validation-failed-nonce' ) ) {
|
1539 |
$error = new WP_Error();
|
1540 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1541 |
return $error;
|
1542 |
} else {
|
|
|
1543 |
$this->miniorange_pass2login_start_session();
|
1544 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1545 |
$this->remove_current_activity($session_id_encrypt);
|
@@ -1550,7 +1530,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1550 |
|
1551 |
function check_miniorange_mobile_validation($POSTED){
|
1552 |
/*check mobile validation */
|
1553 |
-
|
1554 |
$nonce = $POSTED['miniorange_mobile_validation_nonce'];
|
1555 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
|
1556 |
$error = new WP_Error();
|
@@ -1573,27 +1553,33 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1573 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1574 |
//if the php session folder has insufficient permissions, cookies to be used
|
1575 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
|
|
|
1576 |
$redirect_to = isset( $POSTED['redirect_to'] ) ? esc_url_raw($POSTED['redirect_to']) : null;
|
1577 |
$checkMobileStatus = new Two_Factor_Setup();
|
1578 |
$content = $checkMobileStatus->check_mobile_status( $mo2f_login_transaction_id );
|
1579 |
$response = json_decode( $content, true );
|
1580 |
if(MO2F_IS_ONPREM)
|
1581 |
{
|
|
|
1582 |
$this->mo2fa_pass2login($redirect_to,$session_id_encrypt);
|
1583 |
}
|
1584 |
if ( json_last_error() == JSON_ERROR_NONE ) {
|
1585 |
if ( $response['status'] == 'SUCCESS' ) {
|
1586 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1587 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
|
|
1588 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to, null,$session_id_encrypt );
|
1589 |
} else {
|
|
|
1590 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1591 |
}
|
1592 |
} else {
|
|
|
1593 |
$this->remove_current_activity($session_id_encrypt);
|
1594 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
|
1595 |
}
|
1596 |
} else {
|
|
|
1597 |
$this->remove_current_activity($session_id_encrypt);
|
1598 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
|
1599 |
}
|
@@ -1607,6 +1593,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1607 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1608 |
return $error;
|
1609 |
} else {
|
|
|
1610 |
$this->miniorange_pass2login_start_session();
|
1611 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
|
1612 |
$this->remove_current_activity($session_id_encrypt);
|
@@ -1739,6 +1726,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1739 |
}
|
1740 |
function check_miniorange_soft_token($POSTED){
|
1741 |
/*Validate Soft Token,OTP over SMS,OTP over EMAIL,Phone verification */
|
|
|
1742 |
$nonce = sanitize_text_field($_POST['miniorange_soft_token_nonce']);
|
1743 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-soft-token-nonce' ) ) {
|
1744 |
$error = new WP_Error();
|
@@ -1757,10 +1745,12 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1757 |
{
|
1758 |
update_option('mo2f_attempts_before_redirect', $attempts-1 );
|
1759 |
$mo2fa_login_message = 'Please enter OTP to proceed.';
|
|
|
1760 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
1761 |
}else{
|
1762 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
1763 |
$this->remove_current_activity($session_id_encrypt);
|
|
|
1764 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1765 |
}
|
1766 |
} else {
|
@@ -1770,6 +1760,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1770 |
{
|
1771 |
update_option('mo2f_attempts_before_redirect', $attempts-1 );
|
1772 |
$mo2fa_login_message = 'Invalid OTP. Only digits within range 4-8 are allowed. Please try again.';
|
|
|
1773 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
1774 |
}else{
|
1775 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
@@ -1779,8 +1770,10 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1779 |
$data = array('reload' => "reload", );
|
1780 |
wp_send_json_success($data);
|
1781 |
}
|
1782 |
-
else
|
|
|
1783 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
|
|
1784 |
}
|
1785 |
}
|
1786 |
}
|
@@ -1793,7 +1786,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1793 |
$current_user = get_userdata($user_id);
|
1794 |
//if the php session folder has insufficient permissions, cookies to be used
|
1795 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
|
1796 |
-
|
|
|
1797 |
if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
|
1798 |
$content = json_decode( $customer->validate_otp_token( 'EMAIL', null, $mo2f_login_transaction_id, $softtoken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),$current_user ), true );
|
1799 |
}elseif (isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_WHATSAPP' ) {
|
@@ -1810,20 +1804,25 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1810 |
update_option('mo2f_attempts_before_redirect', 3);
|
1811 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1812 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
|
|
1813 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1814 |
}
|
1815 |
-
else
|
|
|
1816 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
|
|
1817 |
}
|
1818 |
else
|
1819 |
{
|
1820 |
$this->remove_current_activity($session_id_encrypt);
|
|
|
1821 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: OTP has been Expired please reinitiate another transaction.' ) );
|
1822 |
|
1823 |
}
|
1824 |
}
|
1825 |
else
|
1826 |
-
{
|
|
|
1827 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1828 |
$message = 'Invalid OTP please enter again.';
|
1829 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
@@ -1844,20 +1843,25 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1844 |
update_option('mo2f_attempts_before_redirect', 3);
|
1845 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1846 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
|
|
1847 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1848 |
}
|
1849 |
-
else
|
|
|
1850 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
|
|
1851 |
}
|
1852 |
else
|
1853 |
{
|
1854 |
$this->remove_current_activity($session_id_encrypt);
|
|
|
1855 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: OTP has been Expired please reinitiate another transaction.' ) );
|
1856 |
|
1857 |
}
|
1858 |
}
|
1859 |
else
|
1860 |
{
|
|
|
1861 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1862 |
$message = 'Invalid OTP please enter again.';
|
1863 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
@@ -1876,11 +1880,11 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1876 |
$this->remove_current_activity($session_id_encrypt);
|
1877 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
|
1878 |
}
|
1879 |
-
|
1880 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
|
1881 |
update_option('mo2f_attempts_before_redirect', 3);
|
1882 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1883 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
|
|
1884 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1885 |
} else {
|
1886 |
if($mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL')
|
@@ -1891,11 +1895,13 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1891 |
$enduser->mo2f_update_userinfo( $user_email, 'OTP Over Email', null, null, null );
|
1892 |
|
1893 |
}
|
|
|
1894 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1895 |
}
|
1896 |
} else {
|
1897 |
if($attempts>1 || $attempts=='disabled')
|
1898 |
{
|
|
|
1899 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1900 |
$message = $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN' ? 'You have entered an invalid OTP.<br>Please click on <b>Sync Time</b> in the miniOrange Authenticator app to sync your phone time with the miniOrange servers and try again.' : 'Invalid OTP. Please try again.';
|
1901 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
@@ -1907,12 +1913,16 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1907 |
$data = array('reload' => "reload", );
|
1908 |
wp_send_json_success($data);
|
1909 |
}
|
1910 |
-
else
|
1911 |
-
|
|
|
|
|
|
|
1912 |
}
|
1913 |
}
|
1914 |
} else {
|
1915 |
$this->remove_current_activity($session_id_encrypt);
|
|
|
1916 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
|
1917 |
}
|
1918 |
}
|
@@ -1960,8 +1970,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
1960 |
$this->miniorange_pass2login_start_session();
|
1961 |
$mobile_login = new Miniorange_Mobile_Login();
|
1962 |
//validation and sanitization
|
1963 |
-
|
1964 |
-
if ( MO2f_Utility::mo2f_check_empty_or_null( $
|
1965 |
MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please enter username to proceed' );
|
1966 |
$mobile_login->mo_auth_show_error_message();
|
1967 |
return;
|
@@ -2037,7 +2047,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2037 |
else if($mo2f_second_factor == 'Email Verification'){
|
2038 |
$this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
|
2039 |
}
|
2040 |
-
else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == '
|
2041 |
$this->mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
|
2042 |
} else if ( $mo2f_second_factor == 'KBA' ) {
|
2043 |
$this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
|
@@ -2068,6 +2078,28 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2068 |
}
|
2069 |
|
2070 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2071 |
if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
|
2072 |
{
|
2073 |
$userIDGet = sanitize_text_field($_GET['userID']);
|
@@ -2155,6 +2187,11 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2155 |
case 'miniorange_rba_validate':
|
2156 |
$this->check_rba_validation($_POST);
|
2157 |
break;
|
|
|
|
|
|
|
|
|
|
|
2158 |
|
2159 |
case 'miniorange_rba_cancle':
|
2160 |
|
@@ -2376,7 +2413,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2376 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
2377 |
$session_path = ini_get('session.save_path');
|
2378 |
if( is_writable($session_path) && is_readable($session_path) ) {
|
2379 |
-
|
|
|
2380 |
}
|
2381 |
}
|
2382 |
}
|
@@ -2437,7 +2475,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2437 |
}
|
2438 |
}
|
2439 |
|
2440 |
-
function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt=null,$show_back_button =null
|
2441 |
|
2442 |
$login_status = $mo2fa_login_status;
|
2443 |
$login_message = $mo2fa_login_message;
|
@@ -2457,7 +2495,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2457 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
|
2458 |
$user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
2459 |
|
2460 |
-
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id,$show_back_button );
|
2461 |
exit;
|
2462 |
break;
|
2463 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM':
|
@@ -2671,6 +2709,11 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2671 |
wp_localize_script( 'tmlajax_script', 'my_ajax_object',
|
2672 |
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
2673 |
}
|
|
|
|
|
|
|
|
|
|
|
2674 |
?>
|
2675 |
<p><input type="hidden" name="miniorange_login_nonce"
|
2676 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-login-nonce' ); ?>"/>
|
@@ -2713,12 +2756,13 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2713 |
}
|
2714 |
|
2715 |
function mo2f_pass2login_mobile_verification( $user, $redirect_to, $session_id_encrypt=null ) {
|
2716 |
-
global $Mo2fdbQueries;
|
2717 |
if (is_null($session_id_encrypt)){
|
2718 |
$session_id_encrypt=$this->create_session();
|
2719 |
}
|
2720 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2721 |
$useragent = $_SERVER['HTTP_USER_AGENT'];
|
|
|
2722 |
if ( MO2f_Utility::check_if_request_is_from_mobile_device( $useragent ) ) {
|
2723 |
$session_cookie_variables = array( 'mo2f-login-qrCode', 'mo2f_transactionId' );
|
2724 |
|
@@ -2728,6 +2772,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2728 |
|
2729 |
$mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
|
2730 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
|
|
|
2731 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
2732 |
} else {
|
2733 |
$challengeMobile = new Customer_Setup();
|
@@ -2742,15 +2787,18 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2742 |
$this->mo2f_transactionid=$response['txId'];
|
2743 |
$mo2fa_login_message = '';
|
2744 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_MOBILE_AUTHENTICATION';
|
|
|
2745 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, $qrCode,$session_id_encrypt );
|
2746 |
} else if ( $response['status'] == 'ERROR' ) {
|
2747 |
$this->remove_current_activity($session_id_encrypt);
|
|
|
2748 |
$error = new WP_Error();
|
2749 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
2750 |
|
2751 |
return $error;
|
2752 |
}
|
2753 |
} else {
|
|
|
2754 |
$this->remove_current_activity($session_id_encrypt);
|
2755 |
$error = new WP_Error();
|
2756 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
@@ -2776,13 +2824,14 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2776 |
|
2777 |
function mo2f_pass2login_push_oobemail_verification( $current_user, $mo2f_second_factor, $redirect_to, $session_id=null ) {
|
2778 |
|
2779 |
-
global $Mo2fdbQueries;
|
2780 |
if(is_null($session_id)){
|
2781 |
$session_id=$this->create_session();
|
2782 |
}
|
2783 |
$challengeMobile = new Customer_Setup();
|
2784 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $current_user->ID );
|
2785 |
if(MO2F_IS_ONPREM && $mo2f_second_factor != "PUSH NOTIFICATIONS"){
|
|
|
2786 |
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'api'.DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
2787 |
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
2788 |
$content = $mo2fOnPremRedirect->mo2f_pass2login_push_email_onpremise($current_user, $redirect_to, $session_id );
|
@@ -2796,7 +2845,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2796 |
MO2f_Utility::mo2f_set_transient($session_id, 'mo2f_transactionId', $response['txId']);
|
2797 |
update_user_meta($current_user->ID,'mo2f_EV_txid',$response['txId']);
|
2798 |
|
2799 |
-
|
2800 |
$this->mo2f_transactionid=$response['txId'];
|
2801 |
|
2802 |
$mo2fa_login_message = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'A Push Notification has been sent to your phone. We are waiting for your approval.' : 'An email has been sent to ' . MO2f_Utility::mo2f_get_hidden_email( $user_email ) . '. We are waiting for your approval.';
|
@@ -2806,13 +2855,14 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2806 |
MO2f_Utility::mo2f_set_transient($session_id, 'mo2f_transactionId', $response['txId']);
|
2807 |
update_user_meta($current_user->ID,'mo2f_EV_txid',$response['txId']);
|
2808 |
|
2809 |
-
|
2810 |
$this->mo2f_transactionid=$response['txId'];
|
2811 |
$mo2fa_login_message = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'An error occured while sending push notification to your app. You can click on <b>Phone is Offline</b> button to enter soft token from app or <b>Forgot your phone</b> button to receive OTP to your registered email.' : 'An error occured while sending email. Please try again.';
|
2812 |
$mo2fa_login_status = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'MO_2_FACTOR_CHALLENGE_PUSH_NOTIFICATIONS' : 'MO_2_FACTOR_CHALLENGE_OOB_EMAIL';
|
2813 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2814 |
}
|
2815 |
} else {
|
|
|
2816 |
$this->remove_current_activity($session_id);
|
2817 |
$error = new WP_Error();
|
2818 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
@@ -2822,7 +2872,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2822 |
}
|
2823 |
|
2824 |
function mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to,$session_id=null ) {
|
2825 |
-
global $Mo2fdbQueries;
|
|
|
2826 |
if(is_null($session_id)){
|
2827 |
$session_id=$this->create_session();
|
2828 |
}
|
@@ -2841,52 +2892,14 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2841 |
if ( $mo2f_second_factor == 'SOFT TOKEN' ) {
|
2842 |
$mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
|
2843 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
|
|
|
2844 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2845 |
} else if ( $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' ) {
|
2846 |
$mo2fa_login_message ='Please enter the one time passcode shown in the <b> Authenticator</b> app.';
|
2847 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_GOOGLE_AUTHENTICATION';
|
|
|
2848 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2849 |
-
}elseif ($mo2f_second_factor == 'OTP Over
|
2850 |
-
$whatsappID = get_user_meta($user->ID,'mo2f_whatsapp_id',true);
|
2851 |
-
$whatsappNum = get_user_meta($user->ID,'mo2f_whatsapp_num',true);
|
2852 |
-
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_WHATSAPP';
|
2853 |
-
|
2854 |
-
$dnvjn = get_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=');
|
2855 |
-
$dnvjn = (int)$dnvjn;
|
2856 |
-
|
2857 |
-
if($dnvjn<=0)
|
2858 |
-
{
|
2859 |
-
$mo2fa_login_message ='Your Free transacions limit has been exceeded. Please contact miniOrange for more transacions.';
|
2860 |
-
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id );
|
2861 |
-
}
|
2862 |
-
|
2863 |
-
$otpToken = '';
|
2864 |
-
for($i=1;$i<7;$i++)
|
2865 |
-
{
|
2866 |
-
$otpToken .= rand(0,9);
|
2867 |
-
}
|
2868 |
-
|
2869 |
-
update_user_meta($user->ID,'mo2f_otp_token_wa',$otpToken);
|
2870 |
-
update_user_meta($user->ID,'mo2f_whatsapp_time',time());
|
2871 |
-
|
2872 |
-
$url = 'https://api.callmebot.com/whatsapp.php?phone='.$whatsappNum.'&text=Please+find+your+one+time+passcode:+'.$otpToken.'&apikey='.$whatsappID;
|
2873 |
-
|
2874 |
-
$data = file_get_contents($url);
|
2875 |
-
if(strpos($data, 'Message queued') !== false)
|
2876 |
-
{
|
2877 |
-
update_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=',$dnvjn-1);
|
2878 |
-
$mo2fa_login_message ='Please enter the one time passcode sent on your<b> Whatsapp</b> app.';
|
2879 |
-
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id );
|
2880 |
-
}
|
2881 |
-
else
|
2882 |
-
{
|
2883 |
-
$mo2fa_login_message ='There was an error occured while sending OTP on your<b> Whatsapp</b> app.';
|
2884 |
-
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id );
|
2885 |
-
|
2886 |
-
}
|
2887 |
-
|
2888 |
-
}
|
2889 |
-
elseif ($mo2f_second_factor == 'OTP Over Telegram') {
|
2890 |
$chatID = get_user_meta($user->ID,'mo2f_chat_id',true);
|
2891 |
$otpToken = '';
|
2892 |
for($i=1;$i<7;$i++)
|
@@ -2922,6 +2935,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2922 |
{
|
2923 |
$mo2fa_login_message ='Please enter the one time passcode sent on your<b> Telegram</b> app.';
|
2924 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM';
|
|
|
2925 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id );
|
2926 |
}
|
2927 |
|
@@ -2941,6 +2955,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2941 |
}
|
2942 |
else
|
2943 |
{
|
|
|
2944 |
$response['status'] = 'FAILED';
|
2945 |
$response['message'] = '<p style = "color:red;">OTP limit has been exceeded</p>';
|
2946 |
$otpLIMiTE = 1;
|
@@ -2949,12 +2964,14 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2949 |
if ( $response['status'] == 'SUCCESS' ) {
|
2950 |
if($mo2f_second_factor == 'EMAIL')
|
2951 |
{
|
|
|
2952 |
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
2953 |
if($cmVtYWluaW5nT1RQ>0)
|
2954 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2955 |
}
|
2956 |
elseif($mo2f_second_factor == 'SMS')
|
2957 |
{
|
|
|
2958 |
$mo2f_sms = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z');
|
2959 |
if($mo2f_sms>0)
|
2960 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',$mo2f_sms-1);
|
@@ -2969,8 +2986,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
2969 |
$this->mo2f_transactionid=$response['txId'];
|
2970 |
$mo2fa_login_message = $message;
|
2971 |
$currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
2972 |
-
|
2973 |
-
if($currentMethod == 'OTP Over Email')
|
2974 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
|
2975 |
else
|
2976 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS';
|
@@ -3030,6 +3046,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3030 |
$mobile_login->remove_current_activity($session_id_encrypted);
|
3031 |
|
3032 |
delete_expired_transients( true );
|
|
|
3033 |
|
3034 |
wp_set_auth_cookie( $user_id, true );
|
3035 |
do_action( 'wp_login', $currentuser->user_login, $currentuser );
|
@@ -3050,8 +3067,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3050 |
}
|
3051 |
|
3052 |
function miniorange_initiate_2nd_factor( $currentuser, $attributes = null, $redirect_to = null, $otp_token = "",$session_id_encrypt=null ) {
|
3053 |
-
|
3054 |
-
|
3055 |
$this->miniorange_pass2login_start_session();
|
3056 |
if(is_null($session_id_encrypt)) {
|
3057 |
$session_id_encrypt=$this->create_session();
|
@@ -3059,6 +3076,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3059 |
|
3060 |
if(class_exists('UM_Functions'))
|
3061 |
{
|
|
|
3062 |
if(!isset($_POST['wp-submit']) and isset($_POST['um_request']))
|
3063 |
{
|
3064 |
$meta = get_option('um_role_'.$currentuser->roles[0].'_meta');
|
@@ -3150,80 +3168,20 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3150 |
|
3151 |
$mo2f_second_factor = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $currentuser->ID );
|
3152 |
|
3153 |
-
if(!MO2F_IS_ONPREM and $mo2f_second_factor!= 'OTP Over Telegram'
|
3154 |
$mo2f_second_factor = mo2f_get_user_2ndfactor( $currentuser );
|
3155 |
|
3156 |
-
|
3157 |
-
|
3158 |
-
|
3159 |
-
|
3160 |
-
|
3161 |
-
|
3162 |
-
|
3163 |
-
|
3164 |
-
|
3165 |
-
|
3166 |
-
|
3167 |
-
$mo2f_second_factor = 'SMS';
|
3168 |
-
else if($mo2f_second_factor == 'Duo Authenticator' || $mo2f_second_factor == 'DUO AUTHENTICATOR')
|
3169 |
-
$mo2f_second_factor = 'Duo Authenticator';
|
3170 |
-
else if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
|
3171 |
-
$mo2f_second_factor = "EMAIL";
|
3172 |
-
|
3173 |
-
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
|
3174 |
-
{
|
3175 |
-
update_site_option("bGltaXRSZWFjaGVk",1);
|
3176 |
-
|
3177 |
-
}
|
3178 |
-
}
|
3179 |
-
|
3180 |
-
|
3181 |
-
if((($mo2f_second_factor == 'GOOGLE AUTHENTICATOR') || ($mo2f_second_factor =='SOFT TOKEN') || ($mo2f_second_factor =='AUTHY AUTHENTICATOR')) && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
|
3182 |
-
{
|
3183 |
-
$error=$this->mo2f_validate_soft_token($currentuser, $redirect_to, $mo2f_second_factor, $otp_token,$session_id_encrypt);
|
3184 |
-
if(is_wp_error( $error))
|
3185 |
-
{
|
3186 |
-
return $error;
|
3187 |
-
}
|
3188 |
-
}
|
3189 |
-
else{
|
3190 |
-
|
3191 |
-
if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status ) {
|
3192 |
-
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to, $session_id_encrypt );
|
3193 |
-
} else {
|
3194 |
-
|
3195 |
-
if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' ) {
|
3196 |
-
$this->mo2f_pass2login_mobile_verification( $currentuser, $redirect_to, $session_id_encrypt );
|
3197 |
-
} else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' || $mo2f_second_factor == 'Email Verification') {
|
3198 |
-
$this->mo2f_pass2login_push_oobemail_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3199 |
-
} else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'EMAIL' ||$mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == 'OTP Over Whatsapp') {
|
3200 |
-
$this->mo2f_pass2login_otp_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3201 |
-
} else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
|
3202 |
-
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
|
3203 |
-
}else if ( $mo2f_second_factor == 'Duo Authenticator') {
|
3204 |
-
|
3205 |
-
$this->mo2f_pass2login_duo_push_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3206 |
-
|
3207 |
-
}else if ( $mo2f_second_factor == 'NONE' ) {
|
3208 |
-
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
3209 |
-
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
3210 |
-
else
|
3211 |
-
return $currentuser;
|
3212 |
-
} else {
|
3213 |
-
$this->remove_current_activity($session_id_encrypt);
|
3214 |
-
$error = new WP_Error();
|
3215 |
-
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3216 |
-
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Two Factor method has not been configured.', );
|
3217 |
-
wp_send_json_success($data);
|
3218 |
-
}
|
3219 |
-
else{
|
3220 |
-
$error->add( 'empty_username', __( '<strong>ERROR</strong>: Two Factor method has not been configured.' ) );
|
3221 |
-
return $error;
|
3222 |
-
}
|
3223 |
-
}
|
3224 |
-
}
|
3225 |
-
}
|
3226 |
-
|
3227 |
}
|
3228 |
}else if(!$exceeded && MoWpnsUtility::get_mo2f_db_option('mo2f_inline_registration', 'site_option')){
|
3229 |
$this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
|
@@ -3240,7 +3198,105 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3240 |
}
|
3241 |
|
3242 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3244 |
function mo2fa_inline($currentuser,$redirect_to,$session_id){
|
3245 |
|
3246 |
global $Mo2fdbQueries;
|
@@ -3259,7 +3315,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3259 |
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message,$redirect_to,null,$session_id);
|
3260 |
}
|
3261 |
|
3262 |
-
function mo2f_validate_soft_token($currentuser, $
|
3263 |
global $Mo2fdbQueries;
|
3264 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser->ID );
|
3265 |
$customer = new Customer_Setup();
|
@@ -3313,7 +3369,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3313 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
3314 |
$mo2fa_login_message = 'An OTP has been sent to '.$email.' please verify to set the two-factor';
|
3315 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
|
3316 |
-
$
|
|
|
3317 |
}
|
3318 |
else
|
3319 |
{
|
@@ -3340,7 +3397,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3340 |
$this->miniorange_pass2login_start_session();
|
3341 |
MO2f_Utility::set_user_values( $session_id, "mo2f_current_user_id", $currentuser->ID );
|
3342 |
$this->mo2f_userID=$currentuser->ID;
|
3343 |
-
mo2f_collect_device_attributes_handler(
|
3344 |
exit;
|
3345 |
} else {
|
3346 |
$this->miniorange_initiate_2nd_factor( $currentuser, null, $redirect_to ,null ,$session_id );
|
@@ -3348,6 +3405,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3348 |
}
|
3349 |
|
3350 |
function mo2f_check_username_password( $user, $username, $password, $redirect_to = null ) {
|
|
|
3351 |
if ( is_a( $user, 'WP_Error' ) && ! empty( $user ) ) {
|
3352 |
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3353 |
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid User Credentials', );
|
@@ -3380,13 +3438,15 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3380 |
}
|
3381 |
else{
|
3382 |
$currentuser->add( 'invalid_username_password', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Username or password.' ) );
|
|
|
3383 |
return $currentuser;
|
3384 |
}
|
3385 |
} else {
|
3386 |
-
|
3387 |
-
|
3388 |
$session_id = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
|
|
3389 |
if(isset($_REQUEST['woocommerce-login-nonce'])){
|
|
|
3390 |
if ( ! empty( $_REQUEST[ 'redirect_to' ] ) ) {
|
3391 |
$redirect_to = wp_unslash( $_REQUEST[ 'redirect_to' ] );
|
3392 |
} elseif ( isset($_REQUEST[ '_wp_http_referer' ]) ) {
|
@@ -3402,10 +3462,12 @@ function check_miniorange_duo_push_validation_failed($POSTED){
|
|
3402 |
$cloud_methods = array("MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","SOFT TOKEN");
|
3403 |
if (MO2F_IS_ONPREM && $mo2f_configured_2FA_method=='Security Questions')
|
3404 |
{
|
|
|
3405 |
$this->miniorange_initiate_2nd_factor($currentuser, null , $redirect_to , "" , $session_id );
|
3406 |
}
|
3407 |
else if(MO2F_IS_ONPREM && $mo2f_configured_2FA_method =='Email Verification')
|
3408 |
{
|
|
|
3409 |
$this->miniorange_initiate_2nd_factor($currentuser, null , $redirect_to , null ,$session_id );
|
3410 |
}
|
3411 |
else
|
174 |
}
|
175 |
$backup_codes=get_user_meta($currentuser_id,'mo2f_backup_codes',true);
|
176 |
$mo2f_backup_code= sanitize_text_field($POSTED[ 'mo2f_backup_code' ]);
|
177 |
+
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser_id );
|
178 |
+
|
179 |
+
if(!empty($backup_codes)){
|
180 |
+
$mo2f_backup_code = md5($mo2f_backup_code);
|
181 |
if(in_array($mo2f_backup_code,$backup_codes)){
|
182 |
foreach ($backup_codes as $key => $value) {
|
183 |
if($value==$mo2f_backup_code){
|
184 |
unset($backup_codes[$key]);
|
185 |
update_user_meta($currentuser_id,'mo2f_backup_codes', $backup_codes);
|
186 |
+
$this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
|
187 |
}
|
188 |
}
|
189 |
+
}else{
|
190 |
+
$mo2fa_login_message = __('The code you provided is already used or incorrect.','miniorange-2-factor-authentication');
|
191 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
192 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
}
|
194 |
+
}else{
|
195 |
+
|
196 |
+
if(isset($mo2f_backup_code)){
|
197 |
+
$generate_backup_code = new Customer_Cloud_Setup();
|
198 |
+
$data = $generate_backup_code->mo2f_validate_backup_codes($mo2f_backup_code,$mo2f_user_email);
|
199 |
+
|
200 |
+
if( $data == 'success'){
|
201 |
+
$this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
|
202 |
+
}else if($data == 'error_in_validation'){
|
203 |
+
$mo2fa_login_message = __('Error occurred while validating the backup codes.','miniorange-2-factor-authentication');
|
204 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
205 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
206 |
+
}else if($data == 'used_code'){
|
207 |
+
$mo2fa_login_message = __('The code you provided is already used or incorrect.','miniorange-2-factor-authentication');
|
208 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
209 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
210 |
+
}else if($data == 'total_code_used'){
|
211 |
+
$mo2fa_login_message = __('You have used all the backup codes. Please contact <a herf="mailto:2fasupport@xecurify.com">2fasupport@xecurify.com</a>','miniorange-2-factor-authentication');
|
212 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
213 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
214 |
+
}else if($data == 'backup_code_not_generated'){
|
215 |
+
$mo2fa_login_message = __('Backup code has not generated for you.','miniorange-2-factor-authentication');
|
216 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
217 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
218 |
+
}else if($data == 'DBConnectionerror'){
|
219 |
+
$mo2fa_login_message = __('Error occurred while establising connection.','miniorange-2-factor-authentication');
|
220 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
221 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
222 |
+
|
223 |
+
}else if($data == 'missingparameter'){
|
224 |
+
$mo2fa_login_message = __('Some parameters are missing while validating backup codes.');
|
225 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
226 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
227 |
+
}
|
228 |
+
|
229 |
+
|
230 |
+
}else{
|
231 |
+
$mo2fa_login_message = __('Please enter backup code.','miniorange-2-factor-authentication');
|
232 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
|
233 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
}else{
|
239 |
$this->remove_current_activity($session_id_encrypt);
|
240 |
return new WP_Error('invalid_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') . '</strong>: ' . __('Please try again..', 'miniorange-2-factor-authentication'));
|
254 |
$redirect_to = esc_url_raw($_POST['redirect_to']);
|
255 |
$session_id = sanitize_text_field($_POST['session_id']);
|
256 |
$id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id, 'mo2f_current_user_id');
|
257 |
+
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
|
258 |
+
if(empty($mo2f_user_email)){
|
259 |
+
$currentuser = get_user_by( 'id', $id );
|
260 |
+
$mo2f_user_email = $currentuser->user_email;
|
261 |
+
}
|
262 |
+
$generate_backup_code = new Customer_Cloud_Setup();
|
263 |
+
$codes=$generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
|
264 |
+
if($codes == 'AllUsed'){
|
265 |
+
$mo2fa_login_message = "You have already used all the backup codes for this user and domain.";
|
266 |
+
$mo2fa_login_status = sanitize_text_field($_POST['login_status']);
|
267 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
|
268 |
+
}else if($codes == 'UserLimitReached') {
|
269 |
+
$mo2fa_login_message = "Backup code generation limit has reached for this domain.";
|
270 |
+
$mo2fa_login_status = sanitize_text_field($_POST['login_status']);
|
271 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
|
272 |
+
}else if($codes == 'LimitReached'){
|
273 |
+
$mo2fa_login_message = "backup code generation limit has reached for this user.";
|
274 |
+
$mo2fa_login_status = sanitize_text_field($_POST['login_status']);
|
275 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
|
276 |
+
}else if($codes == 'invalid_request'){
|
277 |
+
$mo2fa_login_message = "Invalid request.";
|
278 |
+
$mo2fa_login_status = sanitize_text_field($_POST['login_status']);
|
279 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
|
280 |
+
}
|
281 |
+
$codes = explode(' ', $codes);
|
282 |
$codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
|
283 |
$str1="";
|
284 |
+
for ($x = 0; $x < sizeof($codes); $x++) {
|
285 |
$str = $codes[$x];
|
286 |
$str1.=$str;
|
287 |
if($x != 4){
|
288 |
$str1.=',';
|
289 |
}
|
290 |
}
|
291 |
+
|
292 |
$key = get_option( 'mo2f_encryption_key' );
|
293 |
$codes_encrypt = MO2f_Utility::encrypt_data($str1, $key);
|
294 |
update_user_meta($id,'chqwetcsdvnvd', $codes_encrypt);
|
376 |
|
377 |
|
378 |
$selected_2factor_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$current_user);
|
379 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
if($selected_2factor_method == 'OTP Over Telegram')
|
381 |
{
|
382 |
|
502 |
}else if($selected_2factor_method == 'OTP OVER EMAIL'){
|
503 |
$currentMethod = "OTP_OVER_EMAIL";
|
504 |
$parameters = $email;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
505 |
}
|
506 |
|
507 |
else if($selected_2factor_method == 'OTP Over Telegram')
|
956 |
}
|
957 |
update_user_meta($current_user->ID,'mo2f_external_app_type','GOOGLE AUTHENTICATOR');
|
958 |
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
959 |
+
|
960 |
+
//When user sets method of another admin from USers section.
|
961 |
+
if(!empty(get_user_meta($current_user->ID,'mo2fa_set_Authy_inline'))){
|
962 |
+
$Mo2fdbQueries->update_user_details( $current_user->ID, array(
|
963 |
+
'mo2f_GoogleAuthenticator_config_status' => false,
|
964 |
+
'mo2f_AuthyAuthenticator_config_status' => true,
|
965 |
+
'mo2f_configured_2FA_method' => "Authy Authenticator",
|
966 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
967 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
968 |
+
) );
|
969 |
+
update_user_meta( $current_user->ID, 'mo2f_external_app_type', "Authy Authenticator" );
|
970 |
+
delete_user_meta($current_user->ID ,'mo2fa_set_Authy_inline');
|
971 |
+
}
|
972 |
}else{
|
973 |
+
$mo2fa_login_message = __('An error occured while setting up Google/Authy Authenticator. Please Try again.','miniorange-2-factor-authentication');
|
974 |
}
|
975 |
}else{
|
976 |
$mo2fa_login_message = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
|
1288 |
{
|
1289 |
$selected_method = 'OTP Over Telegram';
|
1290 |
}
|
1291 |
+
$Mo2fdbQueries->update_user_details( $current_user->ID, array('mo2f_configured_2FA_method' =>$selected_method) );
|
|
|
|
|
|
|
|
|
1292 |
}
|
1293 |
}else{
|
1294 |
if($selected_method == 'OTP OVER TELEGRAM')
|
1295 |
{
|
1296 |
$selected_method = 'OTP Over Telegram';
|
1297 |
}
|
|
|
|
|
|
|
|
|
1298 |
$Mo2fdbQueries->update_user_details( $current_user->ID, array(
|
1299 |
'mo2f_configured_2FA_method' =>$selected_method,
|
1300 |
) );
|
1309 |
}
|
1310 |
|
1311 |
function check_kba_validation($POSTED){
|
1312 |
+
global $moWpnsUtility;
|
1313 |
if ( isset( $POSTED['miniorange_kba_nonce'] ) ) { /*check kba validation*/
|
1314 |
$nonce = $POSTED['miniorange_kba_nonce'];
|
1315 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-kba-nonce' ) ) {
|
1323 |
$redirect_to = isset( $_POST['redirect_to'] ) ? esc_url_raw($_POST['redirect_to']) : null;
|
1324 |
if ( isset( $user_id ) ) {
|
1325 |
if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_1'] ) || MO2f_Utility::mo2f_check_empty_or_null( $_POST['mo2f_answer_2'] ) ) {
|
1326 |
+
MO2f_Utility::mo2f_debug_file('Please provide both the answers of KBA'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1327 |
$mo2fa_login_message = 'Please provide both the answers.';
|
1328 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
|
1329 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
1337 |
$check_trust_device = isset( $_POST['mo2f_trust_device'] ) ? sanitize_text_field($_POST['mo2f_trust_device']) : 'false';
|
1338 |
//if the php session folder has insufficient permissions, cookies to be used
|
1339 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
|
1340 |
+
MO2f_Utility::mo2f_debug_file('Transaction Id-'.$mo2f_login_transaction_id.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1341 |
$mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
|
1342 |
$kba_validate = new Customer_Setup();
|
1343 |
$kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
1350 |
} catch ( Exception $e ) {
|
1351 |
echo $e->getMessage();
|
1352 |
}
|
1353 |
+
MO2f_Utility::mo2f_debug_file('Remeber device logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1354 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1355 |
} else {
|
1356 |
+
MO2f_Utility::mo2f_debug_file('Logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1357 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1358 |
}
|
1359 |
} else {
|
1360 |
+
MO2f_Utility::mo2f_debug_file('The answers you have provided for KBA are incorrect'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1361 |
$mo2fa_login_message = 'The answers you have provided are incorrect.';
|
1362 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_KBA_AUTHENTICATION';
|
1363 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
1364 |
}
|
1365 |
} else {
|
1366 |
+
MO2f_Utility::mo2f_debug_file('User id not found'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1367 |
$this->remove_current_activity($session_id_encrypt);
|
1368 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
|
1369 |
}
|
1486 |
}
|
1487 |
|
1488 |
function check_miniorange_duo_push_validation($POSTED){
|
1489 |
+
global $moWpnsUtility;
|
1490 |
$nonce = $POSTED['miniorange_duo_push_validation_nonce'];
|
1491 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-duo-validation-nonce' ) ) {
|
1492 |
$error = new WP_Error();
|
1495 |
} else {
|
1496 |
$this->miniorange_pass2login_start_session();
|
1497 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1498 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
1499 |
+
|
1500 |
$redirect_to = isset( $POSTED['redirect_to'] ) ? esc_url_raw($POSTED['redirect_to']) : null;
|
1501 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1502 |
+
|
1503 |
+
MO2f_Utility::mo2f_debug_file('Remember device- Duo push notification logged in successfully'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1504 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1505 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to, null,$session_id_encrypt );
|
1506 |
} else {
|
1507 |
+
MO2f_Utility::mo2f_debug_file('Duo push notification - Logged in successfully'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1508 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1509 |
}
|
1510 |
|
1512 |
}
|
1513 |
|
1514 |
function check_miniorange_duo_push_validation_failed($POSTED){
|
1515 |
+
global $moWpnsUtility;
|
1516 |
$nonce = $POSTED['miniorange_duo_push_validation_failed_nonce'];
|
1517 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-duo-push-validation-failed-nonce' ) ) {
|
1518 |
$error = new WP_Error();
|
1519 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1520 |
return $error;
|
1521 |
} else {
|
1522 |
+
MO2f_Utility::mo2f_debug_file('Denied duo push notification'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1523 |
$this->miniorange_pass2login_start_session();
|
1524 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1525 |
$this->remove_current_activity($session_id_encrypt);
|
1530 |
|
1531 |
function check_miniorange_mobile_validation($POSTED){
|
1532 |
/*check mobile validation */
|
1533 |
+
global $moWpnsUtility;
|
1534 |
$nonce = $POSTED['miniorange_mobile_validation_nonce'];
|
1535 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
|
1536 |
$error = new WP_Error();
|
1553 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1554 |
//if the php session folder has insufficient permissions, cookies to be used
|
1555 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
|
1556 |
+
MO2f_Utility::mo2f_debug_file('Transaction_id-'.$mo2f_login_transaction_id.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1557 |
$redirect_to = isset( $POSTED['redirect_to'] ) ? esc_url_raw($POSTED['redirect_to']) : null;
|
1558 |
$checkMobileStatus = new Two_Factor_Setup();
|
1559 |
$content = $checkMobileStatus->check_mobile_status( $mo2f_login_transaction_id );
|
1560 |
$response = json_decode( $content, true );
|
1561 |
if(MO2F_IS_ONPREM)
|
1562 |
{
|
1563 |
+
MO2f_Utility::mo2f_debug_file('MO QR-code/push notification auth logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1564 |
$this->mo2fa_pass2login($redirect_to,$session_id_encrypt);
|
1565 |
}
|
1566 |
if ( json_last_error() == JSON_ERROR_NONE ) {
|
1567 |
if ( $response['status'] == 'SUCCESS' ) {
|
1568 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1569 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1570 |
+
MO2f_Utility::mo2f_debug_file('Remember device flow prompted'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1571 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to, null,$session_id_encrypt );
|
1572 |
} else {
|
1573 |
+
MO2f_Utility::mo2f_debug_file('MO QR-code/push notification auth logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1574 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1575 |
}
|
1576 |
} else {
|
1577 |
+
MO2f_Utility::mo2f_debug_file('Invalid_username'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1578 |
$this->remove_current_activity($session_id_encrypt);
|
1579 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
|
1580 |
}
|
1581 |
} else {
|
1582 |
+
MO2f_Utility::mo2f_debug_file('Invalid_username'.' User_IP-'.$moWpnsUtility->get_client_ip());
|
1583 |
$this->remove_current_activity($session_id_encrypt);
|
1584 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again.' ) );
|
1585 |
}
|
1593 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1594 |
return $error;
|
1595 |
} else {
|
1596 |
+
MO2f_Utility::mo2f_debug_file('MO QR-code/push notification auth denied.');
|
1597 |
$this->miniorange_pass2login_start_session();
|
1598 |
$session_id_encrypt = isset( $POSTED['session_id'] ) ? $POSTED['session_id'] : null;
|
1599 |
$this->remove_current_activity($session_id_encrypt);
|
1726 |
}
|
1727 |
function check_miniorange_soft_token($POSTED){
|
1728 |
/*Validate Soft Token,OTP over SMS,OTP over EMAIL,Phone verification */
|
1729 |
+
global $moWpnsUtility;
|
1730 |
$nonce = sanitize_text_field($_POST['miniorange_soft_token_nonce']);
|
1731 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-soft-token-nonce' ) ) {
|
1732 |
$error = new WP_Error();
|
1745 |
{
|
1746 |
update_option('mo2f_attempts_before_redirect', $attempts-1 );
|
1747 |
$mo2fa_login_message = 'Please enter OTP to proceed.';
|
1748 |
+
MO2f_Utility::mo2f_debug_file('Please enter OTP to proceed'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1749 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
1750 |
}else{
|
1751 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
1752 |
$this->remove_current_activity($session_id_encrypt);
|
1753 |
+
MO2f_Utility::mo2f_debug_file('Number of attempts exceeded'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1754 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1755 |
}
|
1756 |
} else {
|
1760 |
{
|
1761 |
update_option('mo2f_attempts_before_redirect', $attempts-1 );
|
1762 |
$mo2fa_login_message = 'Invalid OTP. Only digits within range 4-8 are allowed. Please try again.';
|
1763 |
+
MO2f_Utility::mo2f_debug_file('Invalid OTP. Only digits within range 4-8 are allowed'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1764 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
1765 |
}else{
|
1766 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
1770 |
$data = array('reload' => "reload", );
|
1771 |
wp_send_json_success($data);
|
1772 |
}
|
1773 |
+
else{
|
1774 |
+
MO2f_Utility::mo2f_debug_file('Number of attempts exceeded'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id);
|
1775 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1776 |
+
}
|
1777 |
}
|
1778 |
}
|
1779 |
}
|
1786 |
$current_user = get_userdata($user_id);
|
1787 |
//if the php session folder has insufficient permissions, cookies to be used
|
1788 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
|
1789 |
+
$mo2f_login_transaction_id = isset($_POST['mo2fa_transaction_id'])?sanitize_text_field($_POST['mo2fa_transaction_id']):MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
|
1790 |
+
MO2f_Utility::mo2f_debug_file('Transaction_id-'.$mo2f_login_transaction_id.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1791 |
if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
|
1792 |
$content = json_decode( $customer->validate_otp_token( 'EMAIL', null, $mo2f_login_transaction_id, $softtoken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),$current_user ), true );
|
1793 |
}elseif (isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_WHATSAPP' ) {
|
1804 |
update_option('mo2f_attempts_before_redirect', 3);
|
1805 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1806 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1807 |
+
MO2f_Utility::mo2f_debug_file('Remeber device setup'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1808 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1809 |
}
|
1810 |
+
else{
|
1811 |
+
|
1812 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1813 |
+
}
|
1814 |
}
|
1815 |
else
|
1816 |
{
|
1817 |
$this->remove_current_activity($session_id_encrypt);
|
1818 |
+
|
1819 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: OTP has been Expired please reinitiate another transaction.' ) );
|
1820 |
|
1821 |
}
|
1822 |
}
|
1823 |
else
|
1824 |
+
{
|
1825 |
+
|
1826 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1827 |
$message = 'Invalid OTP please enter again.';
|
1828 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
1843 |
update_option('mo2f_attempts_before_redirect', 3);
|
1844 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1845 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1846 |
+
MO2f_Utility::mo2f_debug_file('Remember device flow'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1847 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1848 |
}
|
1849 |
+
else{
|
1850 |
+
MO2f_Utility::mo2f_debug_file('OTP over Telegram - Logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1851 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1852 |
+
}
|
1853 |
}
|
1854 |
else
|
1855 |
{
|
1856 |
$this->remove_current_activity($session_id_encrypt);
|
1857 |
+
MO2f_Utility::mo2f_debug_file('OTP has been Expired please reinitiate another transaction'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1858 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: OTP has been Expired please reinitiate another transaction.' ) );
|
1859 |
|
1860 |
}
|
1861 |
}
|
1862 |
else
|
1863 |
{
|
1864 |
+
MO2f_Utility::mo2f_debug_file('OTP over Telegram - Invalid OTP'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1865 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1866 |
$message = 'Invalid OTP please enter again.';
|
1867 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
1880 |
$this->remove_current_activity($session_id_encrypt);
|
1881 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
|
1882 |
}
|
|
|
1883 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
|
1884 |
update_option('mo2f_attempts_before_redirect', 3);
|
1885 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1886 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1887 |
+
MO2f_Utility::mo2f_debug_file('Remember device flow'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1888 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1889 |
} else {
|
1890 |
if($mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL')
|
1895 |
$enduser->mo2f_update_userinfo( $user_email, 'OTP Over Email', null, null, null );
|
1896 |
|
1897 |
}
|
1898 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' Logged in successfully'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1899 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1900 |
}
|
1901 |
} else {
|
1902 |
if($attempts>1 || $attempts=='disabled')
|
1903 |
{
|
1904 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' Enter wrong OTP'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1905 |
update_option('mo2f_attempts_before_redirect', $attempts-1);
|
1906 |
$message = $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN' ? 'You have entered an invalid OTP.<br>Please click on <b>Sync Time</b> in the miniOrange Authenticator app to sync your phone time with the miniOrange servers and try again.' : 'Invalid OTP. Please try again.';
|
1907 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $message, $redirect_to,null,$session_id_encrypt );
|
1913 |
$data = array('reload' => "reload", );
|
1914 |
wp_send_json_success($data);
|
1915 |
}
|
1916 |
+
else{
|
1917 |
+
MO2f_Utility::mo2f_debug_file('Number of attempts exceeded'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1918 |
+
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1919 |
+
}
|
1920 |
+
|
1921 |
}
|
1922 |
}
|
1923 |
} else {
|
1924 |
$this->remove_current_activity($session_id_encrypt);
|
1925 |
+
MO2f_Utility::mo2f_debug_file('User id not found'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
|
1926 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Please try again..' ) );
|
1927 |
}
|
1928 |
}
|
1970 |
$this->miniorange_pass2login_start_session();
|
1971 |
$mobile_login = new Miniorange_Mobile_Login();
|
1972 |
//validation and sanitization
|
1973 |
+
$username = isset( $_POST['mo2fa_username'] ) ? sanitize_text_field($_POST['mo2fa_username']) : '';
|
1974 |
+
if ( MO2f_Utility::mo2f_check_empty_or_null( $username ) ) {
|
1975 |
MO2f_Utility::set_user_values($session_id, 'mo2f_login_message', 'Please enter username to proceed' );
|
1976 |
$mobile_login->mo_auth_show_error_message();
|
1977 |
return;
|
2047 |
else if($mo2f_second_factor == 'Email Verification'){
|
2048 |
$this->mo2f_pass2login_push_oobemail_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
|
2049 |
}
|
2050 |
+
else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == 'EMAIL' || $mo2f_second_factor == "OTP Over Email") {
|
2051 |
$this->mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to, $session_id );
|
2052 |
} else if ( $mo2f_second_factor == 'KBA' ) {
|
2053 |
$this->mo2f_pass2login_kba_verification( $user->ID, $redirect_to, $session_id );
|
2078 |
}
|
2079 |
|
2080 |
}
|
2081 |
+
if(isset($_GET['reconfigureMethod']) && is_user_logged_in()){
|
2082 |
+
$userIDGet = get_current_user_id();
|
2083 |
+
$txidGet = isset($_GET['transactionId'])?sanitize_text_field($_GET['transactionId']):'';
|
2084 |
+
$methodGet = isset($_GET['reconfigureMethod'])?sanitize_text_field($_GET['reconfigureMethod']):'';
|
2085 |
+
if(get_site_option($txidGet) === $userIDGet && ctype_xdigit($txidGet) && ctype_xdigit($methodGet)){
|
2086 |
+
$method = get_site_option($methodGet);
|
2087 |
+
$Mo2fdbQueries->update_user_details( $userIDGet, array(
|
2088 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS',
|
2089 |
+
'mo2f_configured_2FA_method' => $method
|
2090 |
+
) );
|
2091 |
+
$is_Authy_configured = $Mo2fdbQueries->get_user_detail('mo2f_AuthyAuthenticator_config_status',$userIDGet);
|
2092 |
+
if($method == 'Google Authenticator' || $is_Authy_configured){
|
2093 |
+
update_user_meta($userIDGet,'mo2fa_set_Authy_inline',true);
|
2094 |
+
}
|
2095 |
+
delete_site_option($txidGet);
|
2096 |
+
}else{
|
2097 |
+
$head = "You are not authorized to perform this action";
|
2098 |
+
$body = "Please contact to your admin";
|
2099 |
+
$this->display_email_verification($head,$body,'red');
|
2100 |
+
exit();
|
2101 |
+
}
|
2102 |
+
}
|
2103 |
if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
|
2104 |
{
|
2105 |
$userIDGet = sanitize_text_field($_GET['userID']);
|
2187 |
case 'miniorange_rba_validate':
|
2188 |
$this->check_rba_validation($_POST);
|
2189 |
break;
|
2190 |
+
case 'miniorange_mfactor_method':
|
2191 |
+
$current_userID= MO2f_Utility::mo2f_get_transient($_POST['session_id'], 'mo2f_current_user_id');
|
2192 |
+
$currentuser = get_user_by('id',$current_userID);
|
2193 |
+
$this->mo2fa_select_method($currentuser, sanitize_text_field($_POST['mo2f_selected_mfactor_method']), null,sanitize_text_field($_POST['session_id']), esc_url_raw($_POST['redirect_to']),null);
|
2194 |
+
break;
|
2195 |
|
2196 |
case 'miniorange_rba_cancle':
|
2197 |
|
2413 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
2414 |
$session_path = ini_get('session.save_path');
|
2415 |
if( is_writable($session_path) && is_readable($session_path) ) {
|
2416 |
+
if(session_status() != PHP_SESSION_DISABLED )
|
2417 |
+
session_start();
|
2418 |
}
|
2419 |
}
|
2420 |
}
|
2475 |
}
|
2476 |
}
|
2477 |
|
2478 |
+
function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt=null,$show_back_button =null ,$mo2fa_transaction_id =false ) {
|
2479 |
|
2480 |
$login_status = $mo2fa_login_status;
|
2481 |
$login_message = $mo2fa_login_message;
|
2495 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
|
2496 |
$user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
2497 |
|
2498 |
+
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id,$show_back_button ,$mo2fa_transaction_id );
|
2499 |
exit;
|
2500 |
break;
|
2501 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM':
|
2709 |
wp_localize_script( 'tmlajax_script', 'my_ajax_object',
|
2710 |
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
2711 |
}
|
2712 |
+
if(class_exists('LoginWithAjax')){
|
2713 |
+
wp_enqueue_script( 'login_with_ajax_script', plugins_url( 'includes/js/login_with_ajax.js', dirname(dirname(__FILE__))));
|
2714 |
+
wp_localize_script( 'login_with_ajax_script', 'my_ajax_object',
|
2715 |
+
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
2716 |
+
}
|
2717 |
?>
|
2718 |
<p><input type="hidden" name="miniorange_login_nonce"
|
2719 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-login-nonce' ); ?>"/>
|
2756 |
}
|
2757 |
|
2758 |
function mo2f_pass2login_mobile_verification( $user, $redirect_to, $session_id_encrypt=null ) {
|
2759 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
2760 |
if (is_null($session_id_encrypt)){
|
2761 |
$session_id_encrypt=$this->create_session();
|
2762 |
}
|
2763 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2764 |
$useragent = $_SERVER['HTTP_USER_AGENT'];
|
2765 |
+
MO2f_Utility::mo2f_debug_file('Check user agent to check request from mobile device '.$useragent);
|
2766 |
if ( MO2f_Utility::check_if_request_is_from_mobile_device( $useragent ) ) {
|
2767 |
$session_cookie_variables = array( 'mo2f-login-qrCode', 'mo2f_transactionId' );
|
2768 |
|
2772 |
|
2773 |
$mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
|
2774 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
|
2775 |
+
MO2f_Utility::mo2f_debug_file('Request from mobile device so promting soft token'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2776 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt );
|
2777 |
} else {
|
2778 |
$challengeMobile = new Customer_Setup();
|
2787 |
$this->mo2f_transactionid=$response['txId'];
|
2788 |
$mo2fa_login_message = '';
|
2789 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_MOBILE_AUTHENTICATION';
|
2790 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' Sent miniOrange QR code Authentication successfully'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2791 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, $qrCode,$session_id_encrypt );
|
2792 |
} else if ( $response['status'] == 'ERROR' ) {
|
2793 |
$this->remove_current_activity($session_id_encrypt);
|
2794 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' An error occured while processing your request'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2795 |
$error = new WP_Error();
|
2796 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
2797 |
|
2798 |
return $error;
|
2799 |
}
|
2800 |
} else {
|
2801 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' An error occured while processing your request'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2802 |
$this->remove_current_activity($session_id_encrypt);
|
2803 |
$error = new WP_Error();
|
2804 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
2824 |
|
2825 |
function mo2f_pass2login_push_oobemail_verification( $current_user, $mo2f_second_factor, $redirect_to, $session_id=null ) {
|
2826 |
|
2827 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
2828 |
if(is_null($session_id)){
|
2829 |
$session_id=$this->create_session();
|
2830 |
}
|
2831 |
$challengeMobile = new Customer_Setup();
|
2832 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $current_user->ID );
|
2833 |
if(MO2F_IS_ONPREM && $mo2f_second_factor != "PUSH NOTIFICATIONS"){
|
2834 |
+
MO2f_Utility::mo2f_debug_file('Push notification has sent successfully for '.$mo2f_second_factor.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$current_user->ID.' Email-'.$current_user->user_email);
|
2835 |
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'api'.DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
2836 |
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
2837 |
$content = $mo2fOnPremRedirect->mo2f_pass2login_push_email_onpremise($current_user, $redirect_to, $session_id );
|
2845 |
MO2f_Utility::mo2f_set_transient($session_id, 'mo2f_transactionId', $response['txId']);
|
2846 |
update_user_meta($current_user->ID,'mo2f_EV_txid',$response['txId']);
|
2847 |
|
2848 |
+
MO2f_Utility::mo2f_debug_file('Push notification has sent successfully for '.$mo2f_second_factor.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$current_user->ID.' Email-'.$current_user->user_email);
|
2849 |
$this->mo2f_transactionid=$response['txId'];
|
2850 |
|
2851 |
$mo2fa_login_message = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'A Push Notification has been sent to your phone. We are waiting for your approval.' : 'An email has been sent to ' . MO2f_Utility::mo2f_get_hidden_email( $user_email ) . '. We are waiting for your approval.';
|
2855 |
MO2f_Utility::mo2f_set_transient($session_id, 'mo2f_transactionId', $response['txId']);
|
2856 |
update_user_meta($current_user->ID,'mo2f_EV_txid',$response['txId']);
|
2857 |
|
2858 |
+
MO2f_Utility::mo2f_debug_file('An error occured while sending push notification-'.$mo2f_second_factor.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$current_user->ID.' Email-'.$current_user->user_email);
|
2859 |
$this->mo2f_transactionid=$response['txId'];
|
2860 |
$mo2fa_login_message = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'An error occured while sending push notification to your app. You can click on <b>Phone is Offline</b> button to enter soft token from app or <b>Forgot your phone</b> button to receive OTP to your registered email.' : 'An error occured while sending email. Please try again.';
|
2861 |
$mo2fa_login_status = $mo2f_second_factor == 'PUSH NOTIFICATIONS' ? 'MO_2_FACTOR_CHALLENGE_PUSH_NOTIFICATIONS' : 'MO_2_FACTOR_CHALLENGE_OOB_EMAIL';
|
2862 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2863 |
}
|
2864 |
} else {
|
2865 |
+
MO2f_Utility::mo2f_debug_file('An error occured while processing your request.'. 'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$current_user->ID.' Email-'.$current_user->user_email);
|
2866 |
$this->remove_current_activity($session_id);
|
2867 |
$error = new WP_Error();
|
2868 |
$error->add( 'empty_username', __( '<strong>ERROR</strong>: An error occured while processing your request. Please Try again.' ) );
|
2872 |
}
|
2873 |
|
2874 |
function mo2f_pass2login_otp_verification( $user, $mo2f_second_factor, $redirect_to,$session_id=null ) {
|
2875 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
2876 |
+
|
2877 |
if(is_null($session_id)){
|
2878 |
$session_id=$this->create_session();
|
2879 |
}
|
2892 |
if ( $mo2f_second_factor == 'SOFT TOKEN' ) {
|
2893 |
$mo2fa_login_message = 'Please enter the one time passcode shown in the miniOrange<b> Authenticator</b> app.';
|
2894 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_SOFT_TOKEN';
|
2895 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2896 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2897 |
} else if ( $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' ) {
|
2898 |
$mo2fa_login_message ='Please enter the one time passcode shown in the <b> Authenticator</b> app.';
|
2899 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_GOOGLE_AUTHENTICATION';
|
2900 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2901 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to, null,$session_id );
|
2902 |
+
} elseif ($mo2f_second_factor == 'OTP Over Telegram') {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2903 |
$chatID = get_user_meta($user->ID,'mo2f_chat_id',true);
|
2904 |
$otpToken = '';
|
2905 |
for($i=1;$i<7;$i++)
|
2935 |
{
|
2936 |
$mo2fa_login_message ='Please enter the one time passcode sent on your<b> Telegram</b> app.';
|
2937 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM';
|
2938 |
+
MO2f_Utility::mo2f_debug_file($mo2fa_login_status.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2939 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id );
|
2940 |
}
|
2941 |
|
2955 |
}
|
2956 |
else
|
2957 |
{
|
2958 |
+
MO2f_Utility::mo2f_debug_file('Error in sending OTP over Email or SMS.'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2959 |
$response['status'] = 'FAILED';
|
2960 |
$response['message'] = '<p style = "color:red;">OTP limit has been exceeded</p>';
|
2961 |
$otpLIMiTE = 1;
|
2964 |
if ( $response['status'] == 'SUCCESS' ) {
|
2965 |
if($mo2f_second_factor == 'EMAIL')
|
2966 |
{
|
2967 |
+
MO2f_Utility::mo2f_debug_file(' OTP has been sent successfully over email.'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2968 |
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
2969 |
if($cmVtYWluaW5nT1RQ>0)
|
2970 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2971 |
}
|
2972 |
elseif($mo2f_second_factor == 'SMS')
|
2973 |
{
|
2974 |
+
MO2f_Utility::mo2f_debug_file(' OTP has been sent successfully over phone.'.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user->ID.' Email-'.$user->user_email);
|
2975 |
$mo2f_sms = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z');
|
2976 |
if($mo2f_sms>0)
|
2977 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',$mo2f_sms-1);
|
2986 |
$this->mo2f_transactionid=$response['txId'];
|
2987 |
$mo2fa_login_message = $message;
|
2988 |
$currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
2989 |
+
if($mo2f_second_factor == 'EMAIL')
|
|
|
2990 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
|
2991 |
else
|
2992 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS';
|
3046 |
$mobile_login->remove_current_activity($session_id_encrypted);
|
3047 |
|
3048 |
delete_expired_transients( true );
|
3049 |
+
delete_site_option($session_id_encrypted);
|
3050 |
|
3051 |
wp_set_auth_cookie( $user_id, true );
|
3052 |
do_action( 'wp_login', $currentuser->user_login, $currentuser );
|
3067 |
}
|
3068 |
|
3069 |
function miniorange_initiate_2nd_factor( $currentuser, $attributes = null, $redirect_to = null, $otp_token = "",$session_id_encrypt=null ) {
|
3070 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
3071 |
+
MO2f_Utility::mo2f_debug_file('MO initiate 2nd factor'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3072 |
$this->miniorange_pass2login_start_session();
|
3073 |
if(is_null($session_id_encrypt)) {
|
3074 |
$session_id_encrypt=$this->create_session();
|
3076 |
|
3077 |
if(class_exists('UM_Functions'))
|
3078 |
{
|
3079 |
+
MO2f_Utility::mo2f_debug_file('Using UM login form.');
|
3080 |
if(!isset($_POST['wp-submit']) and isset($_POST['um_request']))
|
3081 |
{
|
3082 |
$meta = get_option('um_role_'.$currentuser->roles[0].'_meta');
|
3168 |
|
3169 |
$mo2f_second_factor = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $currentuser->ID );
|
3170 |
|
3171 |
+
if(!MO2F_IS_ONPREM and $mo2f_second_factor!= 'OTP Over Telegram')
|
3172 |
$mo2f_second_factor = mo2f_get_user_2ndfactor( $currentuser );
|
3173 |
|
3174 |
+
// adding function for the mfa call
|
3175 |
+
|
3176 |
+
$configure_array_method = $this->mo2fa_return_methods_value($currentuser->ID);
|
3177 |
+
|
3178 |
+
if (sizeof( $configure_array_method) >1 && get_site_option('mo2f_nonce_enable_configured_methods') == true) {
|
3179 |
+
update_site_option('mo2f_login_with_mfa_use','1');
|
3180 |
+
mo2fa_prompt_mfa_form_for_user($configure_array_method,$session_id_encrypt,$redirect_to);
|
3181 |
+
exit;
|
3182 |
+
}
|
3183 |
+
else
|
3184 |
+
$this->mo2fa_select_method($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to,$kba_configuration_status);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3185 |
}
|
3186 |
}else if(!$exceeded && MoWpnsUtility::get_mo2f_db_option('mo2f_inline_registration', 'site_option')){
|
3187 |
$this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
|
3198 |
}
|
3199 |
|
3200 |
}
|
3201 |
+
function mo2fa_return_methods_value($currentuserid)
|
3202 |
+
{
|
3203 |
+
global $Mo2fdbQueries;
|
3204 |
+
$count_methods = $Mo2fdbQueries->get_user_configured_methods($currentuserid );
|
3205 |
+
$value = empty( $count_methods ) ? '' : get_object_vars( $count_methods[0] );
|
3206 |
+
$configured_methods_arr=array();
|
3207 |
+
foreach ($value as $config_status_option => $config_status) {
|
3208 |
+
if(strpos($config_status_option, 'config_status')){
|
3209 |
+
$config_status_string_array =explode('_',$config_status_option);
|
3210 |
+
$config_method = MO2f_Utility::mo2f_decode_2_factor($config_status_string_array[1],'wpdb');
|
3211 |
+
if(1 == $value[$config_status_option])
|
3212 |
+
array_push($configured_methods_arr,$config_method);
|
3213 |
+
|
3214 |
+
}
|
3215 |
+
}
|
3216 |
|
3217 |
+
return $configured_methods_arr;
|
3218 |
+
}
|
3219 |
+
function mo2fa_select_method($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to,$kba_configuration_status)
|
3220 |
+
{
|
3221 |
+
global $moWpnsUtility;
|
3222 |
+
|
3223 |
+
if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
|
3224 |
+
$mo2f_second_factor = "EMAIL";
|
3225 |
+
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
|
3226 |
+
{
|
3227 |
+
update_site_option("bGltaXRSZWFjaGVk",1);
|
3228 |
+
}
|
3229 |
+
}
|
3230 |
+
else
|
3231 |
+
$mo2f_second_factor = MO2f_Utility::mo2f_decode_2_factor($mo2f_second_factor, "server" );
|
3232 |
+
|
3233 |
+
if($mo2f_second_factor == 'OTPOverTelegram')
|
3234 |
+
$mo2f_second_factor = "OTP Over Telegram";
|
3235 |
+
|
3236 |
+
if((($mo2f_second_factor == 'GOOGLE AUTHENTICATOR') || ($mo2f_second_factor =='SOFT TOKEN') || ($mo2f_second_factor =='AUTHY AUTHENTICATOR')) && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
|
3237 |
+
{
|
3238 |
+
$error=$this->mo2f_validate_soft_token($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to);
|
3239 |
+
if(is_wp_error( $error))
|
3240 |
+
{
|
3241 |
+
return $error;
|
3242 |
+
}
|
3243 |
+
}
|
3244 |
+
else
|
3245 |
+
{
|
3246 |
+
if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status )
|
3247 |
+
{
|
3248 |
+
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to, $session_id_encrypt );
|
3249 |
+
}
|
3250 |
+
else
|
3251 |
+
{
|
3252 |
+
if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' )
|
3253 |
+
{
|
3254 |
+
$this->mo2f_pass2login_mobile_verification( $currentuser, $redirect_to, $session_id_encrypt );
|
3255 |
+
}
|
3256 |
+
else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' || $mo2f_second_factor == 'Email Verification')
|
3257 |
+
{
|
3258 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3259 |
+
$this->mo2f_pass2login_push_oobemail_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3260 |
+
}
|
3261 |
+
else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'EMAIL' ||$mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == 'OTP Over Whatsapp') {
|
3262 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3263 |
+
$this->mo2f_pass2login_otp_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3264 |
+
}
|
3265 |
+
else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
|
3266 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3267 |
+
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
|
3268 |
+
}
|
3269 |
+
else if ( $mo2f_second_factor == 'Duo Authenticator') {
|
3270 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3271 |
+
$this->mo2f_pass2login_duo_push_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
3272 |
+
|
3273 |
+
}
|
3274 |
+
else if ( $mo2f_second_factor == 'NONE' ) {
|
3275 |
+
MO2f_Utility::mo2f_debug_file('mo2f_second_factor is NONE'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3276 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
3277 |
+
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
3278 |
+
else
|
3279 |
+
return $currentuser;
|
3280 |
+
}
|
3281 |
+
else
|
3282 |
+
{
|
3283 |
+
$this->remove_current_activity($session_id_encrypt);
|
3284 |
+
$error = new WP_Error();
|
3285 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3286 |
+
MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3287 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Two Factor method has not been configured.', );
|
3288 |
+
wp_send_json_success($data);
|
3289 |
+
}
|
3290 |
+
else
|
3291 |
+
{
|
3292 |
+
MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3293 |
+
$error->add( 'empty_username', __( '<strong>ERROR</strong>: Two Factor method has not been configured.' ) );
|
3294 |
+
return $error;
|
3295 |
+
}
|
3296 |
+
}
|
3297 |
+
}
|
3298 |
+
}
|
3299 |
+
}
|
3300 |
function mo2fa_inline($currentuser,$redirect_to,$session_id){
|
3301 |
|
3302 |
global $Mo2fdbQueries;
|
3315 |
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message,$redirect_to,null,$session_id);
|
3316 |
}
|
3317 |
|
3318 |
+
function mo2f_validate_soft_token($currentuser, $mo2f_second_factor, $softtoken,$session_id_encrypt,$redirect_to = null){
|
3319 |
global $Mo2fdbQueries;
|
3320 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser->ID );
|
3321 |
$customer = new Customer_Setup();
|
3369 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
3370 |
$mo2fa_login_message = 'An OTP has been sent to '.$email.' please verify to set the two-factor';
|
3371 |
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
|
3372 |
+
$mo2fa_transaction_id = isset($response['txId'])?$response['txId']:null;
|
3373 |
+
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt, 1 ,$mo2fa_transaction_id);
|
3374 |
}
|
3375 |
else
|
3376 |
{
|
3397 |
$this->miniorange_pass2login_start_session();
|
3398 |
MO2f_Utility::set_user_values( $session_id, "mo2f_current_user_id", $currentuser->ID );
|
3399 |
$this->mo2f_userID=$currentuser->ID;
|
3400 |
+
mo2f_collect_device_attributes_handler($session_id,$redirect_to );
|
3401 |
exit;
|
3402 |
} else {
|
3403 |
$this->miniorange_initiate_2nd_factor( $currentuser, null, $redirect_to ,null ,$session_id );
|
3405 |
}
|
3406 |
|
3407 |
function mo2f_check_username_password( $user, $username, $password, $redirect_to = null ) {
|
3408 |
+
global $Mo2fdbQueries,$moWpnsUtility;
|
3409 |
if ( is_a( $user, 'WP_Error' ) && ! empty( $user ) ) {
|
3410 |
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3411 |
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid User Credentials', );
|
3438 |
}
|
3439 |
else{
|
3440 |
$currentuser->add( 'invalid_username_password', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Username or password.' ) );
|
3441 |
+
MO2f_Utility::mo2f_debug_file('Invalid username and password.'.'User_IP-'.$moWpnsUtility->get_client_ip());
|
3442 |
return $currentuser;
|
3443 |
}
|
3444 |
} else {
|
3445 |
+
|
|
|
3446 |
$session_id = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
3447 |
+
MO2f_Utility::mo2f_debug_file('Username and password validate successfully'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3448 |
if(isset($_REQUEST['woocommerce-login-nonce'])){
|
3449 |
+
MO2f_Utility::mo2f_debug_file('It is a woocommerce login form. Get woocommerce redirectUrl');
|
3450 |
if ( ! empty( $_REQUEST[ 'redirect_to' ] ) ) {
|
3451 |
$redirect_to = wp_unslash( $_REQUEST[ 'redirect_to' ] );
|
3452 |
} elseif ( isset($_REQUEST[ '_wp_http_referer' ]) ) {
|
3462 |
$cloud_methods = array("MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","SOFT TOKEN");
|
3463 |
if (MO2F_IS_ONPREM && $mo2f_configured_2FA_method=='Security Questions')
|
3464 |
{
|
3465 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2nd factor for KBA'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3466 |
$this->miniorange_initiate_2nd_factor($currentuser, null , $redirect_to , "" , $session_id );
|
3467 |
}
|
3468 |
else if(MO2F_IS_ONPREM && $mo2f_configured_2FA_method =='Email Verification')
|
3469 |
{
|
3470 |
+
MO2f_Utility::mo2f_debug_file('Initiating 2nd factor for email verification'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
|
3471 |
$this->miniorange_initiate_2nd_factor($currentuser, null , $redirect_to , null ,$session_id );
|
3472 |
}
|
3473 |
else
|
handler/twofa/two_fa_settings.php
CHANGED
@@ -25,6 +25,7 @@ class Miniorange_Authentication {
|
|
25 |
add_action( 'init', array( $pass2fa_login, 'miniorange_pass2login_redirect' ) );
|
26 |
//for shortcode addon
|
27 |
$mo2f_ns_config = new MoWpnsUtility();
|
|
|
28 |
|
29 |
//strong password file
|
30 |
$mo2f_strong_password = new class_miniorange_2fa_strong_password();
|
@@ -36,7 +37,8 @@ class Miniorange_Authentication {
|
|
36 |
}
|
37 |
add_filter( 'woocommerce_process_registration_errors', array($mo2f_strong_password,'woocommerce_password_protection'),1,4);
|
38 |
add_filter( 'woocommerce_registration_errors', array($mo2f_strong_password,'woocommerce_password_registration_protection'),1,3);
|
39 |
-
|
|
|
40 |
add_filter( 'mo2f_shortcode_rba_gauth', array( $mo2f_rba_attributes, 'mo2f_validate_google_auth' ), 10, 3 );
|
41 |
add_filter( 'mo2f_shortcode_kba', array( $mo2f_2factor_setup, 'register_kba_details' ), 10, 7 );
|
42 |
add_filter( 'mo2f_update_info', array( $mo2f_2factor_setup, 'mo2f_update_userinfo' ), 10, 5 );
|
@@ -44,6 +46,9 @@ class Miniorange_Authentication {
|
|
44 |
$pass2fa_login,
|
45 |
'miniorange_pass2login_form_fields'
|
46 |
), 10, 5 );
|
|
|
|
|
|
|
47 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
48 |
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') ) { //password + 2nd factor enabled
|
49 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' or MO2F_IS_ONPREM) {
|
@@ -123,6 +128,16 @@ class Miniorange_Authentication {
|
|
123 |
$Mo2fdbQueries = new Mo2fDB();
|
124 |
}
|
125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
function mo2f_update_db_check() {
|
127 |
|
128 |
$userid = wp_get_current_user()->ID;
|
@@ -276,7 +291,11 @@ class Miniorange_Authentication {
|
|
276 |
function feedback_request() {
|
277 |
display_feedback_form();
|
278 |
}
|
|
|
279 |
|
|
|
|
|
|
|
280 |
function get_customer_SMS_transactions() {
|
281 |
|
282 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' && MoWpnsUtility::get_mo2f_db_option('mo2f_show_sms_transaction_message', 'get_option') ) {
|
@@ -425,15 +444,1418 @@ class Miniorange_Authentication {
|
|
425 |
wp_enqueue_script( 'mo2f_ns_admin_datatable_script', plugins_url('includes/js/jquery.dataTables.min.js', __FILE__ ), array('jquery'));
|
426 |
|
427 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
|
429 |
function miniorange_auth_save_settings() {
|
430 |
if (get_site_option('mo2f_plugin_redirect')) {
|
431 |
delete_site_option('mo2f_plugin_redirect');
|
432 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
433 |
exit;
|
434 |
}
|
435 |
if ( array_key_exists( 'page', $_REQUEST ) && $_REQUEST['page'] == 'mo_2fa_two_fa' ) {
|
436 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
|
|
437 |
session_start();
|
438 |
}
|
439 |
}
|
@@ -628,48 +2050,6 @@ class Miniorange_Authentication {
|
|
628 |
}
|
629 |
}
|
630 |
}
|
631 |
-
}else if ( isset( $_POST['option'] ) and $_POST['option'] == "mo2f_goto_verifycustomer" ) {
|
632 |
-
$nonce = $_POST['mo2f_goto_verifycustomer_nonce'];
|
633 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-goto-verifycustomer-nonce' ) ) {
|
634 |
-
$error = new WP_Error();
|
635 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
636 |
-
return $error;
|
637 |
-
} else {
|
638 |
-
$Mo2fdbQueries->insert_user( $user_id, array( 'user_id' => $user_id ) );
|
639 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "ENTER_YOUR_EMAIL_PASSWORD" ) );
|
640 |
-
update_option('mo_2factor_user_registration_status','MO_2_FACTOR_VERIFY_CUSTOMER');
|
641 |
-
}
|
642 |
-
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo_2factor_gobackto_registration_page' ) { //back to registration page for admin
|
643 |
-
$nonce = $_POST['mo_2factor_gobackto_registration_page_nonce'];
|
644 |
-
if ( ! wp_verify_nonce( $nonce, 'mo-2factor-gobackto-registration-page-nonce' ) ) {
|
645 |
-
$error = new WP_Error();
|
646 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
647 |
-
return $error;
|
648 |
-
} else {
|
649 |
-
delete_option( 'mo2f_email' );
|
650 |
-
delete_option( 'mo2f_password' );
|
651 |
-
update_option( 'mo2f_message', "" );
|
652 |
-
|
653 |
-
MO2f_Utility::unset_session_variables( 'mo2f_transactionId' );
|
654 |
-
delete_option( 'mo2f_transactionId' );
|
655 |
-
delete_user_meta( $user->ID, 'mo2f_sms_otp_count' );
|
656 |
-
delete_user_meta( $user->ID, 'mo2f_email_otp_count' );
|
657 |
-
delete_user_meta( $user->ID, 'mo2f_email_otp_count' );
|
658 |
-
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo_2factor_user_registration_status' => 'REGISTRATION_STARTED' ) );
|
659 |
-
}
|
660 |
-
|
661 |
-
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_registration_closed' ) {
|
662 |
-
$nonce = $_POST['mo2f_registration_closed_nonce'];
|
663 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-registration-closed-nonce' ) ) {
|
664 |
-
$error = new WP_Error();
|
665 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
666 |
-
return $error;
|
667 |
-
} else {
|
668 |
-
delete_user_meta( $user->ID, 'register_account_popup' );
|
669 |
-
$mo2f_message = 'Please set up the second-factor by clicking on Configure button.';
|
670 |
-
update_option( 'mo2f_message', $mo2f_message );
|
671 |
-
$this->mo_auth_show_success_message();
|
672 |
-
}
|
673 |
}else if ( isset( $_POST['option'] ) and $_POST['option'] == "mo_auth_verify_customer" ) { //register the admin to miniOrange if already exist
|
674 |
|
675 |
$nonce = $_POST['miniorange_verify_customer_nonce'];
|
@@ -1090,6 +2470,48 @@ class Miniorange_Authentication {
|
|
1090 |
$Mo2fdbQueries->database_table_issue();
|
1091 |
|
1092 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1093 |
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_skip_feedback' ) {
|
1094 |
|
1095 |
$nonce = $_POST['mo2f_skip_feedback_nonce'];
|
@@ -1217,7 +2639,7 @@ class Miniorange_Authentication {
|
|
1217 |
MO2f_Utility::unset_session_variables( $session_variables );
|
1218 |
|
1219 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
1220 |
-
|
1221 |
$enduser = new Two_Factor_Setup();
|
1222 |
$current_method = MO2f_Utility::mo2f_decode_2_factor( $TwoFA_method_to_configure, "server" );
|
1223 |
|
@@ -1465,50 +2887,7 @@ class Miniorange_Authentication {
|
|
1465 |
}
|
1466 |
}
|
1467 |
}
|
1468 |
-
|
1469 |
-
|
1470 |
-
$nonce = $_POST['mo2f_validate_otp_over_Whatsapp_nonce'];
|
1471 |
-
|
1472 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-validate-otp-over-Whatsapp-nonce' ) ) {
|
1473 |
-
$error = new WP_Error();
|
1474 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1475 |
-
|
1476 |
-
return $error;
|
1477 |
-
} else {
|
1478 |
-
|
1479 |
-
$otp = sanitize_text_field($_POST['otp_token']);
|
1480 |
-
$otpToken = get_user_meta($user->ID,'mo2f_otp_token_wa',true);
|
1481 |
-
|
1482 |
-
$time = get_user_meta($user->ID,'mo2f_whatsapp_time',true);
|
1483 |
-
$accepted_time = time()-600;
|
1484 |
-
$time = (int)$time;
|
1485 |
-
global $Mo2fdbQueries;
|
1486 |
-
if($otp == $otpToken)
|
1487 |
-
{
|
1488 |
-
if($accepted_time<$time){
|
1489 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1490 |
-
delete_user_meta( $user->ID, 'test_2FA' );
|
1491 |
-
delete_user_meta($user->ID,'mo2f_whatsapp_time');
|
1492 |
-
|
1493 |
-
$this->mo_auth_show_success_message();
|
1494 |
-
|
1495 |
-
}
|
1496 |
-
else
|
1497 |
-
{
|
1498 |
-
update_option( 'mo2f_message', 'OTP has been expired please initiate another transaction for verification' );
|
1499 |
-
delete_user_meta( $user->ID, 'test_2FA' );
|
1500 |
-
$this->mo_auth_show_error_message();
|
1501 |
-
|
1502 |
-
}
|
1503 |
-
}
|
1504 |
-
else
|
1505 |
-
{
|
1506 |
-
update_option( 'mo2f_message', 'Wrong OTP Please try again.' );
|
1507 |
-
$this->mo_auth_show_error_message();
|
1508 |
-
|
1509 |
-
}
|
1510 |
-
}
|
1511 |
-
}
|
1512 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_validate_otp_over_Telegram' ) { //validate otp over Telegram
|
1513 |
|
1514 |
$nonce = $_POST['mo2f_validate_otp_over_Telegram_nonce'];
|
@@ -1786,14 +3165,9 @@ class Miniorange_Authentication {
|
|
1786 |
|
1787 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) { //Google OTP validated
|
1788 |
|
1789 |
-
|
1790 |
-
|
1791 |
-
|
1792 |
-
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => 'OTP Over Email','mo2f_OTPOverEmail_config_status'=>true ) );
|
1793 |
-
} else {
|
1794 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1795 |
-
}
|
1796 |
-
|
1797 |
delete_user_meta( $user->ID, 'test_2FA' );
|
1798 |
$this->mo_auth_show_success_message();
|
1799 |
|
@@ -2162,71 +3536,6 @@ class Miniorange_Authentication {
|
|
2162 |
}
|
2163 |
}
|
2164 |
}
|
2165 |
-
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Whatsapp_send_otp' ) { // sendin otp for configuring OTP over Whatsapp
|
2166 |
-
|
2167 |
-
$nonce = $_POST['mo2f_configure_otp_over_Whatsapp_send_otp_nonce'];
|
2168 |
-
|
2169 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-otp-over-Whatsapp-send-otp-nonce' ) ) {
|
2170 |
-
$error = new WP_Error();
|
2171 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2172 |
-
|
2173 |
-
return $error;
|
2174 |
-
} else {
|
2175 |
-
$verify_whatsappID = sanitize_text_field( $_POST['verify_whatsappID'] );
|
2176 |
-
$verify_whatsappNum = sanitize_text_field( $_POST['verify_whatsappNum'] );
|
2177 |
-
if ( MO2f_Utility::mo2f_check_empty_or_null( $verify_whatsappID ) or MO2f_Utility::mo2f_check_empty_or_null( $verify_whatsappNum ) ) {
|
2178 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "INVALID_ENTRY" ) );
|
2179 |
-
$this->mo_auth_show_error_message();
|
2180 |
-
|
2181 |
-
return;
|
2182 |
-
}
|
2183 |
-
|
2184 |
-
$verify_whatsappID = str_replace( ' ', '', $verify_whatsappID );
|
2185 |
-
$verify_whatsappNum = str_replace( ' ', '', $verify_whatsappNum );
|
2186 |
-
|
2187 |
-
$user = wp_get_current_user();
|
2188 |
-
|
2189 |
-
update_user_meta($user->ID, 'mo2f_temp_whatsappID', $verify_whatsappID );
|
2190 |
-
update_user_meta($user->ID, 'mo2f_temp_whatsapp_num', $verify_whatsappNum );
|
2191 |
-
|
2192 |
-
$dnvjn = get_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=');
|
2193 |
-
$dnvjn = (int)$dnvjn;
|
2194 |
-
if($dnvjn<=0)
|
2195 |
-
{
|
2196 |
-
update_option( 'mo2f_message','Your Free transacions limit has been exceeded. Please contact miniOrange for more transacions.');
|
2197 |
-
$this->mo_auth_show_error_message();
|
2198 |
-
}
|
2199 |
-
else
|
2200 |
-
{
|
2201 |
-
|
2202 |
-
$customer = new Customer_Setup();
|
2203 |
-
$currentMethod = "OTP Over Whatsapp";
|
2204 |
-
|
2205 |
-
$otpToken = '';
|
2206 |
-
for($i=1;$i<7;$i++)
|
2207 |
-
{
|
2208 |
-
$otpToken .= rand(0,9);
|
2209 |
-
}
|
2210 |
-
update_user_meta($user->ID,'mo2f_otp_token_wa',$otpToken);
|
2211 |
-
update_user_meta($user->ID,'mo2f_whatsapp_time',time());
|
2212 |
-
$url = 'https://api.callmebot.com/whatsapp.php?phone='.$verify_whatsappNum.'&text=Please+find+your+one+time+passcode:+'.$otpToken.'&apikey='.$verify_whatsappID;
|
2213 |
-
|
2214 |
-
$data = file_get_contents($url);
|
2215 |
-
if(strpos($data, 'Message queued') !== false)
|
2216 |
-
{
|
2217 |
-
update_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=',$dnvjn-1);
|
2218 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . 'your Whatsapp number. It can take a couple of minutes. ' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2219 |
-
$this->mo_auth_show_success_message();
|
2220 |
-
}
|
2221 |
-
else
|
2222 |
-
{
|
2223 |
-
update_option( 'mo2f_message', 'An Error has occured while sending the OTP. Please verify your phone number and API key.');
|
2224 |
-
$this->mo_auth_show_error_message();
|
2225 |
-
|
2226 |
-
}
|
2227 |
-
}
|
2228 |
-
}
|
2229 |
-
}
|
2230 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Telegram_send_otp' ) { // sendin otp for configuring OTP over Telegram
|
2231 |
|
2232 |
$nonce = $_POST['mo2f_configure_otp_over_Telegram_send_otp_nonce'];
|
@@ -2352,83 +3661,6 @@ class Miniorange_Authentication {
|
|
2352 |
}
|
2353 |
}
|
2354 |
}
|
2355 |
-
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Whatsapp_validate' ) {
|
2356 |
-
$nonce = $_POST['mo2f_configure_otp_over_Whatsapp_validate_nonce'];
|
2357 |
-
|
2358 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-otp-over-Whatsapp-validate-nonce' ) ) {
|
2359 |
-
$error = new WP_Error();
|
2360 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2361 |
-
|
2362 |
-
return $error;
|
2363 |
-
} else {
|
2364 |
-
|
2365 |
-
$twofactor_transactions = new Mo2fDB;
|
2366 |
-
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user_id);
|
2367 |
-
|
2368 |
-
if($exceeded){
|
2369 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "USER_LIMIT_EXCEEDED" ) );
|
2370 |
-
$this->mo_auth_show_error_message();
|
2371 |
-
return;
|
2372 |
-
}
|
2373 |
-
$otp_token = '';
|
2374 |
-
if ( MO2f_Utility::mo2f_check_empty_or_null( $_POST['otp_token'] ) ) {
|
2375 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "INVALID_ENTRY" ) );
|
2376 |
-
$this->mo_auth_show_error_message();
|
2377 |
-
|
2378 |
-
return;
|
2379 |
-
} else {
|
2380 |
-
$otp_token = sanitize_text_field( $_POST['otp_token'] );
|
2381 |
-
}
|
2382 |
-
|
2383 |
-
$otp = get_user_meta($user->ID,'mo2f_otp_token_wa',true);
|
2384 |
-
$time = get_user_meta($user->ID,'mo2f_whatsapp_time',true);
|
2385 |
-
$accepted_time = time()-600;
|
2386 |
-
$time = (int)$time;
|
2387 |
-
global $Mo2fdbQueries;
|
2388 |
-
if($otp == $otp_token)
|
2389 |
-
{
|
2390 |
-
if($accepted_time<$time){
|
2391 |
-
if(MO2F_IS_ONPREM)
|
2392 |
-
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => 'OTP Over Whatsapp',
|
2393 |
-
'mo2f_OTPOverWhatsapp_config_status' => true,
|
2394 |
-
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
2395 |
-
) );
|
2396 |
-
else
|
2397 |
-
{ $Mo2fdbQueries->update_user_details( $user->ID, array(
|
2398 |
-
'mo2f_configured_2FA_method' => 'OTP Over Whatsapp',
|
2399 |
-
'user_registration_with_miniorange' => 'SUCCESS',
|
2400 |
-
'mo2f_OTPOverWhatsapp_config_status' => true,
|
2401 |
-
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
2402 |
-
) );
|
2403 |
-
}
|
2404 |
-
delete_user_meta( $user->ID, 'configure_2FA' );
|
2405 |
-
update_user_meta( $user->ID, 'mo2f_whatsapp_id',get_user_meta($user->ID,'mo2f_temp_whatsappID',true));
|
2406 |
-
update_user_meta( $user->ID, 'mo2f_whatsapp_num',get_user_meta($user->ID,'mo2f_temp_whatsapp_num',true));
|
2407 |
-
|
2408 |
-
delete_user_meta( $user->ID, 'mo2f_temp_whatsappID' );
|
2409 |
-
delete_user_meta( $user->ID, 'mo2f_temp_whatsapp_num' );
|
2410 |
-
|
2411 |
-
delete_user_meta( $user->ID, 'mo2f_otp_token_wa');
|
2412 |
-
delete_user_meta( $user->ID, 'mo2f_2FA_method_to_configure' );
|
2413 |
-
mo2f_display_test_2fa_notification($user);
|
2414 |
-
update_option( 'mo2f_message','OTP Over Whatsapp is set as the second-factor. Enjoy the unlimited service.');
|
2415 |
-
$this->mo_auth_show_success_message();
|
2416 |
-
delete_user_meta($user->ID,'mo2f_whatsapp_time');
|
2417 |
-
}
|
2418 |
-
else
|
2419 |
-
{
|
2420 |
-
update_option( 'mo2f_message','OTP has been expired please reinitiate another transaction.');
|
2421 |
-
$this->mo_auth_show_error_message();
|
2422 |
-
delete_user_meta($user->ID,'mo2f_whatsapp_time');
|
2423 |
-
}
|
2424 |
-
}
|
2425 |
-
else
|
2426 |
-
{
|
2427 |
-
update_option( 'mo2f_message','Invalid OTP. Please try again.');
|
2428 |
-
$this->mo_auth_show_error_message();
|
2429 |
-
}
|
2430 |
-
|
2431 |
-
}}
|
2432 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Telegram_validate' ) {
|
2433 |
$nonce = $_POST['mo2f_configure_otp_over_Telegram_validate_nonce'];
|
2434 |
|
@@ -2732,6 +3964,7 @@ class Miniorange_Authentication {
|
|
2732 |
}
|
2733 |
|
2734 |
}else if ( ( isset( $_POST['option'] ) && sanitize_text_field($_POST['option']) == 'mo2f_save_free_plan_auth_methods' ) ) {// user clicks on Set 2-Factor method
|
|
|
2735 |
$nonce = sanitize_text_field($_POST['miniorange_save_form_auth_methods_nonce']);
|
2736 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-save-form-auth-methods-nonce' ) ) {
|
2737 |
$error = new WP_Error();
|
@@ -2756,7 +3989,7 @@ class Miniorange_Authentication {
|
|
2756 |
}
|
2757 |
$selected_2FA_method = MO2f_Utility::mo2f_decode_2_factor( isset( $_POST['mo2f_configured_2FA_method_free_plan'] ) ? $_POST['mo2f_configured_2FA_method_free_plan'] : $_POST['mo2f_selected_action_standard_plan'], "wpdb" );
|
2758 |
$selected_2FA_method = sanitize_text_field($selected_2FA_method);
|
2759 |
-
$onprem_methods = array('Google Authenticator','Security Questions','OTPOverTelegram','
|
2760 |
$Mo2fdbQueries->insert_user( $user->ID );
|
2761 |
if(MO2F_IS_ONPREM && ! in_array($selected_2FA_method, $onprem_methods) ){
|
2762 |
foreach ($cloud_methods as $cloud_method) {
|
@@ -2836,13 +4069,10 @@ class Miniorange_Authentication {
|
|
2836 |
$selected_2FA_method = 'OTP Over SMS';
|
2837 |
if($selected_2FA_method == 'OTPOverTelegram')
|
2838 |
$selected_2FA_method = 'OTP Over Telegram';
|
2839 |
-
if($selected_2FA_method == '
|
2840 |
-
|
2841 |
-
if($selected_2FA_method == 'DuoAuthenticator')
|
2842 |
-
$selected_2FA_method = 'Duo Authenticator';
|
2843 |
}
|
2844 |
-
|
2845 |
-
if(MO2F_IS_ONPREM and ($selected_2FA_method =='Google Authenticator' or $selected_2FA_method == 'Security Questions' or $selected_2FA_method =='OTP Over Email' or $selected_2FA_method == 'Email Verification' or $selected_2FA_method == 'OTP Over Whatsapp' or $selected_2FA_method == 'OTP Over Telegram' or $selected_2FA_method == 'Duo Authenticator' ))
|
2846 |
$is_customer_registered = 1;
|
2847 |
|
2848 |
if ( $is_customer_registered ) {
|
@@ -2859,10 +4089,8 @@ class Miniorange_Authentication {
|
|
2859 |
$enduser = new Customer_Setup();
|
2860 |
if($selected_2FA_method == 'OTPOverTelegram')
|
2861 |
$selected_2FA_method = 'OTP Over Telegram';
|
2862 |
-
if($selected_2FA_method == '
|
2863 |
-
$selected_2FA_method = '
|
2864 |
-
if($selected_2FA_method == 'DuoAuthenticator')
|
2865 |
-
$selected_2FA_method = 'Duo Authenticator';
|
2866 |
if ( $selected_action == "select2factor" ) {
|
2867 |
|
2868 |
if ( $selected_2FA_method == 'OTP Over SMS' && $user_phone == 'false' ) {
|
@@ -2952,18 +4180,6 @@ class Miniorange_Authentication {
|
|
2952 |
} else {
|
2953 |
update_option( 'mo2f_enable_2fa', isset( $_POST['mo2f_enable_2fa'] ) ? $_POST['mo2f_enable_2fa'] : 0 );
|
2954 |
}
|
2955 |
-
// }else if( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_enable_2FA_on_login_page_option' ) {
|
2956 |
-
// $nonce = $_POST['mo2f_enable_2FA_on_login_page_option_nonce'];
|
2957 |
-
|
2958 |
-
// if ( ! wp_verify_nonce( $nonce, 'mo2f-enable-2FA-on-login-page-option-nonce' ) ) {
|
2959 |
-
// $error = new WP_Error();
|
2960 |
-
// $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2961 |
-
|
2962 |
-
// return $error;
|
2963 |
-
// } else {
|
2964 |
-
// if(!class_exists("UM_functions"))
|
2965 |
-
// update_site_option('mo2f_enable_2fa_prompt_on_login_page', isset( $_POST['mo2f_enable_2fa_prompt_on_login_page'] ) ? $_POST['mo2f_enable_2fa_prompt_on_login_page'] : 0 );
|
2966 |
-
// }
|
2967 |
}else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo_2factor_test_authentication_method' ) {
|
2968 |
//network security feature
|
2969 |
$nonce = $_POST['mo_2factor_test_authentication_method_nonce'];
|
@@ -3044,47 +4260,6 @@ class Miniorange_Authentication {
|
|
3044 |
$this->mo_auth_show_error_message();
|
3045 |
|
3046 |
}
|
3047 |
-
}else if($selected_2FA_method =='OTP Over Whatsapp')
|
3048 |
-
{
|
3049 |
-
|
3050 |
-
$user = wp_get_current_user();
|
3051 |
-
$whatsappID = get_user_meta($user->ID,'mo2f_whatsapp_id',true);
|
3052 |
-
$whatsappNum = get_user_meta($user->ID,'mo2f_whatsapp_num',true);
|
3053 |
-
|
3054 |
-
$dnvjn = get_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=');
|
3055 |
-
$dnvjn = (int)$dnvjn;
|
3056 |
-
if($dnvjn<=0)
|
3057 |
-
{
|
3058 |
-
update_option( 'mo2f_message','Your Free transacions limit has been exceeded. Please contact miniOrange for more transacions.');
|
3059 |
-
$this->mo_auth_show_error_message();
|
3060 |
-
}
|
3061 |
-
else
|
3062 |
-
{
|
3063 |
-
$otpToken = '';
|
3064 |
-
for($i=1;$i<7;$i++)
|
3065 |
-
{
|
3066 |
-
$otpToken .= rand(0,9);
|
3067 |
-
}
|
3068 |
-
|
3069 |
-
update_user_meta($user->ID,'mo2f_otp_token_wa',$otpToken);
|
3070 |
-
update_user_meta($user->ID,'mo2f_whatsapp_time',time());
|
3071 |
-
|
3072 |
-
$url = 'https://api.callmebot.com/whatsapp.php?phone='.$whatsappNum.'&text=Please+find+your+one+time+passcode:+'.$otpToken.'&apikey='.$whatsappID;
|
3073 |
-
|
3074 |
-
$data = file_get_contents($url);
|
3075 |
-
if(strpos($data, 'Message queued') !== false)
|
3076 |
-
{
|
3077 |
-
update_site_option('cmVtYWluaW5nV2hhdHNhcHB0cmFuc2FjdGlvbnM=',$dnvjn-1);
|
3078 |
-
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . 'your Whatsapp number. This can take a couple of minutes. ' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
3079 |
-
$this->mo_auth_show_success_message();
|
3080 |
-
}
|
3081 |
-
else
|
3082 |
-
{
|
3083 |
-
update_option( 'mo2f_message', 'An Error has occured while sending the OTP. Please verify your configuration.');
|
3084 |
-
$this->mo_auth_show_error_message();
|
3085 |
-
|
3086 |
-
}
|
3087 |
-
}
|
3088 |
}
|
3089 |
else if($selected_2FA_method =='OTP Over Telegram')
|
3090 |
{
|
@@ -3249,6 +4424,22 @@ class Miniorange_Authentication {
|
|
3249 |
delete_user_meta( $user->ID, 'configure_2FA' );
|
3250 |
|
3251 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3252 |
}
|
3253 |
|
3254 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_2factor_generate_backup_codes' ) {
|
@@ -3258,7 +4449,25 @@ class Miniorange_Authentication {
|
|
3258 |
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
3259 |
return $error;
|
3260 |
}else {
|
3261 |
-
MO2f_Utility::mo2f_mail_and_download_codes();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3262 |
}
|
3263 |
}
|
3264 |
|
@@ -3300,13 +4509,13 @@ class Miniorange_Authentication {
|
|
3300 |
<!-- Modal content -->
|
3301 |
<div class="modal-content">
|
3302 |
<div class="modal-header">
|
3303 |
-
<h3 class="modal-title" style="text-align: center; font-size: 20px; color: #
|
3304 |
</div>
|
3305 |
<div class="modal-body" style="height: auto">
|
3306 |
<h2><i>Enter your Email: <input type ='email' id='emailEnteredCloud' name='emailEnteredCloud' size= '40' required value="<?php echo $email;?>"/></i></h2>
|
3307 |
</div>
|
3308 |
<div class="modal-footer">
|
3309 |
-
<button type="button" class="
|
3310 |
</div>
|
3311 |
</div>
|
3312 |
</div>
|
@@ -3692,18 +4901,18 @@ class Miniorange_Authentication {
|
|
3692 |
$url = get_site_option('siteurl').'/wp-login.php?'; //login page can change
|
3693 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
3694 |
<tbody>
|
3695 |
-
<
|
3696 |
<td>
|
3697 |
<table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
|
3698 |
<tbody>
|
3699 |
-
<
|
3700 |
<td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
|
3701 |
</tr>
|
3702 |
</tbody>
|
3703 |
</table>
|
3704 |
<table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
|
3705 |
<tbody>
|
3706 |
-
<
|
3707 |
<td>
|
3708 |
<p style="margin-top:0;margin-bottom:20px">Dear Customers,</p>
|
3709 |
<p style="margin-top:0;margin-bottom:10px">You initiated a transaction <b>WordPress 2 Factor Authentication Plugin</b>:</p>
|
@@ -3784,18 +4993,18 @@ class Miniorange_Authentication {
|
|
3784 |
$headers[] = 'Cc: 2fasupport <2fasupport@xecurify.com>';
|
3785 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
3786 |
<tbody>
|
3787 |
-
<
|
3788 |
<td>
|
3789 |
<table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
|
3790 |
<tbody>
|
3791 |
-
<
|
3792 |
<td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
|
3793 |
</tr>
|
3794 |
</tbody>
|
3795 |
</table>
|
3796 |
<table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
|
3797 |
<tbody>
|
3798 |
-
<
|
3799 |
<td>
|
3800 |
<p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
|
3801 |
<p style="margin-top:0;margin-bottom:20px"> You are going to exhaust all your '.$string.'. You have only <b>'.$count.'</b> '.$string.' remaining. You can recharge or add '.$string.' to your account: <a href='.MoWpnsConstants::rechargeLink.'>Recharge</a></p>
|
25 |
add_action( 'init', array( $pass2fa_login, 'miniorange_pass2login_redirect' ) );
|
26 |
//for shortcode addon
|
27 |
$mo2f_ns_config = new MoWpnsUtility();
|
28 |
+
add_action( 'login_form', array( $pass2fa_login, 'mo_2_factor_pass2login_show_wp_login_form' ),10 );
|
29 |
|
30 |
//strong password file
|
31 |
$mo2f_strong_password = new class_miniorange_2fa_strong_password();
|
37 |
}
|
38 |
add_filter( 'woocommerce_process_registration_errors', array($mo2f_strong_password,'woocommerce_password_protection'),1,4);
|
39 |
add_filter( 'woocommerce_registration_errors', array($mo2f_strong_password,'woocommerce_password_registration_protection'),1,3);
|
40 |
+
add_action( 'mo2f_admin_setup_wizard_load_setup_wizard_before', [ $this, 'disable_admin_bar' ] );
|
41 |
+
|
42 |
add_filter( 'mo2f_shortcode_rba_gauth', array( $mo2f_rba_attributes, 'mo2f_validate_google_auth' ), 10, 3 );
|
43 |
add_filter( 'mo2f_shortcode_kba', array( $mo2f_2factor_setup, 'register_kba_details' ), 10, 7 );
|
44 |
add_filter( 'mo2f_update_info', array( $mo2f_2factor_setup, 'mo2f_update_userinfo' ), 10, 5 );
|
46 |
$pass2fa_login,
|
47 |
'miniorange_pass2login_form_fields'
|
48 |
), 10, 5 );
|
49 |
+
|
50 |
+
add_action( 'delete_user', array( $this, 'mo2f_delete_user' ) );
|
51 |
+
|
52 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
53 |
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') ) { //password + 2nd factor enabled
|
54 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' or MO2F_IS_ONPREM) {
|
128 |
$Mo2fdbQueries = new Mo2fDB();
|
129 |
}
|
130 |
|
131 |
+
function mo2f_delete_user($user_id){
|
132 |
+
global $Mo2fdbQueries;
|
133 |
+
delete_user_meta($user_id,'mo2f_kba_challenge');
|
134 |
+
delete_user_meta($user_id,'mo2f_2FA_method_to_configure');
|
135 |
+
delete_user_meta($user_id,'Security Questions');
|
136 |
+
delete_user_meta($user_id,'mo2f_chat_id');
|
137 |
+
$Mo2fdbQueries->delete_user_details( $user_id);
|
138 |
+
delete_user_meta($user_id,'mo2f_2FA_method_to_test');
|
139 |
+
}
|
140 |
+
|
141 |
function mo2f_update_db_check() {
|
142 |
|
143 |
$userid = wp_get_current_user()->ID;
|
291 |
function feedback_request() {
|
292 |
display_feedback_form();
|
293 |
}
|
294 |
+
public function disable_admin_bar() {
|
295 |
|
296 |
+
global $wp_admin_bar;
|
297 |
+
$wp_admin_bar = ''; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
|
298 |
+
}
|
299 |
function get_customer_SMS_transactions() {
|
300 |
|
301 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' && MoWpnsUtility::get_mo2f_db_option('mo2f_show_sms_transaction_message', 'get_option') ) {
|
444 |
wp_enqueue_script( 'mo2f_ns_admin_datatable_script', plugins_url('includes/js/jquery.dataTables.min.js', __FILE__ ), array('jquery'));
|
445 |
|
446 |
}
|
447 |
+
public function setup_wizard_header() {
|
448 |
+
?>
|
449 |
+
<!DOCTYPE html>
|
450 |
+
<html <?php language_attributes(); ?>>
|
451 |
+
<head>
|
452 |
+
<meta name="viewport" content="width=device-width"/>
|
453 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
454 |
+
<title><?php esc_html_e( 'miniOrange 2-factor Setup Wizard', 'miniorange 2-factor-authentication' ); ?></title>
|
455 |
+
<?php do_action( 'admin_print_styles' ); ?>
|
456 |
+
<?php do_action( 'admin_print_scripts' ); ?>
|
457 |
+
<?php do_action( 'admin_head' ); ?>
|
458 |
+
</head>
|
459 |
+
<body class="mo2f-setup-setup-wizard">
|
460 |
+
<?php
|
461 |
+
}
|
462 |
+
|
463 |
+
/**
|
464 |
+
* Outputs the content of the current step.
|
465 |
+
*
|
466 |
+
* @since 2.6.0
|
467 |
+
*/
|
468 |
+
|
469 |
+
private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $footer = '' ) {
|
470 |
+
|
471 |
+
$contact_url = 'https://wordpress.org/plugins/miniorange-2-factor-authentication/';
|
472 |
+
echo '<head>';
|
473 |
+
echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", dirname(dirname(__FILE__ ))).'"></script>';
|
474 |
+
echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", dirname(dirname(__FILE__ ))).'"></script>';
|
475 |
+
echo '<script type="text/javascript" src="'.plugins_url( "/includes/js/phone.js", dirname(dirname(__FILE__ ))).'"></script>';
|
476 |
+
|
477 |
+
echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/phone.css', dirname(dirname(__FILE__))). '" />';
|
478 |
+
// echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/twofa_style_settings.css', dirname(dirname(__FILE__))). '" />';
|
479 |
+
// echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/style_settings.css', dirname(dirname(__FILE__))). '" />';
|
480 |
+
|
481 |
+
|
482 |
+
echo '</head>';
|
483 |
+
|
484 |
+
|
485 |
+
?>
|
486 |
+
<style type="text/css">
|
487 |
+
#mo2f-setup-wizard-settings-area {
|
488 |
+
visibility: hidden;
|
489 |
+
animation: loadWpMOTFASettingsNoJSView 0s 2s forwards;
|
490 |
+
}
|
491 |
+
|
492 |
+
@keyframes loadWpMOTFASettingsNoJSView{
|
493 |
+
to { visibility: visible; }
|
494 |
+
}
|
495 |
+
|
496 |
+
body {
|
497 |
+
background: #F1F1F1;
|
498 |
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
499 |
+
margin: 0;
|
500 |
+
}
|
501 |
+
|
502 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-wizard-header {
|
503 |
+
text-align: center;
|
504 |
+
border-top: 4px solid #E27730;
|
505 |
+
}
|
506 |
+
|
507 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-wizard-header h1 {
|
508 |
+
margin: 0;
|
509 |
+
}
|
510 |
+
|
511 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-logo {
|
512 |
+
display: inline-block;
|
513 |
+
width: 320px;
|
514 |
+
margin-top: 10px;
|
515 |
+
padding: 0 10px;
|
516 |
+
}
|
517 |
+
|
518 |
+
|
519 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-logo img {
|
520 |
+
width: 100%;
|
521 |
+
height: 100%;
|
522 |
+
}
|
523 |
+
|
524 |
+
#mo2f-setup-settings-error-loading-area {
|
525 |
+
box-sizing: border-box;
|
526 |
+
max-width: 90%;
|
527 |
+
width: auto;
|
528 |
+
margin: 0 auto;
|
529 |
+
background: #fff;
|
530 |
+
border: 1px solid #DDDDDD;
|
531 |
+
border-radius: 6px;
|
532 |
+
webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
533 |
+
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
534 |
+
padding: 20px 30px;
|
535 |
+
}
|
536 |
+
#mo2f-setup-settings-error-loading-area2 {
|
537 |
+
box-sizing: border-box;
|
538 |
+
max-width: 90%;
|
539 |
+
width: auto;
|
540 |
+
margin: 0 auto;
|
541 |
+
background: #fff;
|
542 |
+
border: 1px solid #DDDDDD;
|
543 |
+
border-radius: 6px;
|
544 |
+
webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
545 |
+
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
546 |
+
padding: 20px 30px;
|
547 |
+
}
|
548 |
+
#mo2f-setup-settings-error-loading-area3 {
|
549 |
+
box-sizing: border-box;
|
550 |
+
max-width: 90%;
|
551 |
+
width: auto;
|
552 |
+
margin: 0 auto;
|
553 |
+
background: #fff;
|
554 |
+
border: 1px solid #DDDDDD;
|
555 |
+
border-radius: 6px;
|
556 |
+
webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
557 |
+
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
558 |
+
padding: 20px 30px;
|
559 |
+
}
|
560 |
+
#mo2f-setup-settings-error-loading-area4 {
|
561 |
+
box-sizing: border-box;
|
562 |
+
max-width: 90%;
|
563 |
+
width: auto;
|
564 |
+
margin: 0 auto;
|
565 |
+
background: #fff;
|
566 |
+
border: 1px solid #DDDDDD;
|
567 |
+
border-radius: 6px;
|
568 |
+
webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
569 |
+
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
570 |
+
padding: 20px 30px;
|
571 |
+
}
|
572 |
+
#mo2f-setup-settings-error-loading-area1 {
|
573 |
+
box-sizing: border-box;
|
574 |
+
max-width: 90%;
|
575 |
+
width: auto;
|
576 |
+
margin: 0 auto;
|
577 |
+
background: #fff;
|
578 |
+
border: 1px solid #DDDDDD;
|
579 |
+
border-radius: 6px;
|
580 |
+
webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
581 |
+
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
|
582 |
+
padding: 20px 30px;
|
583 |
+
}
|
584 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
|
585 |
+
text-align: center;
|
586 |
+
margin-top: 20px;
|
587 |
+
font-size: 14px;
|
588 |
+
}
|
589 |
+
|
590 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-error-footer a {
|
591 |
+
color: #999999;
|
592 |
+
}
|
593 |
+
|
594 |
+
#mo2f-setup-error-js h3 {
|
595 |
+
font-size: 24px;
|
596 |
+
font-weight: 500;
|
597 |
+
line-height: 23px;
|
598 |
+
margin: 0 0 15px;
|
599 |
+
color: #444444;
|
600 |
+
}
|
601 |
+
|
602 |
+
#mo2f-setup-error-js p.info,
|
603 |
+
#mo2f-setup-error-js ul.info {
|
604 |
+
color: #777777;
|
605 |
+
font-size: 16px;
|
606 |
+
line-height: 23px;
|
607 |
+
margin: 0 0 10px;
|
608 |
+
}
|
609 |
+
|
610 |
+
#mo2f-setup-error-js ul.info {
|
611 |
+
margin: -10px 0 20px;
|
612 |
+
}
|
613 |
+
.mo2f-input-radios-with-icons label {
|
614 |
+
width: 90%;
|
615 |
+
height: 40px;
|
616 |
+
color: #444;
|
617 |
+
border: 1px solid #ddd;
|
618 |
+
background: #fff;
|
619 |
+
border-radius: 3px;
|
620 |
+
font-size: 16px;
|
621 |
+
display: block;
|
622 |
+
margin-bottom: 20px;
|
623 |
+
padding: 24px 9px 9px 9px;
|
624 |
+
cursor: pointer
|
625 |
+
}
|
626 |
+
|
627 |
+
.mo2f-input-radios-with-icons label:hover {
|
628 |
+
border: 1px solid #999;
|
629 |
+
-webkit-box-shadow: 0 0 0 1px #999;
|
630 |
+
box-shadow: 0 0 0 1px #999
|
631 |
+
}
|
632 |
+
|
633 |
+
.mo2f-styled-radio {
|
634 |
+
width: 32px;
|
635 |
+
height: 32px;
|
636 |
+
position: relative;
|
637 |
+
display: inline-block;
|
638 |
+
border-radius: 50%;
|
639 |
+
background-color: #e6e6e6
|
640 |
+
float: left;
|
641 |
+
margin-top: -4px;
|
642 |
+
}
|
643 |
+
.mo_wpns_table_textbox {
|
644 |
+
width:100%;
|
645 |
+
height:30px;
|
646 |
+
}
|
647 |
+
|
648 |
+
#mo2f-setup-error-js a.button {
|
649 |
+
display: inline-block;
|
650 |
+
background-color: #E27730;
|
651 |
+
color: #ffffff;
|
652 |
+
line-height: 22px;
|
653 |
+
font-size: 16px;
|
654 |
+
padding: 14px 30px;
|
655 |
+
font-weight: 500;
|
656 |
+
border-radius: 3px;
|
657 |
+
border: none;
|
658 |
+
cursor: pointer;
|
659 |
+
text-decoration: none;
|
660 |
+
margin-top: 7px;
|
661 |
+
}
|
662 |
+
|
663 |
+
#mo2f-setup-error-js a.button:hover {
|
664 |
+
background-color: #c45e1b;
|
665 |
+
}
|
666 |
+
|
667 |
+
#mo2f-setup-error-js .medium-bold {
|
668 |
+
font-weight: 500;
|
669 |
+
}
|
670 |
+
|
671 |
+
#mo2f-setup-nojs-error-message > div {
|
672 |
+
border: 1px solid #DDDDDD;
|
673 |
+
border-left: 4px solid #DC3232;
|
674 |
+
color: #777777;
|
675 |
+
font-size: 14px;
|
676 |
+
padding: 18px 18px 18px 21px;
|
677 |
+
font-weight: 300;
|
678 |
+
text-align: left;
|
679 |
+
}
|
680 |
+
table {
|
681 |
+
table-layout: fixed ;
|
682 |
+
width: 100% ;
|
683 |
+
}
|
684 |
+
td {
|
685 |
+
width: 48% ;
|
686 |
+
}
|
687 |
+
@media (min-width: 782px) {
|
688 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-logo {
|
689 |
+
margin-top: 50px;
|
690 |
+
padding: 0;
|
691 |
+
}
|
692 |
+
|
693 |
+
#mo2f-setup-settings-error-loading-area {
|
694 |
+
width: 650px;
|
695 |
+
margin-top: 40px;
|
696 |
+
padding: 52px 67px 49px;
|
697 |
+
}
|
698 |
+
#mo2f-setup-settings-error-loading-area1 {
|
699 |
+
width: 650px;
|
700 |
+
margin-top: 40px;
|
701 |
+
padding: 52px 67px 49px;
|
702 |
+
}
|
703 |
+
#mo2f-setup-settings-error-loading-area2 {
|
704 |
+
width: 650px;
|
705 |
+
margin-top: 40px;
|
706 |
+
padding: 52px 67px 49px;
|
707 |
+
}
|
708 |
+
#mo2f-setup-settings-error-loading-area3 {
|
709 |
+
width: 650px;
|
710 |
+
margin-top: 40px;
|
711 |
+
padding: 52px 67px 49px;
|
712 |
+
}
|
713 |
+
#mo2f-setup-settings-error-loading-area4 {
|
714 |
+
width: 650px;
|
715 |
+
margin-top: 40px;
|
716 |
+
padding: 52px 67px 49px;
|
717 |
+
}
|
718 |
+
.mo2f-styled-radio {
|
719 |
+
width: 32px;
|
720 |
+
height: 32px;
|
721 |
+
position: relative;
|
722 |
+
display: inline-block;
|
723 |
+
border-radius: 50%;
|
724 |
+
background-color: #e6e6e6;
|
725 |
+
float: left;
|
726 |
+
margin-top: -4px;
|
727 |
+
}
|
728 |
+
|
729 |
+
#mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
|
730 |
+
margin-top: 50px;
|
731 |
+
}
|
732 |
+
|
733 |
+
#mo2f-setup-error-js p.info {
|
734 |
+
margin: 0 0 20px;
|
735 |
+
}
|
736 |
+
.mo2f-setup-button.mo2f-setup-button-large {
|
737 |
+
line-height: 22px;
|
738 |
+
font-size: 18px;
|
739 |
+
padding: 19px 39px
|
740 |
+
}
|
741 |
+
.mo2f-setup-button.mo2f-setup-button-large {
|
742 |
+
line-height: 22px;
|
743 |
+
font-size: 18px;
|
744 |
+
padding: 19px 39px;
|
745 |
+
}
|
746 |
+
.mo2f-styled-radio-text {
|
747 |
+
margin-left: 10px
|
748 |
+
}
|
749 |
+
.mo2f-setup-button.mo2f-setup-button-main:hover {
|
750 |
+
background-color: #c45e1b;
|
751 |
+
}
|
752 |
+
.mo2f-setup-button.mo2f-setup-button-main {
|
753 |
+
background-color: #e27730;
|
754 |
+
color: #fff;
|
755 |
+
font-weight: 500;
|
756 |
+
}
|
757 |
+
.mo2f-setup-wizard-timeline {
|
758 |
+
-webkit-box-align: center;
|
759 |
+
-ms-flex-align: center;
|
760 |
+
align-items: center;
|
761 |
+
display: -webkit-box;
|
762 |
+
display: -ms-flexbox;
|
763 |
+
display: flex;
|
764 |
+
margin: 41px auto 0;
|
765 |
+
max-width: 650px;
|
766 |
+
padding: 0 20px
|
767 |
+
}
|
768 |
+
|
769 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step-line {
|
770 |
+
background: #ddd;
|
771 |
+
height: 2px;
|
772 |
+
margin: 0 6px;
|
773 |
+
width: 100%
|
774 |
+
}
|
775 |
+
|
776 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step-line.mo2f-setup-wizard-timeline-line-active {
|
777 |
+
background: #6aa08b
|
778 |
+
}
|
779 |
+
|
780 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step {
|
781 |
+
border: none;
|
782 |
+
background-color: #b6b6b6;
|
783 |
+
border-radius: 50%;
|
784 |
+
-ms-flex-negative: 0;
|
785 |
+
flex-shrink: 0;
|
786 |
+
height: 16px;
|
787 |
+
width: 16px
|
788 |
+
}
|
789 |
+
|
790 |
+
.mo2f-setup-wizard-step-footer {
|
791 |
+
display: block;
|
792 |
+
text-align: center;
|
793 |
+
min-height: 110px;
|
794 |
+
padding: 0 20px;
|
795 |
+
margin-top: 30px
|
796 |
+
}
|
797 |
+
.popup_text
|
798 |
+
{
|
799 |
+
color:black;
|
800 |
+
margin-top: 2%;
|
801 |
+
font-weight: 600;
|
802 |
+
font-size: 12px !important;
|
803 |
+
}
|
804 |
+
.overlay{
|
805 |
+
position: fixed;
|
806 |
+
top: 0;
|
807 |
+
left: 0;
|
808 |
+
right: 0;
|
809 |
+
bottom: 0;
|
810 |
+
width: 100%;
|
811 |
+
height: 100%;
|
812 |
+
background: #000;
|
813 |
+
opacity: .5;
|
814 |
+
z-index: 0;
|
815 |
+
}
|
816 |
+
.overlay_success {
|
817 |
+
width: min-content;
|
818 |
+
height: 40px;
|
819 |
+
float: left;
|
820 |
+
z-index: 1;
|
821 |
+
top: 0;
|
822 |
+
right: 0;
|
823 |
+
text-align: center;
|
824 |
+
margin-bottom: 4%
|
825 |
+
background-color:#bcffb4 !important ;
|
826 |
+
/* overflow-x: hidden; */
|
827 |
+
background: #b1ffb1;
|
828 |
+
border-left: 4px solid #46b450;
|
829 |
+
}
|
830 |
+
.overlay_error {
|
831 |
+
width: min-content;
|
832 |
+
height: min-content;
|
833 |
+
padding-bottom: 1%;
|
834 |
+
float: left;
|
835 |
+
z-index: 1;
|
836 |
+
top: 0;
|
837 |
+
right: 0;
|
838 |
+
margin-bottom: 4%;
|
839 |
+
text-align: center;
|
840 |
+
background-color:bisque !important ;
|
841 |
+
/* overflow-x: hidden; */
|
842 |
+
border-left: 4px solid red;
|
843 |
+
}
|
844 |
+
|
845 |
+
.mo2f-setup-wizard-step-footer a {
|
846 |
+
font-size: 14px;
|
847 |
+
display: block;
|
848 |
+
color: #999;
|
849 |
+
margin: 20px 0
|
850 |
+
}
|
851 |
+
|
852 |
+
.mo2f-setup-wizard-step-footer a:active,
|
853 |
+
.mo2f-setup-wizard-step-footer a:hover {
|
854 |
+
color: #777;
|
855 |
+
text-decoration: underline
|
856 |
+
}
|
857 |
+
|
858 |
+
|
859 |
+
.mo2f-button.mo2f-button-main {
|
860 |
+
background-color: #e27730;
|
861 |
+
color: #fff;
|
862 |
+
font-weight: 500;
|
863 |
+
-webkit-box-flex: 11;
|
864 |
+
-ms-flex: 11;
|
865 |
+
flex: 11;
|
866 |
+
padding: 12px 25px;
|
867 |
+
font-size: 16px;
|
868 |
+
}
|
869 |
+
|
870 |
+
.mo2f-button.mo2f-button-main:focus,
|
871 |
+
.mo2f-button.mo2f-button-main:hover {
|
872 |
+
background-color: #c45e1b
|
873 |
+
}
|
874 |
+
|
875 |
+
.mo2f-button.mo2f-button-main:disabled {
|
876 |
+
opacity: .65;
|
877 |
+
cursor: not-allowed;
|
878 |
+
background-color: #e27730;
|
879 |
+
-webkit-box-flex: 11;
|
880 |
+
-ms-flex: 11;
|
881 |
+
flex: 11;
|
882 |
+
margin-right: 30px
|
883 |
+
}
|
884 |
+
|
885 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step .icon {
|
886 |
+
display: none
|
887 |
+
}
|
888 |
+
|
889 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-active,
|
890 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-completed {
|
891 |
+
background-color: #6aa08b;
|
892 |
+
position: relative
|
893 |
+
}
|
894 |
+
|
895 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-failed {
|
896 |
+
background-color: #d83638;
|
897 |
+
position: relative
|
898 |
+
}
|
899 |
+
|
900 |
+
.mo2f-step-show{
|
901 |
+
margin: 0 0 16px;
|
902 |
+
font-size: 14px;
|
903 |
+
line-height: 18px;
|
904 |
+
color: #b6b6b6;
|
905 |
+
}
|
906 |
+
.mo2f_table_textbox {
|
907 |
+
width: 200px;
|
908 |
+
height: 20px !important;
|
909 |
+
font-size: 14px !important;
|
910 |
+
}
|
911 |
+
.mo2f_table_textbox_phone {
|
912 |
+
width: 200px;
|
913 |
+
height: 40px !important;
|
914 |
+
font-size: 14px !important;
|
915 |
+
}
|
916 |
+
.mo2f_kba_ques {
|
917 |
+
width: 394px !important;
|
918 |
+
border-radius: 4px !important;
|
919 |
+
height: 40px !important;
|
920 |
+
font-size: 14px !important;
|
921 |
+
}
|
922 |
+
|
923 |
+
.mo2f_kba_tb_data {
|
924 |
+
padding-left: 15px;
|
925 |
+
}
|
926 |
+
|
927 |
+
.mo2f_kba_table {
|
928 |
+
padding: 0 10px;
|
929 |
+
width: 100%;
|
930 |
+
}
|
931 |
+
.mo2f_kba_body {
|
932 |
+
border: hidden !important;
|
933 |
+
}
|
934 |
+
|
935 |
+
|
936 |
+
.mo2f_table_textbox_KBA {
|
937 |
+
width: 200px;
|
938 |
+
height: 40px !important;
|
939 |
+
font-size: 14px !important;
|
940 |
+
}
|
941 |
+
|
942 |
+
|
943 |
+
.mo2f_kba_header {
|
944 |
+
font-weight: bold;
|
945 |
+
}
|
946 |
+
|
947 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-completed .icon-success,
|
948 |
+
.mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-failed .icon-failed {
|
949 |
+
color: #fff;
|
950 |
+
display: block;
|
951 |
+
position: absolute;
|
952 |
+
left: 3px;
|
953 |
+
top: 3px
|
954 |
+
}
|
955 |
+
.mo2f-setup-wizard-step-footer {
|
956 |
+
display: -webkit-box;
|
957 |
+
display: -ms-flexbox;
|
958 |
+
display: flex;
|
959 |
+
-webkit-box-pack: justify;
|
960 |
+
-ms-flex-pack: justify;
|
961 |
+
justify-content: space-between;
|
962 |
+
-webkit-box-align: center;
|
963 |
+
-ms-flex-align: center;
|
964 |
+
align-items: center;
|
965 |
+
padding: 0;
|
966 |
+
margin-top: 0
|
967 |
+
}
|
968 |
+
.mo2f_blur {
|
969 |
+
filter: blur(5px);
|
970 |
+
-webkit-filter: blur(5px);
|
971 |
+
-moz-filter: blur(5px);
|
972 |
+
-o-filter: blur(5px);
|
973 |
+
-ms-filter: blur(5px);
|
974 |
+
}
|
975 |
+
.mo2f_loader {
|
976 |
+
border: 16px solid #b9acac;
|
977 |
+
border-radius: 50%;
|
978 |
+
border-top: 16px solid #fb540b;
|
979 |
+
width: 50px;
|
980 |
+
height: 50px;
|
981 |
+
-webkit-animation: spin 2s linear infinite; /* Safari */
|
982 |
+
animation: spin 2s linear infinite;
|
983 |
+
position: fixed;
|
984 |
+
left: 50%;
|
985 |
+
top: 50%;
|
986 |
+
z-index: 100;
|
987 |
+
}
|
988 |
+
|
989 |
+
/* Safari */
|
990 |
+
@-webkit-keyframes spin {
|
991 |
+
0% { -webkit-transform: rotate(0deg); }
|
992 |
+
100% { -webkit-transform: rotate(360deg); }
|
993 |
+
}
|
994 |
+
|
995 |
+
@keyframes spin {
|
996 |
+
0% { transform: rotate(0deg); }
|
997 |
+
100% { transform: rotate(360deg); }
|
998 |
+
}
|
999 |
+
.mo2f-setup-wizard-step-footer-buttons {
|
1000 |
+
margin-bottom: 0;
|
1001 |
+
}
|
1002 |
+
.mo2f-setup-wizard-step-footer-buttons button {
|
1003 |
+
margin-bottom: 0;
|
1004 |
+
margin-right: 15px;
|
1005 |
+
width: inherit
|
1006 |
+
}
|
1007 |
+
.miniorange_button
|
1008 |
+
{
|
1009 |
+
background:#00A0D2!important;
|
1010 |
+
border-color:#0073AA!important;
|
1011 |
+
box-shadow:0 1px 0 rgba(120,200,230,.5) inset,0 1px 0 rgba(0,0,0,.15)!important;
|
1012 |
+
color:#FFF!important;
|
1013 |
+
text-decoration:none!important;
|
1014 |
+
cursor:pointer!important;
|
1015 |
+
border-width:1px!important;
|
1016 |
+
border-style:solid!important;
|
1017 |
+
border-radius:3px!important;
|
1018 |
+
white-space:nowrap!important;
|
1019 |
+
box-sizing:border-box!important;
|
1020 |
+
line-height:28px!important;
|
1021 |
+
padding:0 12px!important;
|
1022 |
+
font-size:13px!important;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
|
1026 |
+
.mo2f_IR_phone_OTP{
|
1027 |
+
font-size:15px;
|
1028 |
+
width:150px !important;
|
1029 |
+
color:#212F3C;
|
1030 |
+
border:none;
|
1031 |
+
display:block;
|
1032 |
+
border-bottom-style: solid;
|
1033 |
+
border-width: 2px;
|
1034 |
+
border-color:#D0D3D4;
|
1035 |
+
border-radius:0px;
|
1036 |
+
outline:none;
|
1037 |
+
padding:5px;
|
1038 |
+
|
1039 |
+
}
|
1040 |
+
.mo2f-setup-wizard-step-footer-buttons button:last-child {
|
1041 |
+
margin-right: 0
|
1042 |
+
}
|
1043 |
+
a .text-with-arrow-left .icon {
|
1044 |
+
margin-right: 10px
|
1045 |
+
}
|
1046 |
+
|
1047 |
+
a .text-with-arrow {
|
1048 |
+
display: -webkit-box;
|
1049 |
+
display: -ms-flexbox;
|
1050 |
+
display: flex;
|
1051 |
+
-webkit-box-pack: center;
|
1052 |
+
-ms-flex-pack: center;
|
1053 |
+
justify-content: center
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
}
|
1057 |
+
</style>
|
1058 |
+
<!--[if IE]>
|
1059 |
+
<style>
|
1060 |
+
#mo2f-setup-wizard-settings-area{
|
1061 |
+
visibility: visible !important;
|
1062 |
+
}
|
1063 |
+
</style>
|
1064 |
+
|
1065 |
+
<![endif]-->
|
1066 |
+
<div class="mo2f_loader" id="mo2f_loader" style="display: none;"></div>
|
1067 |
+
|
1068 |
+
<div id="mo2f-setup-wizard-settings-area" class="mo2f-setup-wizard-settings-area wpms-container">
|
1069 |
+
<header class="mo2f-setup-wizard-header">
|
1070 |
+
<h1 >
|
1071 |
+
<div>
|
1072 |
+
<img width="70px" height="auto" src="<?php echo plugin_dir_url(dirname(dirname(__FILE__))) . 'includes/images/miniorange_logo.png'; ?>" alt="<?php esc_attr_e( 'miniOrange 2-factor Logo', 'miniorange-2-factor-authentication' ); ?>" >
|
1073 |
+
<p> miniOrange 2-factor authentication Setup</p>
|
1074 |
+
</div>
|
1075 |
+
</h1>
|
1076 |
+
</header>
|
1077 |
+
<div id="mo2f-setup-settings-error-loading-area-container">
|
1078 |
+
<div id="mo2f-setup-settings-error-loading-area">
|
1079 |
+
<div>
|
1080 |
+
<div id="mo2f-setup-error-js">
|
1081 |
+
<p class="subtitle" style="text-align:center;" > This setup guide will take you through all the steps you need to follow to enable the two-factor authentication for your website.</p>
|
1082 |
+
|
1083 |
+
<br><br>
|
1084 |
+
<button type="button" style="text-align:center;display: flex;margin: auto;" class="mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-large" id ='mo2f_get_started' target="_blank" class="button" rel="noopener noreferrer"> <?php esc_html_e("Let's Get Started", 'mo2f-setup'); ?></button>
|
1085 |
+
|
1086 |
+
<br><br>
|
1087 |
+
<div style="text-align:center;display: flex;margin: auto;flex-direction: column;">
|
1088 |
+
<a href="<?php echo esc_url( $contact_url ); ?>" target="_blank" rel="noopener noreferrer">
|
1089 |
+
<?php esc_html_e( 'Facing issues? Contact Us', 'mo2f-setup' ); ?>
|
1090 |
+
</a>
|
1091 |
+
</div>
|
1092 |
+
</div>
|
1093 |
+
</div>
|
1094 |
+
</div>
|
1095 |
+
<div class="mo2f-setup-error-footer">
|
1096 |
+
<?php echo wp_kses_post( $footer ); ?>
|
1097 |
+
</div>
|
1098 |
+
</div>
|
1099 |
+
<div id = "mo2f_methods_setup_wizard">
|
1100 |
+
<div class="mo2f-setup-wizard-timeline">
|
1101 |
+
|
1102 |
+
<div class="mo2f-setup-wizard-timeline-step mo2f-setup-wizard-timeline-step-active" id="mo2f-setup-wizard-step1"></div>
|
1103 |
+
<div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line1"></div>
|
1104 |
+
<div class="mo2f-setup-wizard-timeline-step" id="mo2f-setup-wizard-step2"> </div>
|
1105 |
+
<div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line2"></div>
|
1106 |
+
<div class="mo2f-setup-wizard-timeline-step"id="mo2f-setup-wizard-step3"> </div>
|
1107 |
+
<div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line3"></div>
|
1108 |
+
<div class="mo2f-setup-wizard-timeline-step" id="mo2f-setup-wizard-step4"> </div>
|
1109 |
+
|
1110 |
+
</div>
|
1111 |
+
<div id="mo2f-setup-settings-error-loading-area1" style="width: 900px">
|
1112 |
+
|
1113 |
+
<p class="mo2f-step-show"> Step 1 of 4</p>
|
1114 |
+
<h3 style="text-align:center;font-size:xx-large;"> Select the Authentication method you want to configure </h3>
|
1115 |
+
<br>
|
1116 |
+
<div class="mo2f-input-radios-with-icons">
|
1117 |
+
<table>
|
1118 |
+
<tr>
|
1119 |
+
<td>
|
1120 |
+
<label title="<?php echo __('You have to enter 6 digits code generated by google Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
|
1121 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
|
1122 |
+
<span class="mo2f-styled-radio-text"> Google Authenticator</span>
|
1123 |
+
</label>
|
1124 |
+
</td>
|
1125 |
+
<td>
|
1126 |
+
<label title="<?php echo __('You will receive a one time passcode via SMS on your phone. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>">
|
1127 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over SMS" />
|
1128 |
+
<span class="mo2f-styled-radio-text">
|
1129 |
+
<?php echo __('OTP Over SMS (Registration required)', 'miniorange-2-factor-authentication'); ?>
|
1130 |
+
</span>
|
1131 |
+
</label></td>
|
1132 |
+
</tr>
|
1133 |
+
<tr>
|
1134 |
+
<td>
|
1135 |
+
|
1136 |
+
<label title="<?php echo __('You will receive a one time passcode on your email. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>" >
|
1137 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over Email" />
|
1138 |
+
<span class="mo2f-styled-radio-text">
|
1139 |
+
<?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
|
1140 |
+
</span>
|
1141 |
+
</label>
|
1142 |
+
</td>
|
1143 |
+
|
1144 |
+
<td>
|
1145 |
+
<label title="<?php echo __('You have to answers some knowledge based security questions which are only known to you to authenticate yourself. Supported in Desktops,Laptops,Smartphones.', 'miniorange-2-factor-authentication'); ?>" >
|
1146 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Security Questions" />
|
1147 |
+
<span class="mo2f-styled-radio-text">
|
1148 |
+
<?php echo __('Security Questions ( KBA )', 'miniorange-2-factor-authentication'); ?>
|
1149 |
+
</span>
|
1150 |
+
</label>
|
1151 |
+
</td>
|
1152 |
+
</tr>
|
1153 |
+
<tr>
|
1154 |
+
<td>
|
1155 |
+
|
1156 |
+
<label title="<?php echo __('You have to enter 6 digits code generated by Microsoft Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
|
1157 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
|
1158 |
+
<span class="mo2f-styled-radio-text">
|
1159 |
+
<?php echo __('Microsoft Authenticator', 'miniorange-2-factor-authentication'); ?>
|
1160 |
+
</span>
|
1161 |
+
</label>
|
1162 |
+
</td>
|
1163 |
+
<td>
|
1164 |
+
<label title="<?php echo __('You have to enter 6 digits code generated by Authy 2-Factor Authentication App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
|
1165 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
|
1166 |
+
<span class="mo2f-styled-radio-text">
|
1167 |
+
<?php echo __('Authy 2-Factor Authentication', 'miniorange-2-factor-authentication'); ?>
|
1168 |
+
</span>
|
1169 |
+
</label>
|
1170 |
+
</td></tr>
|
1171 |
+
<tr><td>
|
1172 |
+
|
1173 |
+
<label title="<?php echo __('You will receive a push notification on your phone. You have to ACCEPT or DENY it to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
|
1174 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Duo Authenticator" />
|
1175 |
+
<span class="mo2f-styled-radio-text">
|
1176 |
+
<?php echo __('Duo Push Notification', 'miniorange-2-factor-authentication'); ?>
|
1177 |
+
</span>
|
1178 |
+
</label>
|
1179 |
+
</td>
|
1180 |
+
<td>
|
1181 |
+
<label title="<?php echo __('You will get an OTP on your TELEGRAM app from miniOrange Bot.', 'miniorange-2-factor-authentication'); ?>" >
|
1182 |
+
<input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over Telegram" />
|
1183 |
+
<span class="mo2f-styled-radio-text">
|
1184 |
+
<?php echo __('OTP Over Telegram', 'miniorange-2-factor-authentication'); ?>
|
1185 |
+
</span>
|
1186 |
+
</label>
|
1187 |
+
</td>
|
1188 |
+
</table>
|
1189 |
+
</div>
|
1190 |
+
|
1191 |
+
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
|
1192 |
+
<br />
|
1193 |
+
|
1194 |
+
|
1195 |
+
<div class="mo2f-setup-wizard-step-footer">
|
1196 |
+
<a href="#previousStep1"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
|
1197 |
+
<div class="mo2f-setup-wizard-step-footer-buttons">
|
1198 |
+
<input type="button" name="mo2f_next_step1" id="mo2f_next_step1" class="mo2f-button mo2f-button-main" value="Save and Continue" />
|
1199 |
+
|
1200 |
+
</div>
|
1201 |
+
</div>
|
1202 |
+
</div>
|
1203 |
+
|
1204 |
+
|
1205 |
+
|
1206 |
+
|
1207 |
+
|
1208 |
+
<div id="mo2f-setup-settings-error-loading-area2" style="width: 900px; display: none;">
|
1209 |
+
<p class="mo2f-step-show"> Step 2 of 4</p>
|
1210 |
+
|
1211 |
+
<h4 style="text-align:center;font-size: xx-large;"> Register with miniOrange </h4>
|
1212 |
+
|
1213 |
+
<form name="f" id="mo2f_registration_form" method="post" action="">
|
1214 |
+
<input type="hidden" name="option" value="mo_wpns_register_customer" />
|
1215 |
+
<div class="mo2f_table_layout">
|
1216 |
+
<div style="margin-bottom:30px;">
|
1217 |
+
<div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block">
|
1218 |
+
<p class ="popup_text" id="mo2f_Error_message" style="color: red;" >Seems like email is already registered. Please click on 'Already have an account'</p></div>
|
1219 |
+
<p> Please enter a valid email id that you have access to and select a password</p>
|
1220 |
+
<table class="mo_wpns_settings_table">
|
1221 |
+
<tr>
|
1222 |
+
<td><b><font color="#FF0000">*</font>Email:</b></td>
|
1223 |
+
<td><input style="padding: 5px;" class="mo_wpns_table_textbox" type="email" id="mo2f_email" name="email"
|
1224 |
+
required placeholder="person@example.com" /></td>
|
1225 |
+
</tr>
|
1226 |
+
|
1227 |
+
<tr>
|
1228 |
+
<td><b><font color="#FF0000">*</font>Password:</b></td>
|
1229 |
+
<td><input style="padding: 5px;" class="mo_wpns_table_textbox" required id= "mo2f_password" type="password"
|
1230 |
+
name="password" placeholder="Choose your password (Min. length 6)" /></td>
|
1231 |
+
</tr>
|
1232 |
+
<tr>
|
1233 |
+
<td><b><font color="#FF0000">*</font>Confirm Password:</b></td>
|
1234 |
+
<td><input style="padding: 5px;" class="mo_wpns_table_textbox" id= "mo2f_confirmPassword" required type="password"
|
1235 |
+
name="confirmPassword" placeholder="Confirm your password" /></td>
|
1236 |
+
</tr>
|
1237 |
+
<tr>
|
1238 |
+
<td> </td>
|
1239 |
+
<td><br>
|
1240 |
+
<a href="#mo2f_account_exist">Already have an account?</a>
|
1241 |
+
|
1242 |
+
</tr>
|
1243 |
+
</table>
|
1244 |
+
</div>
|
1245 |
+
</div>
|
1246 |
+
</form>
|
1247 |
+
<form name="f" id="mo2f_login_form" style="display: none;" method="post" action="">
|
1248 |
+
<input type="hidden" name="option" value="mo_wpns_verify_customer" />
|
1249 |
+
<div class="mo2f_table_layout">
|
1250 |
+
<div style="margin-bottom:30px;">
|
1251 |
+
<div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block">
|
1252 |
+
<p class ="popup_text" id="mo2f_Error_message" style="color: red;" >Invalid Credentials</p></div>
|
1253 |
+
|
1254 |
+
<p>Please enter your miniOrange email and password. <a target="_blank" href="https://login.xecurify.com/moas/idp/resetpassword"> Click here if you forgot your password?</a></p>
|
1255 |
+
<table class="mo_wpns_settings_table">
|
1256 |
+
<tr>
|
1257 |
+
<td><b><font color="#FF0000">*</font>Email:</b></td>
|
1258 |
+
<td><input style="padding: 5px;" class="mo_wpns_table_textbox" type="email" id="mo2f_email_login" name="email"
|
1259 |
+
required placeholder="person@example.com" /></td>
|
1260 |
+
</tr>
|
1261 |
+
<tr>
|
1262 |
+
<td><b><font color="#FF0000">*</font>Password:</b></td>
|
1263 |
+
<td><input style="padding: 5px;" class="mo_wpns_table_textbox" required id= "mo2f_password_login" type="password"
|
1264 |
+
name="password" placeholder="Enter your miniOrange password" /></td>
|
1265 |
+
</tr>
|
1266 |
+
<tr>
|
1267 |
+
<td> </td>
|
1268 |
+
<td><br>
|
1269 |
+
<a href="#mo2f_register_new_account">Go Back to Registration Page</a>
|
1270 |
+
|
1271 |
+
</tr>
|
1272 |
+
|
1273 |
+
</table>
|
1274 |
+
</div>
|
1275 |
+
</div>
|
1276 |
+
</form>
|
1277 |
+
|
1278 |
+
|
1279 |
+
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
|
1280 |
+
<br/>
|
1281 |
+
|
1282 |
+
|
1283 |
+
<div class="mo2f-setup-wizard-step-footer">
|
1284 |
+
<a href="#previousStep2"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
|
1285 |
+
<div class="mo2f-setup-wizard-step-footer-buttons">
|
1286 |
+
<input type="button" name="mo2f_next_step2" id="mo2f_next_step2" class="mo2f-button mo2f-button-main" value="Create Account and continue" />
|
1287 |
+
|
1288 |
+
</div>
|
1289 |
+
</div>
|
1290 |
+
|
1291 |
+
|
1292 |
+
</div>
|
1293 |
+
|
1294 |
+
<div id="mo2f-setup-settings-error-loading-area3" style="width: 900px; display: none;">
|
1295 |
+
<p class="mo2f-step-show"> Step 3 of 4</p>
|
1296 |
+
|
1297 |
+
<h3 style="text-align:center;font-size: xx-large;" id="mo2f_setup_method_title"> Configure 2-factor authentication </h3>
|
1298 |
+
|
1299 |
+
<div class="overlay_success" style="width:760px; display: none;" id= "mo2f_success_block_configuration">
|
1300 |
+
<p class ="popup_text" id="mo2f_configure_success_message" >An OTP has been sent to the below email.</p>
|
1301 |
+
<br><br></div>
|
1302 |
+
|
1303 |
+
<div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block_configuration">
|
1304 |
+
<p class ="popup_text" id="mo2f_configure_Error_message" style="color: red;" >Invalid OTP</p>
|
1305 |
+
</div>
|
1306 |
+
<div id="mo2f_main_content"> </div>
|
1307 |
+
|
1308 |
+
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
|
1309 |
+
<br/>
|
1310 |
+
|
1311 |
+
|
1312 |
+
|
1313 |
+
<div class="mo2f-setup-wizard-step-footer">
|
1314 |
+
<a href="#previousStep3"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
|
1315 |
+
<div class="mo2f-setup-wizard-step-footer-buttons">
|
1316 |
+
<input type="button" name="mo2f_next_step3" id="mo2f_next_step3" class="mo2f-button mo2f-button-main" value="Save and Continue" />
|
1317 |
+
|
1318 |
+
</div>
|
1319 |
+
</div>
|
1320 |
+
|
1321 |
+
|
1322 |
+
</div>
|
1323 |
+
|
1324 |
+
<div id="mo2f-setup-settings-error-loading-area4" style="width: 900px; display: none;">
|
1325 |
+
<p class="mo2f-step-show"> Step 4 of 4</p>
|
1326 |
+
<div style="text-align: center;">
|
1327 |
+
<h3 style="text-align:center;font-size: xx-large;"> Congratulations! </h3>
|
1328 |
+
<br>
|
1329 |
+
You have successfully configured the two-factor authentication.
|
1330 |
+
<br><br><br>
|
1331 |
+
<input type="button" name="mo2f_next_step4" id="mo2f_next_step4" class="mo2f-button mo2f-button-main" value="Advance Settings" />
|
1332 |
+
|
1333 |
+
</div>
|
1334 |
+
</div>
|
1335 |
+
|
1336 |
+
</div>
|
1337 |
+
|
1338 |
+
|
1339 |
+
</div>
|
1340 |
+
</div>
|
1341 |
+
|
1342 |
+
|
1343 |
+
|
1344 |
+
<script type="text/javascript">
|
1345 |
+
|
1346 |
+
var selected_2FA_method = '';
|
1347 |
+
var ele = document.getElementsByName('mo2f_selected_2factor_method');
|
1348 |
+
for(i = 0; i < ele.length; i++) {
|
1349 |
+
if(ele[i].checked)
|
1350 |
+
selected_2FA_method = ele[i].value;
|
1351 |
+
}
|
1352 |
+
jQuery("#mo2f_setup_method_title").text(selected_2FA_method);
|
1353 |
+
|
1354 |
+
jQuery('#mo2f_next_step4').click(function(e){
|
1355 |
+
localStorage.setItem("last_tab", 'unlimittedUser_2fa');
|
1356 |
+
window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
|
1357 |
+
|
1358 |
+
});
|
1359 |
+
|
1360 |
+
|
1361 |
+
jQuery('#mo2f_methods_setup_wizard').css('display', 'none');
|
1362 |
+
jQuery("#mo2f_get_started").click(function(e){
|
1363 |
+
jQuery('#mo2f-setup-settings-error-loading-area-container').css('display', 'none');
|
1364 |
+
jQuery('#mo2f_methods_setup_wizard').css('display', 'block');
|
1365 |
+
|
1366 |
+
});
|
1367 |
+
|
1368 |
+
jQuery('a[href="#previousStep3"]').click(function(e){
|
1369 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "none";
|
1370 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "none";
|
1371 |
+
|
1372 |
+
var selected_2FA_method = '';
|
1373 |
+
var ele = document.getElementsByName('mo2f_selected_2factor_method');
|
1374 |
+
for(i = 0; i < ele.length; i++) {
|
1375 |
+
if(ele[i].checked)
|
1376 |
+
selected_2FA_method = ele[i].value;
|
1377 |
+
}
|
1378 |
+
if(selected_2FA_method =='OTP Over SMS')
|
1379 |
+
{
|
1380 |
+
document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
|
1381 |
+
document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "block";
|
1382 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line2");
|
1383 |
+
lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
|
1384 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step3");
|
1385 |
+
stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
|
1386 |
+
}
|
1387 |
+
else
|
1388 |
+
{
|
1389 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line2");
|
1390 |
+
lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
|
1391 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step3");
|
1392 |
+
stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
|
1393 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line1");
|
1394 |
+
lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
|
1395 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step2");
|
1396 |
+
stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
|
1397 |
+
document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
|
1398 |
+
document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "block";
|
1399 |
+
|
1400 |
+
}
|
1401 |
+
});
|
1402 |
+
|
1403 |
+
jQuery('a[href="#previousStep2"]').click(function(e){
|
1404 |
+
document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "none";
|
1405 |
+
document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "block";
|
1406 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line1");
|
1407 |
+
lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
|
1408 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step2");
|
1409 |
+
stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
|
1410 |
+
|
1411 |
+
});
|
1412 |
+
|
1413 |
+
jQuery('a[href="#previousStep1"]').click(function(e){
|
1414 |
+
jQuery('#mo2f-setup-settings-error-loading-area-container').css('display', 'block');
|
1415 |
+
jQuery('#mo2f_methods_setup_wizard').css('display', 'none');
|
1416 |
+
|
1417 |
+
});
|
1418 |
+
|
1419 |
+
jQuery('a[href=\"#mo2f_account_exist\"]').click(function (e) {
|
1420 |
+
document.getElementById('mo2f_registration_form').style.display = "none";
|
1421 |
+
document.getElementById('mo2f_login_form').style.display = "block";
|
1422 |
+
document.getElementById('mo2f_next_step2').value = 'Login and Continue';
|
1423 |
+
});
|
1424 |
+
|
1425 |
+
jQuery('a[href=\"#mo2f_register_new_account\"]').click(function (e) {
|
1426 |
+
document.getElementById('mo2f_registration_form').style.display = "block";
|
1427 |
+
document.getElementById('mo2f_login_form').style.display = "none";
|
1428 |
+
document.getElementById('mo2f_next_step2').value = 'Create Account and Continue';
|
1429 |
+
});
|
1430 |
+
|
1431 |
+
jQuery('#mo2f_next_step3').click(function(e){
|
1432 |
+
document.getElementById('mo2f_loader').style.display = "block";
|
1433 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "none";
|
1434 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "none";
|
1435 |
+
document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
|
1436 |
+
|
1437 |
+
var selected_2FA_method = '';
|
1438 |
+
var ele = document.getElementsByName('mo2f_selected_2factor_method');
|
1439 |
+
for(i = 0; i < ele.length; i++) {
|
1440 |
+
if(ele[i].checked)
|
1441 |
+
selected_2FA_method = ele[i].value;
|
1442 |
+
}
|
1443 |
+
var data ='';
|
1444 |
+
if(selected_2FA_method == 'Google Authenticator')
|
1445 |
+
{
|
1446 |
+
data= { 'action':'mo_two_factor_ajax',
|
1447 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_verify_GA_setup_wizard',
|
1448 |
+
'mo2f_google_auth_code' : jQuery('#mo2f_google_auth_code').val(),
|
1449 |
+
'mo2f_session_id' : jQuery('#mo2f_session_id').val()
|
1450 |
+
};
|
1451 |
+
|
1452 |
+
}
|
1453 |
+
else if (selected_2FA_method =='OTP Over SMS')
|
1454 |
+
{
|
1455 |
+
data= { 'action':'mo_two_factor_ajax',
|
1456 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_verify_OTPOverSMS_setup_wizard',
|
1457 |
+
'mo2f_otp_token' : jQuery('#mo2f_otp_token').val()
|
1458 |
+
};
|
1459 |
+
|
1460 |
+
}
|
1461 |
+
else if(selected_2FA_method == 'OTP Over Email')
|
1462 |
+
{
|
1463 |
+
data= { 'action':'mo_two_factor_ajax',
|
1464 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_verify_OTPOverEmail_setup_wizard',
|
1465 |
+
'mo2f_otp_token' : jQuery('#mo2f_otp_token').val()
|
1466 |
+
};
|
1467 |
+
|
1468 |
+
}
|
1469 |
+
else if(selected_2FA_method == 'Security Questions')
|
1470 |
+
{
|
1471 |
+
data= { 'action':'mo_two_factor_ajax',
|
1472 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_verify_KBA_setup_wizard',
|
1473 |
+
'mo2f_kbaquestion_1' : jQuery('#mo2f_kbaquestion_1').val(),
|
1474 |
+
'mo2f_kbaquestion_2' : jQuery('#mo2f_kbaquestion_2').val(),
|
1475 |
+
'mo2f_kbaquestion_3' : jQuery('#mo2f_kbaquestion_3').val(),
|
1476 |
+
'mo2f_kba_ans1' : jQuery('#mo2f_kba_ans1').val(),
|
1477 |
+
'mo2f_kba_ans2' : jQuery('#mo2f_kba_ans2').val(),
|
1478 |
+
'mo2f_kba_ans3' : jQuery('#mo2f_kba_ans3').val()
|
1479 |
+
};
|
1480 |
+
|
1481 |
+
}
|
1482 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1483 |
+
jQuery.post(ajax_url, data, function(response){
|
1484 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1485 |
+
document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
|
1486 |
+
|
1487 |
+
if(response =='SUCCESS')
|
1488 |
+
{
|
1489 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line3");
|
1490 |
+
lineElement.className += " mo2f-setup-wizard-timeline-line-active";
|
1491 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step4");
|
1492 |
+
stepElement.className += " mo2f-setup-wizard-timeline-step-active";
|
1493 |
+
document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
|
1494 |
+
jQuery('#mo2f-setup-settings-error-loading-area4').css('display','block');
|
1495 |
+
|
1496 |
+
}
|
1497 |
+
else
|
1498 |
+
{
|
1499 |
+
document.getElementById('mo2f_configure_Error_message').innerHTML = response;
|
1500 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "block";
|
1501 |
+
}
|
1502 |
+
});
|
1503 |
+
|
1504 |
+
});
|
1505 |
+
|
1506 |
+
jQuery("#mo2f_next_step2").click(function(e){
|
1507 |
+
document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
|
1508 |
+
document.getElementById('mo2f_loader').style.display = "block";
|
1509 |
+
document.getElementById('mo2f_Error_block').style.display = "none";
|
1510 |
+
document.getElementById('mo2f_next_step2').disabled = true;
|
1511 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1512 |
+
var email = jQuery("#mo2f_email").val();
|
1513 |
+
var password = jQuery("#mo2f_password").val();
|
1514 |
+
if(jQuery("#mo2f_next_step2").val() == 'Login and Continue')
|
1515 |
+
{
|
1516 |
+
email = jQuery("#mo2f_email_login").val();
|
1517 |
+
password = jQuery("#mo2f_password_login").val();
|
1518 |
+
}
|
1519 |
+
var data= { 'action':'mo_two_factor_ajax',
|
1520 |
+
'mo_2f_two_factor_ajax' : 'mo_wpns_register_verify_customer',
|
1521 |
+
'email': email,
|
1522 |
+
'password':password,
|
1523 |
+
'confirmPassword' : jQuery("#mo2f_confirmPassword").val(),
|
1524 |
+
'Login and Continue' : jQuery("#mo2f_next_step2").val()
|
1525 |
+
};
|
1526 |
+
|
1527 |
+
jQuery.post(ajax_url, data, function(response){
|
1528 |
+
document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
|
1529 |
+
|
1530 |
+
document.getElementById('mo2f_next_step2').disabled = false;
|
1531 |
+
if(response == 'SUCCESS')
|
1532 |
+
{
|
1533 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line2");
|
1534 |
+
lineElement.className += " mo2f-setup-wizard-timeline-line-active";
|
1535 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step3");
|
1536 |
+
stepElement.className += " mo2f-setup-wizard-timeline-step-active";
|
1537 |
+
document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "none";
|
1538 |
+
jQuery('#mo2f-setup-settings-error-loading-area3').css('display','block');
|
1539 |
+
|
1540 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1541 |
+
var data= { 'action':'mo_two_factor_ajax',
|
1542 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_configure_OTPOverSMS_setup_wizard'
|
1543 |
+
};
|
1544 |
+
jQuery.post(ajax_url, data, function(response){
|
1545 |
+
|
1546 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1547 |
+
document.getElementById('mo2f_main_content').innerHTML = response;
|
1548 |
+
jQuery("#phone").intlTelInput();
|
1549 |
+
|
1550 |
+
jQuery('#mo2f_send_otp').click(function(e){
|
1551 |
+
document.getElementById('mo2f_loader').style.display = "block";
|
1552 |
+
document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
|
1553 |
+
|
1554 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "none";
|
1555 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "none";
|
1556 |
+
|
1557 |
+
var data = { 'action':'mo_two_factor_ajax',
|
1558 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_send_otp_token',
|
1559 |
+
'phone' : jQuery('#phone').val(),
|
1560 |
+
'selected_2FA_method' : 'SMS'
|
1561 |
+
};
|
1562 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1563 |
+
jQuery.post(ajax_url, data, function(response){
|
1564 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1565 |
+
document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
|
1566 |
+
|
1567 |
+
if(response == 'SUCCESS')
|
1568 |
+
{
|
1569 |
+
$message = 'An OTP has been sent to the below phone number. Please enter the OTP to set the 2FA';
|
1570 |
+
document.getElementById('mo2f_configure_success_message').innerHTML = $message;
|
1571 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "block";
|
1572 |
+
|
1573 |
+
}
|
1574 |
+
else
|
1575 |
+
{
|
1576 |
+
document.getElementById('mo2f_configure_Error_message').innerHTML = response;
|
1577 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "block";
|
1578 |
+
|
1579 |
+
}
|
1580 |
+
});
|
1581 |
+
|
1582 |
+
});
|
1583 |
+
|
1584 |
+
});
|
1585 |
+
}
|
1586 |
+
else
|
1587 |
+
{
|
1588 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1589 |
+
document.getElementById('mo2f_Error_message').innerHTML = response;
|
1590 |
+
document.getElementById('mo2f_Error_block').style.display = "block";
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
});
|
1594 |
+
|
1595 |
+
});
|
1596 |
+
|
1597 |
+
jQuery("#mo2f_next_step1").click(function(e){
|
1598 |
+
var ele = document.getElementsByName('mo2f_selected_2factor_method');
|
1599 |
+
var selected_2FA_method = '';
|
1600 |
+
for(i = 0; i < ele.length; i++) {
|
1601 |
+
if(ele[i].checked)
|
1602 |
+
selected_2FA_method = ele[i].value;
|
1603 |
+
}
|
1604 |
+
var configMessage = 'Configure '+selected_2FA_method;
|
1605 |
+
jQuery("#mo2f_setup_method_title").text(configMessage);
|
1606 |
+
|
1607 |
+
if(selected_2FA_method == '')
|
1608 |
+
{
|
1609 |
+
return '';
|
1610 |
+
}
|
1611 |
+
|
1612 |
+
|
1613 |
+
|
1614 |
+
document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "none";
|
1615 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line1");
|
1616 |
+
lineElement.className += " mo2f-setup-wizard-timeline-line-active";
|
1617 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step2");
|
1618 |
+
stepElement.className += " mo2f-setup-wizard-timeline-step-active";
|
1619 |
+
|
1620 |
+
if(selected_2FA_method !="OTP Over SMS" && selected_2FA_method != '')
|
1621 |
+
{
|
1622 |
+
var lineElement = document.getElementById("mo2f-setup-wizard-line2");
|
1623 |
+
lineElement.className += " mo2f-setup-wizard-timeline-line-active";
|
1624 |
+
var stepElement = document.getElementById("mo2f-setup-wizard-step3");
|
1625 |
+
stepElement.className += " mo2f-setup-wizard-timeline-step-active";
|
1626 |
+
jQuery('#mo2f-setup-settings-error-loading-area3').css('display','block');
|
1627 |
+
|
1628 |
+
document.getElementById('mo2f_loader').style.display = "block";
|
1629 |
+
|
1630 |
+
var mo2f_setup_call = "";
|
1631 |
+
if(selected_2FA_method == "Google Authenticator")
|
1632 |
+
{
|
1633 |
+
mo2f_setup_call = "mo_2fa_configure_GA_setup_wizard";
|
1634 |
+
}
|
1635 |
+
else if(selected_2FA_method =="OTP Over Email")
|
1636 |
+
{
|
1637 |
+
mo2f_setup_call ="mo_2fa_configure_OTPOverEmail_setup_wizard";
|
1638 |
+
}
|
1639 |
+
else if (selected_2FA_method == "Security Questions")
|
1640 |
+
{
|
1641 |
+
mo2f_setup_call = "mo_2fa_configure_KBA_setup_wizard";
|
1642 |
+
}
|
1643 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1644 |
+
var data= { 'action':'mo_two_factor_ajax',
|
1645 |
+
'mo_2f_two_factor_ajax' : mo2f_setup_call
|
1646 |
+
};
|
1647 |
+
jQuery.post(ajax_url, data, function(response){
|
1648 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1649 |
+
document.getElementById('mo2f_main_content').innerHTML = response;
|
1650 |
+
|
1651 |
+
if(selected_2FA_method == 'Google Authenticator')
|
1652 |
+
{
|
1653 |
+
jQuery('.mo2f_gauth').qrcode({
|
1654 |
+
'render': 'image',
|
1655 |
+
size: 175,
|
1656 |
+
'text': jQuery('.mo2f_gauth').data('qrcode')
|
1657 |
+
});
|
1658 |
+
jQuery('a[href="#mo2f_scanbarcode_a"]').click(function(e){
|
1659 |
+
var element = document.getElementById('mo2f_scanbarcode_a');
|
1660 |
+
if(element.style.display === 'none')
|
1661 |
+
element.style.display = 'block';
|
1662 |
+
|
1663 |
+
else
|
1664 |
+
element.style.display = "none";
|
1665 |
+
});
|
1666 |
+
|
1667 |
+
}
|
1668 |
+
else if(selected_2FA_method =='OTP Over Email')
|
1669 |
+
{
|
1670 |
+
jQuery('#mo2f_send_otp').click(function(e){
|
1671 |
+
document.getElementById('mo2f_loader').style.display = "block";
|
1672 |
+
document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
|
1673 |
+
|
1674 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "none";
|
1675 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "none";
|
1676 |
+
|
1677 |
+
var data = { 'action':'mo_two_factor_ajax',
|
1678 |
+
'mo_2f_two_factor_ajax' : 'mo_2fa_send_otp_token',
|
1679 |
+
'phone' : jQuery('#phone').val(),
|
1680 |
+
'mo2f_session_id' : jQuery('#mo2f_session_id').val(),
|
1681 |
+
'selected_2FA_method' : 'OTP Over Email'
|
1682 |
+
};
|
1683 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1684 |
+
jQuery.post(ajax_url, data, function(response){
|
1685 |
+
document.getElementById('mo2f_loader').style.display = "none";
|
1686 |
+
document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
|
1687 |
+
|
1688 |
+
if(response == 'SUCCESS')
|
1689 |
+
{
|
1690 |
+
$message = 'An OTP has been sent to the below email please enter the OTP to set the 2FA';
|
1691 |
+
document.getElementById('mo2f_configure_success_message').innerHTML = $message;
|
1692 |
+
document.getElementById('mo2f_success_block_configuration').style.display = "block";
|
1693 |
+
|
1694 |
+
}
|
1695 |
+
else
|
1696 |
+
{
|
1697 |
+
document.getElementById('mo2f_configure_Error_message').innerHTML = response;
|
1698 |
+
document.getElementById('mo2f_Error_block_configuration').style.display = "block";
|
1699 |
+
|
1700 |
+
}
|
1701 |
+
});
|
1702 |
+
|
1703 |
+
});
|
1704 |
+
}
|
1705 |
+
else if (selected_2FA_method =='Security Questions')
|
1706 |
+
{
|
1707 |
+
|
1708 |
+
var mo_option_to_hide1;
|
1709 |
+
//hidden element in dropdown list 2
|
1710 |
+
var mo_option_to_hide2;
|
1711 |
+
|
1712 |
+
jQuery('#mo2f_kbaquestion_1').change(function(){
|
1713 |
+
list = 1;
|
1714 |
+
var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
|
1715 |
+
//if an element is currently hidden, unhide it
|
1716 |
+
if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
|
1717 |
+
mo_option_to_hide1.style.display = 'block';
|
1718 |
+
} else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
|
1719 |
+
mo_option_to_hide2.style.display = 'block';
|
1720 |
+
}
|
1721 |
+
//select the element to hide and then hide it
|
1722 |
+
if (list == 1) {
|
1723 |
+
if (list_selected != 0) {
|
1724 |
+
mo_option_to_hide2 = document.getElementById("mq" + list_selected + "_2");
|
1725 |
+
mo_option_to_hide2.style.display = 'none';
|
1726 |
+
}
|
1727 |
+
}
|
1728 |
+
});
|
1729 |
+
jQuery('#mo2f_kbaquestion_2').change(function(){
|
1730 |
+
list = 2;
|
1731 |
+
var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
|
1732 |
+
//if an element is currently hidden, unhide it
|
1733 |
+
if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
|
1734 |
+
mo_option_to_hide1.style.display = 'block';
|
1735 |
+
} else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
|
1736 |
+
mo_option_to_hide2.style.display = 'block';
|
1737 |
+
}
|
1738 |
+
//select the element to hide and then hide it
|
1739 |
+
if (list == 2) {
|
1740 |
+
if (list_selected != 0) {
|
1741 |
+
mo_option_to_hide1 = document.getElementById("mq" + list_selected + "_1");
|
1742 |
+
mo_option_to_hide1.style.display = 'none';
|
1743 |
+
}
|
1744 |
+
}
|
1745 |
+
});
|
1746 |
+
|
1747 |
+
}
|
1748 |
+
});
|
1749 |
+
|
1750 |
+
|
1751 |
+
}
|
1752 |
+
else if(selected_2FA_method == 'OTP Over SMS')
|
1753 |
+
{
|
1754 |
+
jQuery('#mo2f-setup-settings-error-loading-area2').css('display','block');
|
1755 |
+
}
|
1756 |
+
|
1757 |
+
|
1758 |
+
});
|
1759 |
+
jQuery('input:radio[name=mo2f_selected_2factor_method]').click(function() {
|
1760 |
+
|
1761 |
+
|
1762 |
+
localStorage.setItem("last_tab", 'setup_2fa');
|
1763 |
+
var selectedMethod = jQuery(this).val();
|
1764 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
1765 |
+
var nonce = "<?php echo wp_create_nonce( 'miniorange-select-method-setup-wizard' ); ?>";
|
1766 |
+
|
1767 |
+
if(selectedMethod == 'Duo Authenticator' || selectedMethod =='OTP Over Telegram')
|
1768 |
+
{
|
1769 |
+
var data= { 'action':'mo_two_factor_ajax',
|
1770 |
+
'mo_2f_two_factor_ajax' : 'select_method_setup_wizard',
|
1771 |
+
'mo2f_method': selectedMethod,
|
1772 |
+
'nonce': nonce };
|
1773 |
+
|
1774 |
+
jQuery.post(ajax_url, data, function(response){
|
1775 |
+
window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
|
1776 |
+
});
|
1777 |
+
}
|
1778 |
+
|
1779 |
+
});
|
1780 |
+
|
1781 |
+
jQuery('a[href="#skiptwofactor"]').click(function(e){
|
1782 |
+
localStorage.setItem("last_tab", 'setup_2fa');
|
1783 |
+
window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
|
1784 |
+
});
|
1785 |
+
|
1786 |
+
|
1787 |
+
</script>
|
1788 |
+
<?php
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
/**
|
1792 |
+
* Attempt to catch the js error preventing the Vue app from loading and displaying that message for better support.
|
1793 |
+
*
|
1794 |
+
* @since 2.6.0
|
1795 |
+
*/
|
1796 |
+
private function settings_inline_js() {
|
1797 |
+
?>
|
1798 |
+
<script type="text/javascript">
|
1799 |
+
window.onerror = function myErrorHandler( errorMsg, url, lineNumber ) {
|
1800 |
+
/* Don't try to put error in container that no longer exists post-vue loading */
|
1801 |
+
var message_container = document.getElementById( 'mo2f-setup-nojs-error-message' );
|
1802 |
+
if ( ! message_container ) {
|
1803 |
+
return false;
|
1804 |
+
}
|
1805 |
+
var message = document.getElementById( 'mo2f-setup-alert-message' );
|
1806 |
+
message.innerHTML = errorMsg;
|
1807 |
+
message_container.style.display = 'block';
|
1808 |
+
return false;
|
1809 |
+
}
|
1810 |
+
</script>
|
1811 |
+
<?php
|
1812 |
+
}
|
1813 |
+
|
1814 |
+
|
1815 |
+
public function setup_wizard_content() {
|
1816 |
+
$admin_url = is_network_admin() ? network_admin_url() : admin_url();
|
1817 |
+
|
1818 |
+
$this->settings_error_page( 'mo2f-setup-vue-setup-wizard', '<a href="' . $admin_url . '">' . esc_html__( 'Go back to the Dashboard', 'mo2f-setup' ) . '</a>' );
|
1819 |
+
$this->settings_inline_js();
|
1820 |
+
}
|
1821 |
+
|
1822 |
+
/**
|
1823 |
+
* Outputs the simplified footer used for the Setup Wizard.
|
1824 |
+
*
|
1825 |
+
* @since 2.6.0
|
1826 |
+
*/
|
1827 |
+
public function setup_wizard_footer() {
|
1828 |
+
?>
|
1829 |
+
<?php wp_print_scripts( 'mo2f-setup-vue-script' ); ?>
|
1830 |
+
</body>
|
1831 |
+
</html>
|
1832 |
+
<?php
|
1833 |
+
}
|
1834 |
+
|
1835 |
|
1836 |
function miniorange_auth_save_settings() {
|
1837 |
if (get_site_option('mo2f_plugin_redirect')) {
|
1838 |
delete_site_option('mo2f_plugin_redirect');
|
1839 |
+
|
1840 |
+
do_action( 'mo2f_admin_setup_wizard_load_setup_wizard_before', $this );
|
1841 |
+
wp_enqueue_script('jquery');
|
1842 |
+
wp_enqueue_script('wp-mo2f-setup-wizard',plugins_url( 'includes/js/setup-wizard-2fa.js', dirname(dirname(__FILE__))));
|
1843 |
+
|
1844 |
+
wp_localize_script(
|
1845 |
+
'wp-mo2f-setup-wizard',
|
1846 |
+
'mo2f_setup_wizard',[
|
1847 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
1848 |
+
'plugin_url' => get_site_option('siteurl'),
|
1849 |
+
'nonce' => wp_create_nonce( 'mo2f-setup-wizard-nonce' )]
|
1850 |
+
);
|
1851 |
+
$this->setup_wizard_header();
|
1852 |
+
$this->setup_wizard_content();
|
1853 |
+
$this->setup_wizard_footer();
|
1854 |
exit;
|
1855 |
}
|
1856 |
if ( array_key_exists( 'page', $_REQUEST ) && $_REQUEST['page'] == 'mo_2fa_two_fa' ) {
|
1857 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
1858 |
+
if(session_status() != PHP_SESSION_DISABLED )
|
1859 |
session_start();
|
1860 |
}
|
1861 |
}
|
2050 |
}
|
2051 |
}
|
2052 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2053 |
}else if ( isset( $_POST['option'] ) and $_POST['option'] == "mo_auth_verify_customer" ) { //register the admin to miniOrange if already exist
|
2054 |
|
2055 |
$nonce = $_POST['miniorange_verify_customer_nonce'];
|
2470 |
$Mo2fdbQueries->database_table_issue();
|
2471 |
|
2472 |
}
|
2473 |
+
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_registration_closed' ) {
|
2474 |
+
$nonce = $_POST['mo2f_registration_closed_nonce'];
|
2475 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-registration-closed-nonce' ) ) {
|
2476 |
+
$error = new WP_Error();
|
2477 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2478 |
+
return $error;
|
2479 |
+
} else {
|
2480 |
+
delete_user_meta( $user->ID, 'register_account_popup' );
|
2481 |
+
$mo2f_message = 'Please set up the second-factor by clicking on Configure button.';
|
2482 |
+
update_option( 'mo2f_message', $mo2f_message );
|
2483 |
+
$this->mo_auth_show_success_message();
|
2484 |
+
}
|
2485 |
+
}else if ( isset( $_POST['option'] ) and $_POST['option'] == "mo2f_goto_verifycustomer" ) {
|
2486 |
+
$nonce = $_POST['mo2f_goto_verifycustomer_nonce'];
|
2487 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-goto-verifycustomer-nonce' ) ) {
|
2488 |
+
$error = new WP_Error();
|
2489 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2490 |
+
return $error;
|
2491 |
+
} else {
|
2492 |
+
$Mo2fdbQueries->insert_user( $user_id, array( 'user_id' => $user_id ) );
|
2493 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "ENTER_YOUR_EMAIL_PASSWORD" ) );
|
2494 |
+
update_option('mo_2factor_user_registration_status','MO_2_FACTOR_VERIFY_CUSTOMER');
|
2495 |
+
}
|
2496 |
+
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo_2factor_gobackto_registration_page' ) { //back to registration page for admin
|
2497 |
+
$nonce = $_POST['mo_2factor_gobackto_registration_page_nonce'];
|
2498 |
+
if ( ! wp_verify_nonce( $nonce, 'mo-2factor-gobackto-registration-page-nonce' ) ) {
|
2499 |
+
$error = new WP_Error();
|
2500 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2501 |
+
return $error;
|
2502 |
+
} else {
|
2503 |
+
delete_option( 'mo2f_email' );
|
2504 |
+
delete_option( 'mo2f_password' );
|
2505 |
+
update_option( 'mo2f_message', "" );
|
2506 |
+
|
2507 |
+
MO2f_Utility::unset_session_variables( 'mo2f_transactionId' );
|
2508 |
+
delete_option( 'mo2f_transactionId' );
|
2509 |
+
delete_user_meta( $user->ID, 'mo2f_sms_otp_count' );
|
2510 |
+
delete_user_meta( $user->ID, 'mo2f_email_otp_count' );
|
2511 |
+
delete_user_meta( $user->ID, 'mo2f_email_otp_count' );
|
2512 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo_2factor_user_registration_status' => 'REGISTRATION_STARTED' ) );
|
2513 |
+
}
|
2514 |
+
|
2515 |
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_skip_feedback' ) {
|
2516 |
|
2517 |
$nonce = $_POST['mo2f_skip_feedback_nonce'];
|
2639 |
MO2f_Utility::unset_session_variables( $session_variables );
|
2640 |
|
2641 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2642 |
+
$TwoFA_method_to_configure = sanitize_text_field($_POST['mo2f_method']);
|
2643 |
$enduser = new Two_Factor_Setup();
|
2644 |
$current_method = MO2f_Utility::mo2f_decode_2_factor( $TwoFA_method_to_configure, "server" );
|
2645 |
|
2887 |
}
|
2888 |
}
|
2889 |
}
|
2890 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2891 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_validate_otp_over_Telegram' ) { //validate otp over Telegram
|
2892 |
|
2893 |
$nonce = $_POST['mo2f_validate_otp_over_Telegram_nonce'];
|
3165 |
|
3166 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) { //Google OTP validated
|
3167 |
|
3168 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
3169 |
+
delete_user_meta( $user->ID, 'configure_2FA');
|
3170 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => 'OTP Over Email','mo2f_OTPOverEmail_config_status'=>true ) );
|
|
|
|
|
|
|
|
|
|
|
3171 |
delete_user_meta( $user->ID, 'test_2FA' );
|
3172 |
$this->mo_auth_show_success_message();
|
3173 |
|
3536 |
}
|
3537 |
}
|
3538 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3539 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Telegram_send_otp' ) { // sendin otp for configuring OTP over Telegram
|
3540 |
|
3541 |
$nonce = $_POST['mo2f_configure_otp_over_Telegram_send_otp_nonce'];
|
3661 |
}
|
3662 |
}
|
3663 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3664 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_otp_over_Telegram_validate' ) {
|
3665 |
$nonce = $_POST['mo2f_configure_otp_over_Telegram_validate_nonce'];
|
3666 |
|
3964 |
}
|
3965 |
|
3966 |
}else if ( ( isset( $_POST['option'] ) && sanitize_text_field($_POST['option']) == 'mo2f_save_free_plan_auth_methods' ) ) {// user clicks on Set 2-Factor method
|
3967 |
+
|
3968 |
$nonce = sanitize_text_field($_POST['miniorange_save_form_auth_methods_nonce']);
|
3969 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-save-form-auth-methods-nonce' ) ) {
|
3970 |
$error = new WP_Error();
|
3989 |
}
|
3990 |
$selected_2FA_method = MO2f_Utility::mo2f_decode_2_factor( isset( $_POST['mo2f_configured_2FA_method_free_plan'] ) ? $_POST['mo2f_configured_2FA_method_free_plan'] : $_POST['mo2f_selected_action_standard_plan'], "wpdb" );
|
3991 |
$selected_2FA_method = sanitize_text_field($selected_2FA_method);
|
3992 |
+
$onprem_methods = array('Google Authenticator','Security Questions','OTPOverTelegram','DuoAuthenticator');
|
3993 |
$Mo2fdbQueries->insert_user( $user->ID );
|
3994 |
if(MO2F_IS_ONPREM && ! in_array($selected_2FA_method, $onprem_methods) ){
|
3995 |
foreach ($cloud_methods as $cloud_method) {
|
4069 |
$selected_2FA_method = 'OTP Over SMS';
|
4070 |
if($selected_2FA_method == 'OTPOverTelegram')
|
4071 |
$selected_2FA_method = 'OTP Over Telegram';
|
4072 |
+
if($selected_2FA_method == 'DuoAuthenticator')
|
4073 |
+
$selected_2FA_method = 'Duo Authenticator';
|
|
|
|
|
4074 |
}
|
4075 |
+
if(MO2F_IS_ONPREM and ($selected_2FA_method =='Google Authenticator' or $selected_2FA_method == 'Security Questions' or $selected_2FA_method =='OTP Over Email' or $selected_2FA_method == 'Email Verification' or $selected_2FA_method == 'OTP Over Telegram' or $selected_2FA_method == 'Duo Authenticator' ))
|
|
|
4076 |
$is_customer_registered = 1;
|
4077 |
|
4078 |
if ( $is_customer_registered ) {
|
4089 |
$enduser = new Customer_Setup();
|
4090 |
if($selected_2FA_method == 'OTPOverTelegram')
|
4091 |
$selected_2FA_method = 'OTP Over Telegram';
|
4092 |
+
if($selected_2FA_method == 'DuoAuthenticator')
|
4093 |
+
$selected_2FA_method = 'Duo Authenticator';
|
|
|
|
|
4094 |
if ( $selected_action == "select2factor" ) {
|
4095 |
|
4096 |
if ( $selected_2FA_method == 'OTP Over SMS' && $user_phone == 'false' ) {
|
4180 |
} else {
|
4181 |
update_option( 'mo2f_enable_2fa', isset( $_POST['mo2f_enable_2fa'] ) ? $_POST['mo2f_enable_2fa'] : 0 );
|
4182 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4183 |
}else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo_2factor_test_authentication_method' ) {
|
4184 |
//network security feature
|
4185 |
$nonce = $_POST['mo_2factor_test_authentication_method_nonce'];
|
4260 |
$this->mo_auth_show_error_message();
|
4261 |
|
4262 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4263 |
}
|
4264 |
else if($selected_2FA_method =='OTP Over Telegram')
|
4265 |
{
|
4424 |
delete_user_meta( $user->ID, 'configure_2FA' );
|
4425 |
|
4426 |
}
|
4427 |
+
}
|
4428 |
+
else if(isset($_POST['option']) && $_POST['option'] == 'mo2f_reset_duo_configuration'){
|
4429 |
+
$nonce = sanitize_text_field($_POST['mo2f_duo_reset_configuration_nonce']);
|
4430 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-duo-reset-configuration-nonce' ) ) {
|
4431 |
+
$error = new WP_Error();
|
4432 |
+
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
4433 |
+
return $error;
|
4434 |
+
}else{
|
4435 |
+
delete_site_option('duo_credentials_save_successfully');
|
4436 |
+
delete_user_meta($user->ID,'user_not_enroll');
|
4437 |
+
delete_site_option('mo2f_d_integration_key');
|
4438 |
+
delete_site_option('mo2f_d_secret_key');
|
4439 |
+
delete_site_option('mo2f_d_api_hostname');
|
4440 |
+
update_option( 'mo2f_message', Mo2fConstants::langTranslate("RESET_DUO_CONFIGURATON"));
|
4441 |
+
$this->mo_auth_show_success_message();
|
4442 |
+
}
|
4443 |
}
|
4444 |
|
4445 |
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_2factor_generate_backup_codes' ) {
|
4449 |
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
4450 |
return $error;
|
4451 |
}else {
|
4452 |
+
$codes = MO2f_Utility::mo2f_mail_and_download_codes();
|
4453 |
+
|
4454 |
+
if($codes == 'LimitReached' || $codes == 'UserLimitReached' || $codes == 'AllUsed' || $codes == 'invalid_request'){
|
4455 |
+
$id = get_current_user_id();
|
4456 |
+
update_user_meta($id, 'mo_backup_code_generated', 1);
|
4457 |
+
update_user_meta($id, 'mo_backup_code_downloaded', 1);
|
4458 |
+
if($codes == 'AllUsed'){
|
4459 |
+
update_option( 'mo2f_message', Mo2fConstants::langTranslate("USED_ALL_BACKUP_CODES"));
|
4460 |
+
}else if($codes == 'LimitReached'){
|
4461 |
+
update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_LIMIT_REACH"));
|
4462 |
+
}else if($codes == 'UserLimitReached'){
|
4463 |
+
update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_DOMAIN_LIMIT_REACH"));
|
4464 |
+
}else if($codes == 'invalid_request'){
|
4465 |
+
update_user_meta($id, 'mo_backup_code_generated', 0);
|
4466 |
+
update_user_meta($id, 'mo_backup_code_downloaded', 0);
|
4467 |
+
update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_INVALID_REQUEST"));
|
4468 |
+
}
|
4469 |
+
$this->mo_auth_show_error_message();
|
4470 |
+
}
|
4471 |
}
|
4472 |
}
|
4473 |
|
4509 |
<!-- Modal content -->
|
4510 |
<div class="modal-content">
|
4511 |
<div class="modal-header">
|
4512 |
+
<h3 class="modal-title" style="text-align: center; font-size: 20px; color: #2271b1">Email Address for miniOrange</h3><span id="closeEnterEmailCloud" class="modal-span-close">X</span>
|
4513 |
</div>
|
4514 |
<div class="modal-body" style="height: auto">
|
4515 |
<h2><i>Enter your Email: <input type ='email' id='emailEnteredCloud' name='emailEnteredCloud' size= '40' required value="<?php echo $email;?>"/></i></h2>
|
4516 |
</div>
|
4517 |
<div class="modal-footer">
|
4518 |
+
<button type="button" class="button button-primary button-large modal-button" id="save_entered_email_cloud">Save</button>
|
4519 |
</div>
|
4520 |
</div>
|
4521 |
</div>
|
4901 |
$url = get_site_option('siteurl').'/wp-login.php?'; //login page can change
|
4902 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
4903 |
<tbody>
|
4904 |
+
<td>
|
4905 |
<td>
|
4906 |
<table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
|
4907 |
<tbody>
|
4908 |
+
<td>
|
4909 |
<td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
|
4910 |
</tr>
|
4911 |
</tbody>
|
4912 |
</table>
|
4913 |
<table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
|
4914 |
<tbody>
|
4915 |
+
<td>
|
4916 |
<td>
|
4917 |
<p style="margin-top:0;margin-bottom:20px">Dear Customers,</p>
|
4918 |
<p style="margin-top:0;margin-bottom:10px">You initiated a transaction <b>WordPress 2 Factor Authentication Plugin</b>:</p>
|
4993 |
$headers[] = 'Cc: 2fasupport <2fasupport@xecurify.com>';
|
4994 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
4995 |
<tbody>
|
4996 |
+
<td>
|
4997 |
<td>
|
4998 |
<table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
|
4999 |
<tbody>
|
5000 |
+
<td>
|
5001 |
<td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
|
5002 |
</tr>
|
5003 |
</tbody>
|
5004 |
</table>
|
5005 |
<table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
|
5006 |
<tbody>
|
5007 |
+
<td>
|
5008 |
<td>
|
5009 |
<p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
|
5010 |
<p style="margin-top:0;margin-bottom:20px"> You are going to exhaust all your '.$string.'. You have only <b>'.$count.'</b> '.$string.' remaining. You can recharge or add '.$string.' to your account: <a href='.MoWpnsConstants::rechargeLink.'>Recharge</a></p>
|
handler/twofa/two_fa_utility.php
CHANGED
@@ -233,13 +233,51 @@ class MO2f_Utility {
|
|
233 |
|
234 |
public static function mo2f_set_transient( $session_id, $key, $value, $expiration = 300 ) {
|
235 |
set_transient($session_id.$key, $value, $expiration);
|
236 |
-
|
237 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
public static function mo2f_get_transient( $session_id, $key) {
|
239 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
return $transient_value;
|
|
|
|
|
|
|
241 |
}
|
|
|
|
|
|
|
|
|
242 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
/**
|
244 |
* The function returns the session variables, and if not, retrieves the cookie values set in case the right permissions are not aassigned for the sessions folder in the server.
|
245 |
*
|
@@ -351,11 +389,20 @@ class MO2f_Utility {
|
|
351 |
$key = get_option( 'mo2f_encryption_key' );
|
352 |
if ( isset( $_COOKIE[ $cookiename ] ) ) {
|
353 |
$decrypted_data = MO2f_Utility::decrypt_data( base64_decode( $_COOKIE[ $cookiename ] ), $key );
|
|
|
|
|
|
|
|
|
354 |
if ( $decrypted_data ) {
|
355 |
$decrypted_data_array = explode( '&', $decrypted_data );
|
356 |
|
357 |
$cookie_value = $decrypted_data_array[0];
|
358 |
-
$
|
|
|
|
|
|
|
|
|
|
|
359 |
$current_time = new DateTime( 'now' );
|
360 |
|
361 |
$interval = $cookie_creation_time->diff( $current_time );
|
@@ -372,7 +419,10 @@ class MO2f_Utility {
|
|
372 |
return false;
|
373 |
}
|
374 |
}
|
375 |
-
|
|
|
|
|
|
|
376 |
/**
|
377 |
* The function sets the cookie value after encryption and encoding.
|
378 |
*
|
@@ -391,7 +441,7 @@ class MO2f_Utility {
|
|
391 |
|
392 |
$cookievalue_encrypted = MO2f_Utility::encrypt_data( $cookievalue, $key );
|
393 |
// setcookie( $cookiename, base64_encode( $cookievalue_encrypted ) );
|
394 |
-
setcookie( $cookiename, base64_encode( $cookievalue_encrypted ),NULL,NULL,NULL,NULL, TRUE );
|
395 |
$_COOKIE[$cookiename] = base64_encode( $cookievalue_encrypted );
|
396 |
}
|
397 |
|
@@ -501,7 +551,8 @@ class MO2f_Utility {
|
|
501 |
"SecurityQuestions" => "Security Questions",
|
502 |
"EmailVerification" => "Email Verification",
|
503 |
"OTPOverSMS" => "OTP Over SMS",
|
504 |
-
"OTPOverEmail" => "OTP Over Email"
|
|
|
505 |
);
|
506 |
|
507 |
$server_2fa_methods = array(
|
@@ -514,7 +565,12 @@ class MO2f_Utility {
|
|
514 |
"Email Verification" => "OUT OF BAND EMAIL",
|
515 |
"OTP Over SMS" => "SMS",
|
516 |
"EMAIL" => "OTP Over Email",
|
517 |
-
"OTPOverEmail" => "OTP Over Email"
|
|
|
|
|
|
|
|
|
|
|
518 |
);
|
519 |
|
520 |
$server_to_wpdb_2fa_methods = array(
|
@@ -544,6 +600,11 @@ class MO2f_Utility {
|
|
544 |
return $methodname;
|
545 |
|
546 |
}
|
|
|
|
|
|
|
|
|
|
|
547 |
|
548 |
public static function get_plugin_name_by_identifier( $plugin_identitifier ){
|
549 |
$all_plugins = get_plugins();
|
@@ -590,8 +651,12 @@ class MO2f_Utility {
|
|
590 |
<p style="margin-top:0;margin-bottom:10px">You initiated a transaction from <b>WordPress 2 Factor Authentication Plugin</b>:</p>
|
591 |
<p style="margin-top:0;margin-bottom:10px">Your backup codes are:-
|
592 |
<table cellspacing="10">
|
593 |
-
<tr
|
594 |
-
|
|
|
|
|
|
|
|
|
595 |
<p style="margin-top:0;margin-bottom:10px">Please use this carefully as each code can only be used once. Please do not share these codes with anyone.</p>
|
596 |
<p style="margin-top:0;margin-bottom:10px">Also, we would highly recommend you to reconfigure your two-factor after logging in.</p>
|
597 |
<p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
|
@@ -638,18 +703,9 @@ class MO2f_Utility {
|
|
638 |
return $message;
|
639 |
}
|
640 |
|
641 |
-
public static function mo_2f_generate_backup_codes(){
|
642 |
-
$codes=array();
|
643 |
-
for ($x = 0; $x < 5; $x++) {
|
644 |
-
$str = MO2f_Utility::random_str(10);
|
645 |
-
array_push($codes,$str);
|
646 |
-
}
|
647 |
-
return $codes;
|
648 |
-
}
|
649 |
-
|
650 |
public static function mo2f_get_codes_hash($codes){
|
651 |
$codes_hash=array();
|
652 |
-
for ($x = 0; $x <
|
653 |
$str = $codes[$x];
|
654 |
array_push($codes_hash,md5($str));
|
655 |
}
|
@@ -668,8 +724,8 @@ class MO2f_Utility {
|
|
668 |
update_user_meta($id, 'mo_backup_code_downloaded', 1);
|
669 |
header('Content-Disposition: attachment; filename=miniOrange2-factor-BackupCodes.txt');
|
670 |
echo "Two Factor Backup Codes:".PHP_EOL.PHP_EOL;
|
671 |
-
echo "These are the codes
|
672 |
-
for ($x = 0; $x <
|
673 |
$str1= $codes[$x];
|
674 |
echo(($x+1).". ".$str1." ");
|
675 |
}
|
@@ -677,23 +733,39 @@ class MO2f_Utility {
|
|
677 |
exit;
|
678 |
}
|
679 |
|
680 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
681 |
|
682 |
|
683 |
public static function mo2f_mail_and_download_codes(){
|
684 |
-
|
685 |
-
|
686 |
-
$codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
|
687 |
$id = get_current_user_id();
|
688 |
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
|
689 |
if(empty($mo2f_user_email)){
|
690 |
$currentuser = get_user_by( 'id', $id );
|
691 |
$mo2f_user_email = $currentuser->user_email;
|
692 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
693 |
$result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
|
694 |
update_user_meta($id, 'mo_backup_code_generated', 1);
|
695 |
update_user_meta($id, 'mo_backup_code_downloaded', 1);
|
696 |
-
update_user_meta($id,'mo2f_backup_codes', $codes_hash);
|
697 |
MO2f_Utility::mo2f_download_backup_codes($id, $codes);
|
698 |
}
|
699 |
|
233 |
|
234 |
public static function mo2f_set_transient( $session_id, $key, $value, $expiration = 300 ) {
|
235 |
set_transient($session_id.$key, $value, $expiration);
|
236 |
+
$transient_array = get_site_option($session_id);
|
237 |
+
$transient_array[$key] = $value;
|
238 |
+
update_site_option($session_id, $transient_array);
|
239 |
+
MO2f_Utility::mo2f_set_session_value($session_id, $transient_array);
|
240 |
+
if(is_array($value))
|
241 |
+
$value = json_encode($value) ;
|
242 |
+
|
243 |
+
MO2f_Utility::mo2f_set_cookie_values(base64_encode($session_id),$value);
|
244 |
+
|
245 |
+
}
|
246 |
public static function mo2f_get_transient( $session_id, $key) {
|
247 |
+
MO2f_Utility::mo2f_start_session();
|
248 |
+
|
249 |
+
if(isset($_SESSION[$session_id])){
|
250 |
+
$transient_array = $_SESSION[$session_id];
|
251 |
+
$transient_value = isset($transient_array[$key]) ? $transient_array[$key] : null;
|
252 |
+
return $transient_value;
|
253 |
+
}else if(isset($_COOKIE[base64_decode($session_id)])){
|
254 |
+
$transient_value = MO2f_Utility::mo2f_get_cookie_values(base64_decode($session_id));
|
255 |
+
return $transient_value;
|
256 |
+
}else{
|
257 |
+
$transient_value = get_transient($session_id.$key);
|
258 |
+
if(!$transient_value){
|
259 |
+
$transient_array = get_site_option($session_id);
|
260 |
+
$transient_value = isset($transient_array[$key]) ? $transient_array[$key] : null;
|
261 |
+
}
|
262 |
return $transient_value;
|
263 |
+
}
|
264 |
+
|
265 |
+
|
266 |
}
|
267 |
+
public static function mo2f_set_session_value($session_id, $transient_array){
|
268 |
+
MO2f_Utility::mo2f_start_session();
|
269 |
+
$_SESSION[ $session_id ] = $transient_array ;
|
270 |
+
}
|
271 |
|
272 |
+
public static function mo2f_start_session() {
|
273 |
+
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
274 |
+
$session_path = ini_get('session.save_path');
|
275 |
+
if( is_writable($session_path) && is_readable($session_path) && !headers_sent() ) {
|
276 |
+
if(session_status() != PHP_SESSION_DISABLED )
|
277 |
+
session_start();
|
278 |
+
}
|
279 |
+
}
|
280 |
+
}
|
281 |
/**
|
282 |
* The function returns the session variables, and if not, retrieves the cookie values set in case the right permissions are not aassigned for the sessions folder in the server.
|
283 |
*
|
389 |
$key = get_option( 'mo2f_encryption_key' );
|
390 |
if ( isset( $_COOKIE[ $cookiename ] ) ) {
|
391 |
$decrypted_data = MO2f_Utility::decrypt_data( base64_decode( $_COOKIE[ $cookiename ] ), $key );
|
392 |
+
|
393 |
+
if(MO2f_Utility::isJSON($decrypted_data))
|
394 |
+
$decrypted_data = json_decode($decrypted_data);
|
395 |
+
|
396 |
if ( $decrypted_data ) {
|
397 |
$decrypted_data_array = explode( '&', $decrypted_data );
|
398 |
|
399 |
$cookie_value = $decrypted_data_array[0];
|
400 |
+
if(sizeof($decrypted_data_array) == 2 ){
|
401 |
+
$cookie_creation_time = new DateTime( $decrypted_data_array[1] );
|
402 |
+
}else{
|
403 |
+
$cookie_creation_time = new DateTime( array_pop($decrypted_data_array) );
|
404 |
+
$cookie_value = implode('&', $decrypted_data_array);
|
405 |
+
}
|
406 |
$current_time = new DateTime( 'now' );
|
407 |
|
408 |
$interval = $cookie_creation_time->diff( $current_time );
|
419 |
return false;
|
420 |
}
|
421 |
}
|
422 |
+
|
423 |
+
public static function isJSON($string){
|
424 |
+
return is_string($string) && is_array(json_decode($string, true)) ? true : false;
|
425 |
+
}
|
426 |
/**
|
427 |
* The function sets the cookie value after encryption and encoding.
|
428 |
*
|
441 |
|
442 |
$cookievalue_encrypted = MO2f_Utility::encrypt_data( $cookievalue, $key );
|
443 |
// setcookie( $cookiename, base64_encode( $cookievalue_encrypted ) );
|
444 |
+
// setcookie( $cookiename, base64_encode( $cookievalue_encrypted ),NULL,NULL,NULL,NULL, TRUE );
|
445 |
$_COOKIE[$cookiename] = base64_encode( $cookievalue_encrypted );
|
446 |
}
|
447 |
|
551 |
"SecurityQuestions" => "Security Questions",
|
552 |
"EmailVerification" => "Email Verification",
|
553 |
"OTPOverSMS" => "OTP Over SMS",
|
554 |
+
"OTPOverEmail" => "OTP Over Email",
|
555 |
+
"DuoAuthenticator" => "Duo Authenticator"
|
556 |
);
|
557 |
|
558 |
$server_2fa_methods = array(
|
565 |
"Email Verification" => "OUT OF BAND EMAIL",
|
566 |
"OTP Over SMS" => "SMS",
|
567 |
"EMAIL" => "OTP Over Email",
|
568 |
+
"OTPOverEmail" => "OTP Over Email",
|
569 |
+
"Duo Authenticator" => "Duo Authenticator",
|
570 |
+
"DUO AUTHENTICATOR" => "Duo Authenticator",
|
571 |
+
"OTP Over Email" => "EMAIL",
|
572 |
+
"OTP OVER EMAIL" => "EMAIL"
|
573 |
+
|
574 |
);
|
575 |
|
576 |
$server_to_wpdb_2fa_methods = array(
|
600 |
return $methodname;
|
601 |
|
602 |
}
|
603 |
+
public static function is_same_method($method,$current_method){
|
604 |
+
if($method == $current_method || $method == MO2f_Utility::mo2f_decode_2_factor($current_method,'wpdb') || $method == MO2f_Utility::mo2f_decode_2_factor($current_method,'') || MO2f_Utility::mo2f_decode_2_factor($current_method,'server') == $method)
|
605 |
+
return true;
|
606 |
+
return false;
|
607 |
+
}
|
608 |
|
609 |
public static function get_plugin_name_by_identifier( $plugin_identitifier ){
|
610 |
$all_plugins = get_plugins();
|
651 |
<p style="margin-top:0;margin-bottom:10px">You initiated a transaction from <b>WordPress 2 Factor Authentication Plugin</b>:</p>
|
652 |
<p style="margin-top:0;margin-bottom:10px">Your backup codes are:-
|
653 |
<table cellspacing="10">
|
654 |
+
<tr>';
|
655 |
+
for ($x = 0; $x < sizeof($codes); $x++) {
|
656 |
+
$message = $message.'<td>'.$codes[$x].'</td>';
|
657 |
+
|
658 |
+
}
|
659 |
+
$message = $message.'</table></p>
|
660 |
<p style="margin-top:0;margin-bottom:10px">Please use this carefully as each code can only be used once. Please do not share these codes with anyone.</p>
|
661 |
<p style="margin-top:0;margin-bottom:10px">Also, we would highly recommend you to reconfigure your two-factor after logging in.</p>
|
662 |
<p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
|
703 |
return $message;
|
704 |
}
|
705 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
706 |
public static function mo2f_get_codes_hash($codes){
|
707 |
$codes_hash=array();
|
708 |
+
for ($x = 0; $x < sizeof($codes); $x++) {
|
709 |
$str = $codes[$x];
|
710 |
array_push($codes_hash,md5($str));
|
711 |
}
|
724 |
update_user_meta($id, 'mo_backup_code_downloaded', 1);
|
725 |
header('Content-Disposition: attachment; filename=miniOrange2-factor-BackupCodes.txt');
|
726 |
echo "Two Factor Backup Codes:".PHP_EOL.PHP_EOL;
|
727 |
+
echo "These are the codes that can be used in case you lose your phone or cannot access your email. Please reconfigure your authentication method after login.".PHP_EOL."Please use this carefully as each code can only be used once. Please do not share these codes with anyone..".PHP_EOL.PHP_EOL;
|
728 |
+
for ($x = 0; $x < sizeof($codes); $x++){
|
729 |
$str1= $codes[$x];
|
730 |
echo(($x+1).". ".$str1." ");
|
731 |
}
|
733 |
exit;
|
734 |
}
|
735 |
|
736 |
+
public static function mo2f_debug_file($text){
|
737 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_enable_debug_log', 'site_option') == 1){
|
738 |
+
$debug_log_path = wp_upload_dir();
|
739 |
+
$debug_log_path = $debug_log_path['basedir'].DIRECTORY_SEPARATOR;
|
740 |
+
$filename = 'miniorange_debug_log.txt';
|
741 |
+
$data = '[' . date("Y/m/d").' '. time().']:'.$text."\n";
|
742 |
+
$handle = fopen($debug_log_path.DIRECTORY_SEPARATOR.$filename,'a+');
|
743 |
+
fwrite($handle,$data);
|
744 |
+
fclose($handle);
|
745 |
+
}
|
746 |
+
}
|
747 |
|
748 |
|
749 |
public static function mo2f_mail_and_download_codes(){
|
750 |
+
global $Mo2fdbQueries;
|
751 |
+
|
|
|
752 |
$id = get_current_user_id();
|
753 |
$mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
|
754 |
if(empty($mo2f_user_email)){
|
755 |
$currentuser = get_user_by( 'id', $id );
|
756 |
$mo2f_user_email = $currentuser->user_email;
|
757 |
}
|
758 |
+
$generate_backup_code = new Customer_Cloud_Setup();
|
759 |
+
$codes=$generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
|
760 |
+
|
761 |
+
if($codes == 'LimitReached'|| $codes == 'UserLimitReached' || $codes == 'AllUsed' || $codes == 'invalid_request')
|
762 |
+
return $codes;
|
763 |
+
|
764 |
+
$codes = explode(' ', $codes);
|
765 |
+
$codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
|
766 |
$result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
|
767 |
update_user_meta($id, 'mo_backup_code_generated', 1);
|
768 |
update_user_meta($id, 'mo_backup_code_downloaded', 1);
|
|
|
769 |
MO2f_Utility::mo2f_download_backup_codes($id, $codes);
|
770 |
}
|
771 |
|
handler/user-profile-2fa-update.php
ADDED
@@ -0,0 +1,213 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if(isset($_POST['method']))
|
3 |
+
$method = sanitize_text_field($_POST['method']);
|
4 |
+
else
|
5 |
+
return;
|
6 |
+
global $Mo2fdbQueries;
|
7 |
+
$email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user);
|
8 |
+
$method = MO2f_Utility::mo2f_decode_2_factor($method,'wpdb');
|
9 |
+
$email = ($email=='')?filter_var($_POST['email'], FILTER_SANITIZE_EMAIL):$email;
|
10 |
+
$enduser = new Two_Factor_Setup();
|
11 |
+
if(isset($_POST['verify_phone']))
|
12 |
+
$phone = strlen($_POST['verify_phone']>4)?sanitize_text_field($_POST['verify_phone']):null;
|
13 |
+
else
|
14 |
+
$phone = null;
|
15 |
+
$response = json_decode( $enduser->mo2f_update_userinfo( $email,MO2f_Utility::mo2f_decode_2_factor($method,'server') , $phone, null, null ), true );
|
16 |
+
if($response['status']!= 'SUCCESS')
|
17 |
+
return;
|
18 |
+
$id = get_current_user_id();
|
19 |
+
$method = MO2f_Utility::mo2f_decode_2_factor($method,'wpdb');
|
20 |
+
switch ($method) {
|
21 |
+
case "miniOrange QR Code Authentication":
|
22 |
+
case "miniOrange Push Notification":
|
23 |
+
case "miniOrange Soft Token":
|
24 |
+
if($id != $user){
|
25 |
+
send_reconfiguration_on_email($email,$user,$method);
|
26 |
+
}else if($_POST['mo2f_configuration_status']!='SUCCESS')
|
27 |
+
return;
|
28 |
+
delete_user_meta( $user, 'configure_2FA' );
|
29 |
+
update_user_meta($user,'mo2f_2FA_method_to_configure',$method);
|
30 |
+
$Mo2fdbQueries->update_user_details($user, array(
|
31 |
+
'mobile_registration_status' =>true,
|
32 |
+
'mo2f_miniOrangeQRCodeAuthentication_config_status' => true,
|
33 |
+
'mo2f_miniOrangeSoftToken_config_status' => true,
|
34 |
+
'mo2f_miniOrangePushNotification_config_status' => true,
|
35 |
+
"mo2f_configured_2FA_method" => $method,
|
36 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
37 |
+
'mo2f_2factor_enable_2fa_byusers'=> '1',
|
38 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
39 |
+
) );
|
40 |
+
break;
|
41 |
+
case "Google Authenticator":
|
42 |
+
if($id!= $user){
|
43 |
+
send_reconfiguration_on_email($email,$user,$method);
|
44 |
+
}else if($_POST['mo2f_configuration_status']!='SUCCESS')
|
45 |
+
return;
|
46 |
+
$Mo2fdbQueries->update_user_details( $user, array(
|
47 |
+
'mo2f_GoogleAuthenticator_config_status' => true,
|
48 |
+
'mo2f_configured_2FA_method' => 'Google Authenticator',
|
49 |
+
'mo2f_AuthyAuthenticator_config_status' => false,
|
50 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
51 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
52 |
+
'mo2f_2factor_enable_2fa_byusers' => 1,
|
53 |
+
'mo2f_user_email' => $email
|
54 |
+
) );
|
55 |
+
if(!MO2F_IS_ONPREM){
|
56 |
+
update_user_meta( $user ,'mo2f_external_app_type', "Google Authenticator" );
|
57 |
+
}
|
58 |
+
break;
|
59 |
+
case "Authy Authenticator":
|
60 |
+
if($id!= $user){
|
61 |
+
send_reconfiguration_on_email($email,$user,$method);
|
62 |
+
}else if($_POST['mo2f_configuration_status']!='SUCCESS')
|
63 |
+
return;
|
64 |
+
$Mo2fdbQueries->update_user_details( $user, array(
|
65 |
+
'mo2f_GoogleAuthenticator_config_status' => false,
|
66 |
+
'mo2f_configured_2FA_method' => 'Authy Authenticator',
|
67 |
+
'mo2f_AuthyAuthenticator_config_status' => true,
|
68 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
69 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
70 |
+
'mo2f_2factor_enable_2fa_byusers' => 1,
|
71 |
+
'mo2f_user_email' => $email
|
72 |
+
) );
|
73 |
+
if(!MO2F_IS_ONPREM){
|
74 |
+
update_user_meta( $user ,'mo2f_external_app_type', "Authy Authenticator" );
|
75 |
+
}
|
76 |
+
break;
|
77 |
+
case "OTP Over SMS":
|
78 |
+
$Mo2fdbQueries->update_user_details($user, array(
|
79 |
+
"mo2f_configured_2FA_method" => 'OTP Over SMS',
|
80 |
+
'mo2f_OTPOverSMS_config_status' => true,
|
81 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
82 |
+
'mo2f_2factor_enable_2fa_byusers'=> '1',
|
83 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
84 |
+
) );
|
85 |
+
break;
|
86 |
+
case "Security Questions":
|
87 |
+
$obj = new Miniorange_Authentication();
|
88 |
+
$kba_q1 = sanitize_text_field($_POST['mo2f_kbaquestion_1']);
|
89 |
+
$kba_a1 = sanitize_text_field( $_POST['mo2f_kba_ans1'] );
|
90 |
+
$kba_q2 = sanitize_text_field($_POST['mo2f_kbaquestion_2']);
|
91 |
+
$kba_a2 = sanitize_text_field( $_POST['mo2f_kba_ans2'] );
|
92 |
+
$kba_q3 = sanitize_text_field( $_POST['mo2f_kbaquestion_3'] );
|
93 |
+
$kba_a3 = sanitize_text_field( $_POST['mo2f_kba_ans3'] );
|
94 |
+
|
95 |
+
$kba_q1 = addcslashes( stripslashes( $kba_q1 ), '"\\' );
|
96 |
+
$kba_q2 = addcslashes( stripslashes( $kba_q2 ), '"\\' );
|
97 |
+
$kba_q3 = addcslashes( stripslashes( $kba_q3 ), '"\\' );
|
98 |
+
|
99 |
+
$kba_a1 = addcslashes( stripslashes( $kba_a1 ), '"\\' );
|
100 |
+
$kba_a2 = addcslashes( stripslashes( $kba_a2 ), '"\\' );
|
101 |
+
$kba_a3 = addcslashes( stripslashes( $kba_a3 ), '"\\' );
|
102 |
+
if ( MO2f_Utility::mo2f_check_empty_or_null( $kba_q1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q2 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a2) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q3) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a3) ) {
|
103 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "INVALID_ENTRY" ) );
|
104 |
+
return;
|
105 |
+
}
|
106 |
+
|
107 |
+
if ( strcasecmp( $kba_q1, $kba_q2 ) == 0 || strcasecmp( $kba_q2, $kba_q3 ) == 0 || strcasecmp( $kba_q3, $kba_q1 ) == 0 ) {
|
108 |
+
update_option( 'mo2f_message', 'The questions you select must be unique.' );
|
109 |
+
return;
|
110 |
+
}
|
111 |
+
$kba_registration = new Two_Factor_Setup();
|
112 |
+
$kba_reg_reponse = json_decode( $kba_registration->register_kba_details( $email, $kba_q1, $kba_a1, $kba_q2, $kba_a2, $kba_q3, $kba_a3, $user ), true );
|
113 |
+
|
114 |
+
if ( json_last_error() == JSON_ERROR_NONE ) {
|
115 |
+
if ( $response['status'] == 'SUCCESS' ) {
|
116 |
+
$Mo2fdbQueries->update_user_details( $user, array(
|
117 |
+
'mo2f_configured_2FA_method' => 'Security Questions' ,
|
118 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
119 |
+
'mo2f_SecurityQuestions_config_status' => true,
|
120 |
+
'mo2f_2factor_enable_2fa_byusers'=> '1',
|
121 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
122 |
+
), true);
|
123 |
+
|
124 |
+
}else {
|
125 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "ERROR_DURING_PROCESS" ) );
|
126 |
+
$obj->mo_auth_show_error_message();
|
127 |
+
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
break;
|
132 |
+
case "OTP Over Email":
|
133 |
+
$Mo2fdbQueries->update_user_details($user, array(
|
134 |
+
"mo2f_configured_2FA_method" => 'OTP Over Email',
|
135 |
+
'mo2f_OTPOverEmail_config_status' => true,
|
136 |
+
'mo2f_user_email' => $email,
|
137 |
+
'mo2f_2factor_enable_2fa_byusers'=> '1',
|
138 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
139 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
140 |
+
) );
|
141 |
+
delete_user_meta( $user, 'configure_2FA');
|
142 |
+
delete_user_meta( $user, 'test_2FA');
|
143 |
+
break;
|
144 |
+
case "Email Verification":
|
145 |
+
$Mo2fdbQueries->update_user_details($user, array(
|
146 |
+
"mo2f_configured_2FA_method" => 'Email Verification',
|
147 |
+
'mo2f_user_email' => $email,
|
148 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
149 |
+
'mo2f_2factor_enable_2fa_byusers'=> '1',
|
150 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
151 |
+
'mo2f_EmailVerification_config_status' => true
|
152 |
+
) );
|
153 |
+
break;
|
154 |
+
}
|
155 |
+
if(isset($_POST['mo2fa_count']) && sanitize_text_field($_POST['mo2fa_count']) != '1')
|
156 |
+
update_option('mo2fa_userProfile_method',$method);
|
157 |
+
function send_reconfiguration_on_email($email,$user,$method){
|
158 |
+
global $mo2f_dirName;
|
159 |
+
$method = MO2f_Utility::mo2f_decode_2_factor($method,'server');
|
160 |
+
$reconfiguraion_method = hash('sha512',$method);
|
161 |
+
update_site_option($reconfiguraion_method,$method);
|
162 |
+
$txid = bin2hex(openssl_random_pseudo_bytes(32));
|
163 |
+
update_site_option($txid, get_current_user_id());
|
164 |
+
update_user_meta($user,'mo2f_EV_txid',$txid);
|
165 |
+
$subject = '2fa-reconfiguration : Scan QR';
|
166 |
+
$headers = array('Content-Type: text/html; charset=UTF-8');
|
167 |
+
update_option('mo2fa_reconfiguration_via_email',json_encode(array($user,$email,$method)));
|
168 |
+
$path = plugins_url(DIRECTORY_SEPARATOR. 'views'.DIRECTORY_SEPARATOR. 'qr_over_email.php',dirname( __FILE__ )).'?email='.$email.'&user_id='.$user_id;
|
169 |
+
$url = get_site_option('siteurl').'/wp-login.php?';
|
170 |
+
$path = $url.'&reconfigureMethod='.$reconfiguraion_method.'&transactionId='.$txid;
|
171 |
+
$message = '
|
172 |
+
<table>
|
173 |
+
<tbody>
|
174 |
+
<tr>
|
175 |
+
<td>
|
176 |
+
<table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
|
177 |
+
<tbody>
|
178 |
+
<tr>
|
179 |
+
<td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
|
180 |
+
</tr>
|
181 |
+
</tbody>
|
182 |
+
</table>
|
183 |
+
<table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
|
184 |
+
<tbody>
|
185 |
+
<tr>
|
186 |
+
<td>
|
187 |
+
<input type="hidden" name="user_id" id="user_id" value="'.$user_id.'">
|
188 |
+
<input type="hidden" name="email" id="email" value="'.$email.'">
|
189 |
+
<p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
|
190 |
+
<p style="margin-top:0;margin-bottom:10px">Please scan the QR code from given link to set <b>2FA method</b>:</p>
|
191 |
+
<p><a href="'.$path.'" > Click to reconfigure 2nd factor</a></p>
|
192 |
+
<p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
|
193 |
+
<p style="margin-top:0;margin-bottom:0px;font-size:11px">Disclaimer: This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.</p>
|
194 |
+
</div></div></td>
|
195 |
+
</tr>
|
196 |
+
</tbody>
|
197 |
+
</table>
|
198 |
+
</td>
|
199 |
+
</tr>
|
200 |
+
</tbody>
|
201 |
+
</table>';
|
202 |
+
$result = wp_mail($email,$subject,$message,$headers);
|
203 |
+
if($result){
|
204 |
+
update_site_option( 'mo2f_message', 'A OTP has been sent to you on' .'<b> ' . $email . '</b>. ' . Mo2fConstants::langTranslate("ACCEPT_LINK_TO_VERIFY_EMAIL"));
|
205 |
+
$arr = array('status' => 'SUCCESS','message'=>'Successfully validated.' ,'txId' => '' );
|
206 |
+
|
207 |
+
}else{
|
208 |
+
$arr = array('status' => 'FAILED','message'=>'TEST FAILED.');
|
209 |
+
update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("ERROR_DURING_PROCESS_EMAIL"));
|
210 |
+
}
|
211 |
+
$content = json_encode($arr);
|
212 |
+
}
|
213 |
+
?>
|
handler/user-profile-2fa.php
ADDED
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$is_registered = empty(get_option('mo2f_customerkey'))?false:true;
|
3 |
+
$role = $user->roles;
|
4 |
+
$roles = ( array ) $user->roles;
|
5 |
+
$flag = 0;
|
6 |
+
foreach ( $roles as $role ) {
|
7 |
+
if(get_option('mo2fa_'.$role)=='1')
|
8 |
+
$flag=1;
|
9 |
+
}
|
10 |
+
if(!current_user_can( 'administrator', $user->ID) || (!MO2F_IS_ONPREM && !$is_registered) || $flag==0)
|
11 |
+
return;
|
12 |
+
else if(!MO2F_IS_ONPREM && !$is_registered)
|
13 |
+
return;
|
14 |
+
$cloud_methods = array("miniOrange QR Code Authentication", "miniOrange Soft Token","miniOrange Push Notification","OTP Over SMS");
|
15 |
+
$id = get_current_user_id();
|
16 |
+
$available_methods = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option')?get_site_option('mo2fa_free_plan_new_user_methods'):get_site_option('mo2fa_free_plan_existing_user_methods');
|
17 |
+
if(!$available_methods)
|
18 |
+
return;
|
19 |
+
$transient_id = MO2f_Utility::random_str(20);
|
20 |
+
|
21 |
+
MO2f_Utility::mo2f_set_transient($transient_id, 'mo2f_user_id', $user->ID);
|
22 |
+
$same_user = $user->ID == $id?true:false;
|
23 |
+
global $Mo2fdbQueries;
|
24 |
+
$current_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$user->ID);
|
25 |
+
if($current_method == "miniOrange QR Code Authentication" || $current_method == "miniOrange Soft Token" || $current_method == "miniOrange Push Notification")
|
26 |
+
$current_method = "miniOrange Authenticator";
|
27 |
+
$twofactor_transactions = new Mo2fDB;
|
28 |
+
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user->ID);
|
29 |
+
if($exceeded){
|
30 |
+
return;
|
31 |
+
}
|
32 |
+
$user_column_exists = $Mo2fdbQueries->check_if_user_column_exists( $user->ID );
|
33 |
+
$email=$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
34 |
+
if($email == ''){
|
35 |
+
$Mo2fdbQueries->update_user_details($user->ID,array('mo2f_user_email'=>$user->user_email));
|
36 |
+
}
|
37 |
+
$email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ):$user->user_email;
|
38 |
+
$pass_2fa_login_session = new Miniorange_Password_2Factor_Login();
|
39 |
+
if(!$user_column_exists){
|
40 |
+
$Mo2fdbQueries->insert_user( $user->ID );
|
41 |
+
$content = $pass_2fa_login_session->create_user_in_miniOrange($user->ID,$email,'SOFT TOKEN');
|
42 |
+
}
|
43 |
+
$registerMobile = new Two_Factor_Setup();
|
44 |
+
$content = $registerMobile->register_mobile($email);
|
45 |
+
update_user_meta($user->ID,'registered_mobile',$content);
|
46 |
+
$two_factor_methods_descriptions = array(
|
47 |
+
"miniOrange QR Code Authentication" => "Scan the QR code from the account in your miniOrange Authenticator App to login.",
|
48 |
+
"miniOrange Authenticator" => "Scan the QR code from the account in your miniOrange Authenticator App to login.",
|
49 |
+
"miniOrange Soft Token" => "Enter the soft token from the account in your miniOrange Authenticator App to login.",
|
50 |
+
"miniOrange Push Notification" => "Accept a push notification in your miniOrange Authenticator App to login.",
|
51 |
+
"Google Authenticator" => "Enter the soft token from the account in your Google Authenticator App to login.",
|
52 |
+
"Security Questions" => "Answer the three security questions you had set, to login.",
|
53 |
+
"OTP Over SMS" => "Enter the One Time Passcode sent to your phone to login.",
|
54 |
+
"Authy Authenticator" => "Enter the soft token from the account in your Authy Authenticator App to login.",
|
55 |
+
"OTP Over Email" => "Enter the One Time Passcode sent to your email to login.",
|
56 |
+
"Email Verification" => "Accept the verification link sent to your email to login.",
|
57 |
+
"OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
|
58 |
+
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login."
|
59 |
+
);
|
60 |
+
global $mainDir;
|
61 |
+
wp_enqueue_style( 'mo2f_user-profile_style', $mainDir.'/includes/css/user-profile.css');
|
62 |
+
?>
|
63 |
+
<h3><?php esc_html_e( 'Set 2-Factor Authentication', 'miniorange 2-factor-authentication' ); ?></h3>
|
64 |
+
<table class="form-table" id="mo2fa_form-table-user-profile">
|
65 |
+
<tr>
|
66 |
+
<th style="text-align: left;">
|
67 |
+
<?php echo mo2f_lt( '2-Factor Options' ); ?>
|
68 |
+
</th>
|
69 |
+
<td>
|
70 |
+
<form name="f" method="post" action="" id="mo2f_update_2fa">
|
71 |
+
<div class="mo2fa_tab">
|
72 |
+
<?php foreach ( $two_factor_methods_descriptions as $method => $description ){
|
73 |
+
if(in_array($method, $available_methods)){
|
74 |
+
$trimmed_method = str_replace(' ','',$method);?>
|
75 |
+
<button class="mo2fa_tablinks" type="button"
|
76 |
+
<?php if((!empty($current_method) && MO2f_Utility::is_same_method($method,$current_method)) || (empty($current_method) && MO2f_Utility::is_same_method($method,'miniOrange Authenticator')) ){?>
|
77 |
+
id="defaultOpen"
|
78 |
+
<?php }?>
|
79 |
+
onclick='mo2fa_viewMethod(event, "<?php echo esc_attr( $trimmed_method );?>")'><?php echo esc_attr( $method );?>
|
80 |
+
</button>
|
81 |
+
<?php }}?>
|
82 |
+
</div>
|
83 |
+
</form>
|
84 |
+
<?php foreach ( $two_factor_methods_descriptions as $method => $description ){
|
85 |
+
if(in_array($method, $available_methods)){
|
86 |
+
$trimmed_method = str_replace(' ','',$method);?>
|
87 |
+
<div id="<?php echo esc_attr( $trimmed_method );?>" class="mo2fa_tabcontent">
|
88 |
+
<p><?php echo esc_attr( $description );?></p>
|
89 |
+
<p><?php methods_on_user_profile($method,$user,$transient_id);?></p>
|
90 |
+
</div>
|
91 |
+
<?php }}?>
|
92 |
+
</td>
|
93 |
+
</tr>
|
94 |
+
</table>
|
95 |
+
<div id="wpns_nav_message"></div>
|
96 |
+
<input type="hidden" name="MO2F_IS_ONPREM" value="<?php echo MO2F_IS_ONPREM;?>">
|
97 |
+
<input type="hidden" name="same_user" value="<?php echo $same_user;?>">
|
98 |
+
<input type="hidden" name="is_registered" value="<?php echo $is_registered;?>">
|
99 |
+
<input type="hidden" name="mo2f-update-mobile-nonce" value="<?php echo wp_create_nonce("mo2f-update-mobile-nonce");?>">
|
100 |
+
<input type="hidden" name="mo2fa_count" id="mo2fa_count" value="1">
|
101 |
+
<input type="hidden" name="transient_id" value="<?php echo $transient_id;?>">
|
102 |
+
<input type="hidden" name='method' id="method" value="NONE">
|
103 |
+
<input type="hidden" name='mo2f_configuration_status' id="mo2f_configuration_status" value="Configuration">
|
104 |
+
<?php
|
105 |
+
wp_enqueue_script( 'user-profile-2fa-script', $mainDir.'/includes/js/user-profile-twofa.js');
|
106 |
+
|
107 |
+
function methods_on_user_profile($method,$user,$transient_id){
|
108 |
+
global $Mo2fdbQueries,$mainDir;
|
109 |
+
$email=$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
110 |
+
$pass_2fa_login_session = new Miniorange_Password_2Factor_Login();
|
111 |
+
$trimmed_method = str_replace(' ','',$method);
|
112 |
+
$is_registered = get_option('mo2f_customerkey');
|
113 |
+
$id = get_current_user_id();
|
114 |
+
if($email == ''){
|
115 |
+
$Mo2fdbQueries->update_user_details($user->ID,array('mo2f_user_email'=>$user->user_email));
|
116 |
+
}
|
117 |
+
$email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ):$user->user_email;
|
118 |
+
switch($method){
|
119 |
+
case "miniOrange Authenticator":
|
120 |
+
if(!$is_registered){
|
121 |
+
$message = "Please register with miniOrange for using this method.";
|
122 |
+
echo mo2f_lt( $message );
|
123 |
+
}
|
124 |
+
else{
|
125 |
+
?>
|
126 |
+
<div id="mo2fa_display_mo_methods">
|
127 |
+
<h4 class="mo2fa_select_method">
|
128 |
+
Select Authentication method :
|
129 |
+
</h4>
|
130 |
+
<input type="button" name="mo2f_method" id="miniOrangeSoftTokenButton" class="mo2f_miniAuthApp" value="Soft Token" />
|
131 |
+
<input type="button" name="mo2f_method" id="miniOrangeQRCodeAuthenticationButton" class="mo2f_miniAuthApp" value="QR Code Authentication" />
|
132 |
+
<input type="button" name="mo2f_method" id="miniOrangePushNotificationButton" class="mo2f_miniAuthApp" value="Push Notification" />
|
133 |
+
</div>
|
134 |
+
<?php
|
135 |
+
if($id == $user->ID)
|
136 |
+
{
|
137 |
+
$content = get_user_meta($user->ID,'registered_mobile',true);
|
138 |
+
$response = json_decode($content, true);
|
139 |
+
$message = '';
|
140 |
+
|
141 |
+
if(json_last_error() == JSON_ERROR_NONE) {
|
142 |
+
if($response['status'] == 'ERROR'){
|
143 |
+
$mo_qr_details['message'] = Mo2fConstants::langTranslate($response['message']);
|
144 |
+
delete_user_meta( $user->ID, 'miniorageqr' );
|
145 |
+
}else{
|
146 |
+
if($response['status'] == 'IN_PROGRESS'){
|
147 |
+
|
148 |
+
$mo_qr_details['message'] = '';
|
149 |
+
$mo_qr_details['mo2f-login-qrCode']=$response['qrCode'];
|
150 |
+
update_user_meta($user->ID,'miniorageqr',$mo_qr_details);
|
151 |
+
}else{
|
152 |
+
$mo_qr_details['message'] = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
|
153 |
+
delete_user_meta( $user->ID, 'miniorageqr' );
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}
|
157 |
+
?>
|
158 |
+
|
159 |
+
<div class="mcol-2" id='mo2f_qrcode'>
|
160 |
+
<table class="mo2f_settings_table">
|
161 |
+
<br><?php
|
162 |
+
echo (isset($mo_qr_details['mo2f-login-qrCode'])?'<img style="width:165px;" src="data:image/jpg;base64,' .$mo_qr_details['mo2f-login-qrCode']. '" />':'Please register with miniOrange for using this method') ;
|
163 |
+
?>
|
164 |
+
</table>
|
165 |
+
<?php
|
166 |
+
if(isset($mo_qr_details['mo2f-login-qrCode'])){
|
167 |
+
?>
|
168 |
+
<form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
|
169 |
+
|
170 |
+
<table id="mo2f_setup_mo_methods">
|
171 |
+
<td class="bg-none"><?php echo mo2f_lt( 'Enter Code:' )?></td>
|
172 |
+
<td><input type="tel" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="mo_qr_auth_code" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="" pattern="[0-9]{4,8}" title="<?php echo mo2f_lt('Enter OTP:'); ?>"/></td>
|
173 |
+
<td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save_qr" class="button button1" ><?php echo mo2f_lt( 'Verify and Save' ); ?></a></td>
|
174 |
+
</table>
|
175 |
+
|
176 |
+
</form>
|
177 |
+
<?php } ?>
|
178 |
+
</div>
|
179 |
+
|
180 |
+
<?php
|
181 |
+
}
|
182 |
+
else{
|
183 |
+
$message= "Link to reconfigure 2nd factor will be sent to ".$email;
|
184 |
+
echo mo2f_lt( $message );
|
185 |
+
}
|
186 |
+
}
|
187 |
+
break;
|
188 |
+
case "Authy Authenticator":
|
189 |
+
case "Google Authenticator":
|
190 |
+
if($user->ID == $id){
|
191 |
+
if(MO2F_IS_ONPREM){
|
192 |
+
include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'twofa'. DIRECTORY_SEPARATOR. 'gaonprem.php';
|
193 |
+
$gauth_obj= new Google_auth_onpremise();
|
194 |
+
|
195 |
+
$ga_secret = $gauth_obj->createSecret();
|
196 |
+
$issuer = get_site_option( 'mo2f_GA_account_name', 'miniOrangeAu' );
|
197 |
+
$url = $gauth_obj->geturl( $ga_secret, $issuer, $email );
|
198 |
+
$mo2f_google_auth = array('ga_qrCode'=> $url,'ga_secret'=>$ga_secret);
|
199 |
+
update_user_meta( $user->ID, 'mo2f_google_auth', json_encode( $mo2f_google_auth ) );
|
200 |
+
$otpcode = $gauth_obj->getCode($ga_secret);
|
201 |
+
$data = isset($mo2f_google_auth) ? $mo2f_google_auth['ga_qrCode'] : null;
|
202 |
+
wp_enqueue_script( 'mo_wpns_qrcode_script', $mainDir.'/includes/jquery-qrcode/jquery-qrcode.js' );
|
203 |
+
wp_enqueue_script( 'mo_wpns_min_qrcode_script', $mainDir.'/includes/jquery-qrcode/jquery-qrcode.min.js');
|
204 |
+
echo '<div class="mo2f_gauth_column mo2f_gauth_left" >';
|
205 |
+
echo '<div class="mo2f_gauth" data-qrcode='.$data.'></div>';
|
206 |
+
echo '</div>';
|
207 |
+
}else{
|
208 |
+
if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
|
209 |
+
Miniorange_Authentication::mo2f_get_GA_parameters($user);
|
210 |
+
}
|
211 |
+
$mo2f_google_auth = get_user_meta($user->ID, 'mo2f_google_auth', true);
|
212 |
+
$data = isset($mo2f_google_auth['ga_qrCode']) ? $mo2f_google_auth['ga_qrCode'] : null;
|
213 |
+
$ga_secret = isset($mo2f_google_auth['ga_secret']) ? $mo2f_google_auth['ga_secret'] : null;
|
214 |
+
echo '<br><div id="displayQrCode">
|
215 |
+
<img id="mo2f_gauth" style="line-height: 0;background:white;" src="data:image/jpg;base64,' . $data . '" />
|
216 |
+
</div>';
|
217 |
+
}
|
218 |
+
?>
|
219 |
+
|
220 |
+
<div class="mcol-2">
|
221 |
+
<br>
|
222 |
+
<form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
|
223 |
+
|
224 |
+
<table id="mo2f_setup_ga">
|
225 |
+
<td class="bg-none"><?php echo mo2f_lt( 'Enter Code:' )?></td>
|
226 |
+
<td><input type="tel" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="google_auth_code" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="" pattern="[0-9]{4,8}" title="<?php echo mo2f_lt('Enter OTP:'); ?>"/></td>
|
227 |
+
<td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save_GA" class="button button1" ><?php echo mo2f_lt( 'Verify and Save' ); ?></a></td>
|
228 |
+
</table>
|
229 |
+
|
230 |
+
<input type="hidden" name="ga_secret" value="<?php echo $ga_secret;?>">
|
231 |
+
</form>
|
232 |
+
|
233 |
+
</div>
|
234 |
+
<?php
|
235 |
+
}else{
|
236 |
+
$message= "Link to reconfigure 2nd factor will be sent to ".$email;
|
237 |
+
echo mo2f_lt( $message );
|
238 |
+
}
|
239 |
+
break;
|
240 |
+
case "OTP Over SMS":
|
241 |
+
if(!$is_registered){
|
242 |
+
$message = "Please register with miniOrange for using this method.";
|
243 |
+
echo mo2f_lt( $message );
|
244 |
+
}
|
245 |
+
else{
|
246 |
+
$mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user->ID );
|
247 |
+
$user_phone = $mo2f_user_phone ? $mo2f_user_phone : get_option( 'user_phone_temp' );
|
248 |
+
?>
|
249 |
+
<form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
|
250 |
+
|
251 |
+
<table id="mo2f_setup_sms">
|
252 |
+
<td class="bg-none"><?php echo mo2f_lt( 'Authentication codes will be sent to ' )?></td>
|
253 |
+
<td><input type="text" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="verify_phone" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="<?php echo $user_phone ?>" pattern="[\+]?[0-9]{1,4}\s?[0-9]{7,12}" required="true" title="<?php echo mo2f_lt( 'Enter phone number without any space or dashes' ); ?>"/></td>
|
254 |
+
<td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save" class="button button1" ><?php echo mo2f_lt( 'Save' ); ?></a></td>
|
255 |
+
</table>
|
256 |
+
|
257 |
+
</form>
|
258 |
+
<?php
|
259 |
+
}
|
260 |
+
break;
|
261 |
+
case "Security Questions":
|
262 |
+
mo2f_configure_kba_questions($user);
|
263 |
+
break;
|
264 |
+
case "OTP Over Email":
|
265 |
+
case "Email Verification":
|
266 |
+
if(!$Mo2fdbQueries->check_if_user_column_exists($user->ID)){
|
267 |
+
$content = $pass_2fa_login_session->create_user_in_miniOrange($user->ID,$email,$method);
|
268 |
+
}
|
269 |
+
$email = ($email=='')?$user->user_email:$email;
|
270 |
+
$message = "Authentication codes will be sent to ".$email;
|
271 |
+
echo mo2f_lt( $message );
|
272 |
+
break;
|
273 |
+
$Mo2fdbQueries->delete_user_login_sessions($user->ID);
|
274 |
+
}
|
275 |
+
}
|
276 |
+
?>
|
helper/constants.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
const DEFAULT_CUSTOMER_KEY = "16555";
|
13 |
const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
|
14 |
const DB_VERSION = 155;
|
15 |
-
const DB_FEATURE_MAIL =
|
16 |
const SUPPORT_EMAIL = 'info@xecurify.com';
|
17 |
const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
|
18 |
const IP_LOOKUP_TEMPLATE = '<span style="font-size:14px;font-weight:bold">GENERAL INFORMATION</span><table style="margin-left:2%;"><tr><td style="width:100px;">Response</td><td >:</td><td>{{status}}</td></tr><tr><td style="width:100px;">IP Address</td><td>:</td><td>{{ip}}</td></tr><tr><td>HostName</td><td>:</td><td>{{hostname}}</td></tr><tr><td>TimeZone</td><td>:</td><td>{{timezone}}</td></tr><tr><td>Time Difference</td><td>:</td><td>{{offset}}</td></tr></table><hr><span style="font-size:14px;font-weight:bold">LOCATION INFORMATION</span><table style="margin-left:2%;"><tr><td>Latitude</td><td>:</td><td>{{latitude}}</td></tr><tr><td>Longitude</td><td>:</td><td>{{longitude}}</td></tr><tr><td>Region</td><td>:</td><td>{{region}}</td></tr><tr><td>Country</td><td>:</td><td>{{country}}</td></tr><tr><td>City</td><td>:</td><td>{{city}}</td></tr><tr><td>Continent</td><td>:</td><td>{{continent}}</td></tr><tr><td>Curreny Code</td><td>:</td><td>{{curreny_code}}</td></tr><tr><td>Curreny Symbol</td><td>:</td><td>{{curreny_symbol}}</td></tr><tr><td>Per Dollar Value</td><td>:</td><td>{{per_dollar_value}}</td></tr></table>';
|
12 |
const DEFAULT_CUSTOMER_KEY = "16555";
|
13 |
const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
|
14 |
const DB_VERSION = 155;
|
15 |
+
const DB_FEATURE_MAIL = 2;
|
16 |
const SUPPORT_EMAIL = 'info@xecurify.com';
|
17 |
const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
|
18 |
const IP_LOOKUP_TEMPLATE = '<span style="font-size:14px;font-weight:bold">GENERAL INFORMATION</span><table style="margin-left:2%;"><tr><td style="width:100px;">Response</td><td >:</td><td>{{status}}</td></tr><tr><td style="width:100px;">IP Address</td><td>:</td><td>{{ip}}</td></tr><tr><td>HostName</td><td>:</td><td>{{hostname}}</td></tr><tr><td>TimeZone</td><td>:</td><td>{{timezone}}</td></tr><tr><td>Time Difference</td><td>:</td><td>{{offset}}</td></tr></table><hr><span style="font-size:14px;font-weight:bold">LOCATION INFORMATION</span><table style="margin-left:2%;"><tr><td>Latitude</td><td>:</td><td>{{latitude}}</td></tr><tr><td>Longitude</td><td>:</td><td>{{longitude}}</td></tr><tr><td>Region</td><td>:</td><td>{{region}}</td></tr><tr><td>Country</td><td>:</td><td>{{country}}</td></tr><tr><td>City</td><td>:</td><td>{{city}}</td></tr><tr><td>Continent</td><td>:</td><td>{{continent}}</td></tr><tr><td>Curreny Code</td><td>:</td><td>{{curreny_code}}</td></tr><tr><td>Curreny Symbol</td><td>:</td><td>{{curreny_symbol}}</td></tr><tr><td>Per Dollar Value</td><td>:</td><td>{{per_dollar_value}}</td></tr></table>';
|
helper/curl.php
CHANGED
@@ -117,6 +117,23 @@ class MocURL
|
|
117 |
return $response;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
function validate_otp_token($transactionId,$otpToken)
|
121 |
{
|
122 |
$url = MoWpnsConstants::HOST_NAME . '/moas/api/auth/validate';
|
@@ -186,7 +203,7 @@ class MocURL
|
|
186 |
$fromEmail = 'no-reply@xecurify.com';
|
187 |
$Di = get_site_option('No_of_days_active_work');
|
188 |
$Di = intval($Di);
|
189 |
-
|
190 |
{
|
191 |
$subject = "Deactivate [Feedback Skipped]: WordPress miniOrange 2-Factor Plugin :" .$Di ;
|
192 |
|
117 |
return $response;
|
118 |
}
|
119 |
|
120 |
+
function get_Captcha_v3($Secretkey)
|
121 |
+
{
|
122 |
+
|
123 |
+
$json = "";
|
124 |
+
$url = "https://www.google.com/recaptcha/api/siteverify";
|
125 |
+
$fields = array(
|
126 |
+
'response' => $Secretkey,
|
127 |
+
'secret' => get_option('mo_wpns_recaptcha_secret_key_v3'),
|
128 |
+
'remoteip' => $_SERVER['REMOTE_ADDR']
|
129 |
+
);
|
130 |
+
foreach($fields as $key=>$value) { $json .= $key.'='.$value.'&'; }
|
131 |
+
json_encode($json);
|
132 |
+
$result = $this->callAPI($url, $json, null);
|
133 |
+
|
134 |
+
return $result;
|
135 |
+
}
|
136 |
+
|
137 |
function validate_otp_token($transactionId,$otpToken)
|
138 |
{
|
139 |
$url = MoWpnsConstants::HOST_NAME . '/moas/api/auth/validate';
|
203 |
$fromEmail = 'no-reply@xecurify.com';
|
204 |
$Di = get_site_option('No_of_days_active_work');
|
205 |
$Di = intval($Di);
|
206 |
+
if ($feedback_option == 'mo_wpns_skip_feedback')
|
207 |
{
|
208 |
$subject = "Deactivate [Feedback Skipped]: WordPress miniOrange 2-Factor Plugin :" .$Di ;
|
209 |
|
helper/messages.php
CHANGED
@@ -63,6 +63,8 @@
|
|
63 |
//support form
|
64 |
const SUPPORT_FORM_VALUES = "Please submit your query along with email.";
|
65 |
const SUPPORT_FORM_SENT = "Thanks for getting in touch! We shall get back to you shortly.";
|
|
|
|
|
66 |
const SUPPORT_FORM_ERROR = "Your query could not be submitted. Please try again.";
|
67 |
// request demo form
|
68 |
const DEMO_FORM_ERROR = "Please fill out all the fields.";
|
@@ -73,6 +75,7 @@
|
|
73 |
const UNKNOWN_ERROR = "Error processing your request. Please try again.";
|
74 |
const CONFIG_SAVED = "Configuration saved successfully.";
|
75 |
const REQUIRED_FIELDS = "Please enter all the required fields";
|
|
|
76 |
const RESET_PASS = "You password has been reset successfully and sent to your registered email. Please check your mailbox.";
|
77 |
const TEMPLATE_SAVED = "Email template saved.";
|
78 |
const GET_BACKUP_CODES = "<div class='custom-notice notice notice-warning backupcodes-notice'><p><p class='notice-message'><b>Please download backup codes using the 'Get backup codes' button to avoid getting locked out. Backup codes will be emailed as well as downloaded.</b></p><button class='backup_codes_dismiss notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
|
@@ -91,7 +94,7 @@
|
|
91 |
const INVALID_CRED = 'Invalid username or password. Please try again.';
|
92 |
const REQUIRED_OTP = 'Please enter a value in OTP field.';
|
93 |
const INVALID_OTP = 'Invalid one time passcode. Please enter a valid passcode.';
|
94 |
-
const INVALID_PHONE = 'Please enter
|
95 |
const PASS_MISMATCH = 'Password and Confirm Password do not match.';
|
96 |
const CRON_DB_BACKUP_ENABLE = 'Scheduled Database Backup enabled';
|
97 |
const CRON_DB_BACKUP_DISABLE = 'Scheduled Database Backup disabled';
|
@@ -141,6 +144,37 @@
|
|
141 |
const LOW_EMAIL_TRANSACTIONS = "<div class='custom-notice notice notice-warning low_email-notice MOWrn'><p><p class='notice-message'><img style='width:15px;' src='".MO2F_PLUGIN_URL.'/includes/images/miniorange_icon.png'."'>  You have left very few Email transaction. We advise you to recharge or change 2FA method before you have no Email left.</p><a class='notice-button' href='".MoWpnsConstants::rechargeLink."' target='_blank' style='margin-right: 15px;'>RECHARGE</a><a class='notice-button' href='admin.php?page=mo_2fa_two_fa'id='setuptwofa_redirect' style='margin-right: 15px;'>SET UP ANOTHER 2FA</a><button class='email_low_dismiss notice-button' style='margin-right: 15px;'><i>DISMISS</i></button><button class='email_low_dismiss_always notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
|
142 |
|
143 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
|
145 |
|
146 |
|
63 |
//support form
|
64 |
const SUPPORT_FORM_VALUES = "Please submit your query along with email.";
|
65 |
const SUPPORT_FORM_SENT = "Thanks for getting in touch! We shall get back to you shortly.";
|
66 |
+
const TRIAL_REQUEST_SENT = "Thanks for getting in touch! We shall provide you the trial plugin on your email shortly.";
|
67 |
+
const TRIAL_REQUEST_ALREADY_SENT = "You have already sent a trial request for premium plugin. We will get back to you on your email soon.";
|
68 |
const SUPPORT_FORM_ERROR = "Your query could not be submitted. Please try again.";
|
69 |
// request demo form
|
70 |
const DEMO_FORM_ERROR = "Please fill out all the fields.";
|
75 |
const UNKNOWN_ERROR = "Error processing your request. Please try again.";
|
76 |
const CONFIG_SAVED = "Configuration saved successfully.";
|
77 |
const REQUIRED_FIELDS = "Please enter all the required fields";
|
78 |
+
CONST SELECT_A_PLAN = "Please select a plan";
|
79 |
const RESET_PASS = "You password has been reset successfully and sent to your registered email. Please check your mailbox.";
|
80 |
const TEMPLATE_SAVED = "Email template saved.";
|
81 |
const GET_BACKUP_CODES = "<div class='custom-notice notice notice-warning backupcodes-notice'><p><p class='notice-message'><b>Please download backup codes using the 'Get backup codes' button to avoid getting locked out. Backup codes will be emailed as well as downloaded.</b></p><button class='backup_codes_dismiss notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
|
94 |
const INVALID_CRED = 'Invalid username or password. Please try again.';
|
95 |
const REQUIRED_OTP = 'Please enter a value in OTP field.';
|
96 |
const INVALID_OTP = 'Invalid one time passcode. Please enter a valid passcode.';
|
97 |
+
const INVALID_PHONE = 'Please enter a valid phone number.';
|
98 |
const PASS_MISMATCH = 'Password and Confirm Password do not match.';
|
99 |
const CRON_DB_BACKUP_ENABLE = 'Scheduled Database Backup enabled';
|
100 |
const CRON_DB_BACKUP_DISABLE = 'Scheduled Database Backup disabled';
|
144 |
const LOW_EMAIL_TRANSACTIONS = "<div class='custom-notice notice notice-warning low_email-notice MOWrn'><p><p class='notice-message'><img style='width:15px;' src='".MO2F_PLUGIN_URL.'/includes/images/miniorange_icon.png'."'>  You have left very few Email transaction. We advise you to recharge or change 2FA method before you have no Email left.</p><a class='notice-button' href='".MoWpnsConstants::rechargeLink."' target='_blank' style='margin-right: 15px;'>RECHARGE</a><a class='notice-button' href='admin.php?page=mo_2fa_two_fa'id='setuptwofa_redirect' style='margin-right: 15px;'>SET UP ANOTHER 2FA</a><button class='email_low_dismiss notice-button' style='margin-right: 15px;'><i>DISMISS</i></button><button class='email_low_dismiss_always notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
|
145 |
|
146 |
|
147 |
+
const FREE_TRIAL_MESSAGE_TRIAL_PAGE = "
|
148 |
+
<div class='notice notice-warning mo2f-notice-warning trial-notice MOWrn' id='mo2f_is-dismissible'>
|
149 |
+
<form id='MO2F_FREE_TRIAL_MESSAGE_TRIAL_PAGE' method='post' action=''>
|
150 |
+
<p>
|
151 |
+
<img style='width:15px;' src='".MO2F_PLUGIN_URL.'includes/images/miniorange_icon.png'."'>  Interested in the Trial of<b> 2 Factor Authentication Premium Plugins?</b> Click on the button below to get trial for <strong>7 days</strong>.
|
152 |
+
(<em>No credit card required</em>)
|
153 |
+
</p>
|
154 |
+
<p style='height:25px; padding: 10px;'>
|
155 |
+
<a class='button button-primary notice-button' href='admin.php?page=mo2f_trial' id='mo2f_trial_redirect'>Get Trial</a>
|
156 |
+
<input type='hidden' name='mo2f_dismiss_trial' value='mo2f_dismiss_trial'/>
|
157 |
+
<button type='submit' class='mo2f-trial-dismiss notice-button'><i>DISMISS</i></button>
|
158 |
+
</p>
|
159 |
+
</form>
|
160 |
+
</div>
|
161 |
+
";
|
162 |
+
|
163 |
+
const FREE_TRIAL_MESSAGE_ACCOUNT_PAGE = "
|
164 |
+
<div class='notice notice-warning mo2f-notice-warning trial-notice MOWrn'>
|
165 |
+
<form id='MO2F_FREE_TRIAL_MESSAGE_TRIAL_PAGE' method='post' action=''>
|
166 |
+
<p>
|
167 |
+
<img style='width:15px;' src='".MO2F_PLUGIN_URL.'includes/images/miniorange_icon.png'."'>  Interested in the Trial of<b> 2 Factor Authentication Premium Plugins?</b> Click on the button below to get trial for <strong>7 days</strong>.
|
168 |
+
(<em>No credit card required</em>)
|
169 |
+
</p>
|
170 |
+
<p style='height:25px; padding: 10px;'>
|
171 |
+
<a class='button button-primary notice-button' href='admin.php?page=mo_2fa_account' id='mo2f_trial_redirect'>Get Trial</a>
|
172 |
+
<input type='hidden' name='mo2f_dismiss_trial' value='mo2f_dismiss_trial'/>
|
173 |
+
<button type='submit' class='mo2f-trial-dismiss notice-button'><i>DISMISS</i></button>
|
174 |
+
</p>
|
175 |
+
</form>
|
176 |
+
</div>
|
177 |
+
";
|
178 |
|
179 |
|
180 |
|
helper/utility.php
CHANGED
@@ -69,11 +69,11 @@ class MoWpnsUtility
|
|
69 |
public static function get_client_ip()
|
70 |
{
|
71 |
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
72 |
-
return $_SERVER['HTTP_CLIENT_IP'];
|
73 |
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
74 |
-
return $_SERVER['HTTP_X_FORWARDED_FOR'];
|
75 |
} else {
|
76 |
-
return $_SERVER['REMOTE_ADDR'];
|
77 |
}
|
78 |
return '';
|
79 |
}
|
@@ -128,7 +128,7 @@ class MoWpnsUtility
|
|
128 |
return $url;
|
129 |
}
|
130 |
|
131 |
-
//Function to handle
|
132 |
function verify_recaptcha($response)
|
133 |
{
|
134 |
$error = new WP_Error();
|
@@ -144,6 +144,23 @@ class MoWpnsUtility
|
|
144 |
return $error;
|
145 |
}
|
146 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
|
148 |
function sendIpBlockedNotification($ipAddress, $reason)
|
149 |
{
|
@@ -344,11 +361,15 @@ class MoWpnsUtility
|
|
344 |
$is_plugin_active_for_network = is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);
|
345 |
$is_onprem = get_option('is_onprem');
|
346 |
$WAFEnabled = get_site_option('WAFEnabled');
|
|
|
347 |
$WAFLevel = get_site_option('WAF');
|
348 |
$NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
|
|
|
|
|
349 |
$EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
350 |
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
351 |
$SQLInjection = get_option('SQLInjection');
|
|
|
352 |
$XSSAttack = get_option('XSSAttack');
|
353 |
$RFIAttack = get_option('RFIAttack');
|
354 |
$LFIAttack = get_option('LFIAttack');
|
@@ -359,6 +380,7 @@ class MoWpnsUtility
|
|
359 |
$mo2f_enable_brute_force = get_option('mo2f_enable_brute_force');
|
360 |
$space = "<span> </span>";
|
361 |
$browser = $moWpnsUtility->getCurrentBrowser();
|
|
|
362 |
$specific_plugins = array('UM_Functions'=>'Ultimate Member', 'wc_get_product'=>'WooCommerce','pmpro_gateways'=>'Paid MemberShip Pro');
|
363 |
$backup_codes_remaining = get_user_meta($user_object->ID, 'mo2f_backup_codes', true);
|
364 |
if(is_array($backup_codes_remaining)){
|
@@ -366,7 +388,7 @@ class MoWpnsUtility
|
|
366 |
}else{
|
367 |
$backup_codes_remaining = 0;
|
368 |
}
|
369 |
-
$plugin_configuration ="<br><br><I>Plugin Configuration :-</I>".$space."On-premise:".($is_onprem?"Yes":"No"). $space."2FA method:" . ($mo2f_configured_2FA_method==''?"Not selected":$mo2f_configured_2FA_method).$space."No. of 2FA users :".$NoOf2faUsers.$space."Methods of users:".($other_methods==''?"NONE":$other_methods).$space."Email transactions:".$EmailTransactions.$space."SMS Transactions:".$SMSTransactions.$space.(is_multisite()?"Multisite:Yes":"Single-site:Yes").((mo2f_is_customer_registered())?($space."Customer Key:".$key):($space."Customer Registered:'No")).$space."Browser:".$browser;
|
370 |
if(get_user_meta($user_object->ID, 'mo_backup_code_generated', true) || get_user_meta($user_object->ID, 'mo_backup_code_downloaded', true))
|
371 |
$plugin_configuration=$plugin_configuration.$space."Backup Codes:".$backup_codes_remaining."/5";
|
372 |
$plugins='';
|
@@ -381,6 +403,7 @@ class MoWpnsUtility
|
|
381 |
if(is_multisite()){
|
382 |
$plugin_configuration = $plugin_configuration.$space.($is_plugin_active_for_network?"Network activated:'Yes":"Site activated:'Yes");
|
383 |
}
|
|
|
384 |
if(time()-get_site_option("mo_2fa_pnp")<2592000 && (get_site_option('mo_2fa_plan_type')|| get_site_option('mo_2fa_addon_plan_type'))){
|
385 |
$plugin_configuration=$plugin_configuration.$space."Checked plans:'";
|
386 |
if(get_site_option('mo_2fa_plan_type'))
|
69 |
public static function get_client_ip()
|
70 |
{
|
71 |
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
72 |
+
return sanitize_text_field($_SERVER['HTTP_CLIENT_IP']);
|
73 |
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
74 |
+
return sanitize_text_field($_SERVER['HTTP_X_FORWARDED_FOR']);
|
75 |
} else {
|
76 |
+
return sanitize_text_field($_SERVER['REMOTE_ADDR']);
|
77 |
}
|
78 |
return '';
|
79 |
}
|
128 |
return $url;
|
129 |
}
|
130 |
|
131 |
+
//Function to handle recaptcha
|
132 |
function verify_recaptcha($response)
|
133 |
{
|
134 |
$error = new WP_Error();
|
144 |
return $error;
|
145 |
}
|
146 |
|
147 |
+
function verify_recaptcha_3($response)
|
148 |
+
{
|
149 |
+
$error = new WP_Error();
|
150 |
+
if(!empty($response))
|
151 |
+
{
|
152 |
+
if(!mo2f_ReCaptcha::recaptcha_verify_3($response))
|
153 |
+
$error->add('recaptcha_error', __( '<strong>ERROR</strong> : Access Denied.'));
|
154 |
+
else
|
155 |
+
return true;
|
156 |
+
}
|
157 |
+
else{
|
158 |
+
|
159 |
+
$error->add('recaptcha_error', __( '<strong>ERROR</strong> : Please verify the captcha.'));
|
160 |
+
}
|
161 |
+
return $error;
|
162 |
+
}
|
163 |
+
|
164 |
|
165 |
function sendIpBlockedNotification($ipAddress, $reason)
|
166 |
{
|
361 |
$is_plugin_active_for_network = is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);
|
362 |
$is_onprem = get_option('is_onprem');
|
363 |
$WAFEnabled = get_site_option('WAFEnabled');
|
364 |
+
$pricing_page_visits = get_site_option('mo2fa_visit',0);
|
365 |
$WAFLevel = get_site_option('WAF');
|
366 |
$NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
|
367 |
+
$is_inline_used = get_site_option('mo2f_is_inline_used');
|
368 |
+
$login_with_mfa_use = get_site_option('mo2f_login_with_mfa_use');
|
369 |
$EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
370 |
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
371 |
$SQLInjection = get_option('SQLInjection');
|
372 |
+
$user_profile = get_option('mo2fa_userProfile_method');
|
373 |
$XSSAttack = get_option('XSSAttack');
|
374 |
$RFIAttack = get_option('RFIAttack');
|
375 |
$LFIAttack = get_option('LFIAttack');
|
380 |
$mo2f_enable_brute_force = get_option('mo2f_enable_brute_force');
|
381 |
$space = "<span> </span>";
|
382 |
$browser = $moWpnsUtility->getCurrentBrowser();
|
383 |
+
$user_count = isset((count_users())['total_users'])?(count_users())['total_users']:'';
|
384 |
$specific_plugins = array('UM_Functions'=>'Ultimate Member', 'wc_get_product'=>'WooCommerce','pmpro_gateways'=>'Paid MemberShip Pro');
|
385 |
$backup_codes_remaining = get_user_meta($user_object->ID, 'mo2f_backup_codes', true);
|
386 |
if(is_array($backup_codes_remaining)){
|
388 |
}else{
|
389 |
$backup_codes_remaining = 0;
|
390 |
}
|
391 |
+
$plugin_configuration ="<br><br><I>Plugin Configuration :-</I>".$space."On-premise:".($is_onprem?"Yes":"No"). $space."User Profile 2fa:".($user_profile?$user_profile:"No"). $space."Login with MFA:".($login_with_mfa_use == '1'?"Yes":"No"). $space."Inline Registration:".($is_inline_used == '1'?"Yes":"No"). $space."2FA method:" . ($mo2f_configured_2FA_method==''?"Not selected":$mo2f_configured_2FA_method).$space."No. of 2FA users :".$NoOf2faUsers.$space."Total users : ".$user_count.$space."Methods of users:".($other_methods==''?"NONE":$other_methods).$space."Email transactions:".$EmailTransactions.$space."SMS Transactions:".$SMSTransactions.$space.(is_multisite()?"Multisite:Yes":"Single-site:Yes").((mo2f_is_customer_registered())?($space."Customer Key:".$key):($space."Customer Registered:'No")).$space."Browser:".$browser;
|
392 |
if(get_user_meta($user_object->ID, 'mo_backup_code_generated', true) || get_user_meta($user_object->ID, 'mo_backup_code_downloaded', true))
|
393 |
$plugin_configuration=$plugin_configuration.$space."Backup Codes:".$backup_codes_remaining."/5";
|
394 |
$plugins='';
|
403 |
if(is_multisite()){
|
404 |
$plugin_configuration = $plugin_configuration.$space.($is_plugin_active_for_network?"Network activated:'Yes":"Site activated:'Yes");
|
405 |
}
|
406 |
+
$plugin_configuration=$plugin_configuration.$space."Pricing Page visits : ".$pricing_page_visits;
|
407 |
if(time()-get_site_option("mo_2fa_pnp")<2592000 && (get_site_option('mo_2fa_plan_type')|| get_site_option('mo_2fa_addon_plan_type'))){
|
408 |
$plugin_configuration=$plugin_configuration.$space."Checked plans:'";
|
409 |
if(get_site_option('mo_2fa_plan_type'))
|
includes/css/bootstrap.min.css
CHANGED
@@ -1246,8 +1246,21 @@ button.mo2f_close {
|
|
1246 |
}
|
1247 |
|
1248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1249 |
|
1250 |
-
|
|
|
|
|
|
|
1251 |
|
1252 |
.mo2f-modal-backdrop {
|
1253 |
|
1246 |
}
|
1247 |
|
1248 |
|
1249 |
+
.mo2f-styled-radio_conf {
|
1250 |
+
width: 25px;
|
1251 |
+
height: 32px;
|
1252 |
+
position: relative;
|
1253 |
+
display: inline-block;
|
1254 |
+
border-radius: 51%;
|
1255 |
+
background-color: #e6e6e6;
|
1256 |
+
float: left;
|
1257 |
+
margin-top: -7px;
|
1258 |
+
}
|
1259 |
|
1260 |
+
.mo2f-styled-radio-text_conf {
|
1261 |
+
margin-left: 10px;
|
1262 |
+
font-size: medium;
|
1263 |
+
}
|
1264 |
|
1265 |
.mo2f-modal-backdrop {
|
1266 |
|
includes/css/button_styles.css
CHANGED
@@ -36,11 +36,11 @@
|
|
36 |
}
|
37 |
|
38 |
input:checked + .mo_wpns_slider {
|
39 |
-
background-color: #
|
40 |
}
|
41 |
|
42 |
input:focus + .mo_wpns_slider {
|
43 |
-
box-shadow: 0 0 1px #
|
44 |
}
|
45 |
|
46 |
input:checked + .mo_wpns_slider:before {
|
@@ -91,10 +91,10 @@ input:checked + .mo_wpns_slider:before {
|
|
91 |
transition: .4s;
|
92 |
}
|
93 |
input:checked + .mo_wpns_slider_small {
|
94 |
-
background-color: #
|
95 |
}
|
96 |
input:focus + .mo_wpns_slider_small {
|
97 |
-
box-shadow: 0 0 1px #
|
98 |
}
|
99 |
|
100 |
input:checked + .mo_wpns_slider_small:before {
|
36 |
}
|
37 |
|
38 |
input:checked + .mo_wpns_slider {
|
39 |
+
background-color: #413c69;
|
40 |
}
|
41 |
|
42 |
input:focus + .mo_wpns_slider {
|
43 |
+
box-shadow: 0 0 1px #4a47a3;
|
44 |
}
|
45 |
|
46 |
input:checked + .mo_wpns_slider:before {
|
91 |
transition: .4s;
|
92 |
}
|
93 |
input:checked + .mo_wpns_slider_small {
|
94 |
+
background-color: #2271b1;
|
95 |
}
|
96 |
input:focus + .mo_wpns_slider_small {
|
97 |
+
box-shadow: 0 0 1px #2271b1;
|
98 |
}
|
99 |
|
100 |
input:checked + .mo_wpns_slider_small:before {
|
includes/css/christmas.gif
ADDED
Binary file
|
includes/css/datetime-style-settings.css
DELETED
@@ -1,576 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* jQuery Timepicker
|
3 |
-
* http://timepicker.co
|
4 |
-
* https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css
|
5 |
-
* Enhances standard form input fields helping users to select (or type) times.
|
6 |
-
*
|
7 |
-
* Copyright (c) 2016 Willington Vega; Licensed MIT, GPL
|
8 |
-
*/
|
9 |
-
|
10 |
-
.ui-timepicker-container {
|
11 |
-
position: absolute;
|
12 |
-
overflow: hidden;
|
13 |
-
box-sizing: border-box;
|
14 |
-
}
|
15 |
-
|
16 |
-
.ui-timepicker {
|
17 |
-
box-sizing: content-box;
|
18 |
-
display: block;
|
19 |
-
height: 205px;
|
20 |
-
list-style: none outside none;
|
21 |
-
margin: 0;
|
22 |
-
padding: 0 1px;
|
23 |
-
text-align: center;
|
24 |
-
}
|
25 |
-
|
26 |
-
.ui-timepicker-viewport {
|
27 |
-
box-sizing: content-box;
|
28 |
-
display: block;
|
29 |
-
height: 148px;
|
30 |
-
margin: 0;
|
31 |
-
padding: 0;
|
32 |
-
overflow: auto;
|
33 |
-
overflow-x: hidden; /* IE */
|
34 |
-
}
|
35 |
-
|
36 |
-
.ui-timepicker-standard {
|
37 |
-
/* overwrites .ui-widget */
|
38 |
-
font-family: Verdana,Arial,sans-serif;
|
39 |
-
font-size: 1.1em;
|
40 |
-
/* overwrites .ui-widget-content */
|
41 |
-
background-color: #FFF;
|
42 |
-
border: 1px solid #AAA;
|
43 |
-
color: #222;
|
44 |
-
/* overwrites .ui-menu */
|
45 |
-
margin: 0;
|
46 |
-
padding: 2px;
|
47 |
-
height: 155px !important;
|
48 |
-
}
|
49 |
-
.ui-timepicker-standard a {
|
50 |
-
border: 1px solid transparent;
|
51 |
-
color: #222;
|
52 |
-
display: block;
|
53 |
-
padding: 0.2em 0.4em;
|
54 |
-
text-decoration: none;
|
55 |
-
}
|
56 |
-
.ui-timepicker-standard .ui-state-hover {
|
57 |
-
/* overwrites .ui-state-hover */
|
58 |
-
background-color: #DADADA;
|
59 |
-
border: 1px solid #999;
|
60 |
-
font-weight: normal;
|
61 |
-
color: #212121;
|
62 |
-
}
|
63 |
-
.ui-timepicker-standard .ui-menu-item {
|
64 |
-
/* overwrites .ui-menu and .ui-menu-item */
|
65 |
-
/*clear: left;
|
66 |
-
float: left;*/
|
67 |
-
margin: 0;
|
68 |
-
padding: 0;
|
69 |
-
}
|
70 |
-
|
71 |
-
.ui-timepicker-corners,
|
72 |
-
.ui-timepicker-corners .ui-corner-all {
|
73 |
-
-moz-border-radius: 4px;
|
74 |
-
-webkit-border-radius: 4px;
|
75 |
-
border-radius: 4px;
|
76 |
-
}
|
77 |
-
|
78 |
-
.ui-timepicker-hidden {
|
79 |
-
/* overwrites .ui-helper-hidden */
|
80 |
-
display: none;
|
81 |
-
}
|
82 |
-
|
83 |
-
.ui-timepicker-no-scrollbar .ui-timepicker {
|
84 |
-
border: none;
|
85 |
-
}
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
/* ADDED FOR TIMEZONE DROPDOWN - https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css */
|
90 |
-
|
91 |
-
.select2-container {
|
92 |
-
box-sizing: border-box;
|
93 |
-
display: inline-block;
|
94 |
-
margin: 0;
|
95 |
-
width: 90% !important;
|
96 |
-
position: relative;
|
97 |
-
vertical-align: middle; }
|
98 |
-
.select2-container .select2-selection--single {
|
99 |
-
box-sizing: border-box;
|
100 |
-
cursor: pointer;
|
101 |
-
display: block;
|
102 |
-
height: 28px;
|
103 |
-
user-select: none;
|
104 |
-
-webkit-user-select: none; }
|
105 |
-
.select2-container .select2-selection--single .select2-selection__rendered {
|
106 |
-
display: block;
|
107 |
-
padding-left: 8px;
|
108 |
-
padding-right: 20px;
|
109 |
-
overflow: hidden;
|
110 |
-
text-overflow: ellipsis;
|
111 |
-
white-space: nowrap; }
|
112 |
-
.select2-container .select2-selection--single .select2-selection__clear {
|
113 |
-
position: relative; }
|
114 |
-
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
|
115 |
-
padding-right: 8px;
|
116 |
-
padding-left: 20px; }
|
117 |
-
.select2-container .select2-selection--multiple {
|
118 |
-
box-sizing: border-box;
|
119 |
-
cursor: pointer;
|
120 |
-
display: block;
|
121 |
-
min-height: 32px;
|
122 |
-
user-select: none;
|
123 |
-
-webkit-user-select: none; }
|
124 |
-
.select2-container .select2-selection--multiple .select2-selection__rendered {
|
125 |
-
display: inline-block;
|
126 |
-
overflow: hidden;
|
127 |
-
padding-left: 8px;
|
128 |
-
text-overflow: ellipsis;
|
129 |
-
white-space: nowrap; }
|
130 |
-
.select2-container .select2-search--inline {
|
131 |
-
float: left; }
|
132 |
-
.select2-container .select2-search--inline .select2-search__field {
|
133 |
-
box-sizing: border-box;
|
134 |
-
border: none;
|
135 |
-
font-size: 100%;
|
136 |
-
margin-top: 5px;
|
137 |
-
padding: 0; }
|
138 |
-
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
|
139 |
-
-webkit-appearance: none; }
|
140 |
-
|
141 |
-
.select2-dropdown {
|
142 |
-
background-color: white;
|
143 |
-
border: 1px solid #aaa;
|
144 |
-
border-radius: 4px;
|
145 |
-
box-sizing: border-box;
|
146 |
-
display: block;
|
147 |
-
position: absolute;
|
148 |
-
left: -100000px;
|
149 |
-
width: 100%;
|
150 |
-
z-index: 1051; }
|
151 |
-
|
152 |
-
.select2-results {
|
153 |
-
display: block; }
|
154 |
-
|
155 |
-
.select2-results__options {
|
156 |
-
list-style: none;
|
157 |
-
margin: 0;
|
158 |
-
padding: 0; }
|
159 |
-
|
160 |
-
.select2-results__option {
|
161 |
-
padding: 6px;
|
162 |
-
user-select: none;
|
163 |
-
-webkit-user-select: none; }
|
164 |
-
.select2-results__option[aria-selected] {
|
165 |
-
cursor: pointer; }
|
166 |
-
|
167 |
-
.select2-container--open .select2-dropdown {
|
168 |
-
left: 0; }
|
169 |
-
|
170 |
-
.select2-container--open .select2-dropdown--above {
|
171 |
-
border-bottom: none;
|
172 |
-
border-bottom-left-radius: 0;
|
173 |
-
border-bottom-right-radius: 0; }
|
174 |
-
|
175 |
-
.select2-container--open .select2-dropdown--below {
|
176 |
-
border-top: none;
|
177 |
-
border-top-left-radius: 0;
|
178 |
-
border-top-right-radius: 0; }
|
179 |
-
|
180 |
-
.select2-search--dropdown {
|
181 |
-
display: block;
|
182 |
-
padding: 4px; }
|
183 |
-
.select2-search--dropdown .select2-search__field {
|
184 |
-
padding: 4px;
|
185 |
-
width: 100%;
|
186 |
-
box-sizing: border-box; }
|
187 |
-
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
|
188 |
-
-webkit-appearance: none; }
|
189 |
-
.select2-search--dropdown.select2-search--hide {
|
190 |
-
display: none; }
|
191 |
-
|
192 |
-
.select2-close-mask {
|
193 |
-
border: 0;
|
194 |
-
margin: 0;
|
195 |
-
padding: 0;
|
196 |
-
display: block;
|
197 |
-
position: fixed;
|
198 |
-
left: 0;
|
199 |
-
top: 0;
|
200 |
-
min-height: 100%;
|
201 |
-
min-width: 100%;
|
202 |
-
height: auto;
|
203 |
-
width: auto;
|
204 |
-
opacity: 0;
|
205 |
-
z-index: 99;
|
206 |
-
background-color: #fff;
|
207 |
-
filter: alpha(opacity=0); }
|
208 |
-
|
209 |
-
.select2-hidden-accessible {
|
210 |
-
border: 0 !important;
|
211 |
-
clip: rect(0 0 0 0) !important;
|
212 |
-
height: 1px !important;
|
213 |
-
margin: -1px !important;
|
214 |
-
overflow: hidden !important;
|
215 |
-
padding: 0 !important;
|
216 |
-
position: absolute !important;
|
217 |
-
width: 1px !important; }
|
218 |
-
|
219 |
-
.select2-container--default .select2-selection--single {
|
220 |
-
background-color: #fff;
|
221 |
-
border: 1px solid #aaa;
|
222 |
-
border-radius: 4px; }
|
223 |
-
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
224 |
-
color: #444;
|
225 |
-
line-height: 28px; }
|
226 |
-
.select2-container--default .select2-selection--single .select2-selection__clear {
|
227 |
-
cursor: pointer;
|
228 |
-
float: right;
|
229 |
-
font-weight: bold; }
|
230 |
-
.select2-container--default .select2-selection--single .select2-selection__placeholder {
|
231 |
-
color: #999; }
|
232 |
-
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
233 |
-
height: 26px;
|
234 |
-
position: absolute;
|
235 |
-
top: 1px;
|
236 |
-
right: 1px;
|
237 |
-
width: 20px; }
|
238 |
-
.select2-container--default .select2-selection--single .select2-selection__arrow b {
|
239 |
-
border-color: #888 transparent transparent transparent;
|
240 |
-
border-style: solid;
|
241 |
-
border-width: 5px 4px 0 4px;
|
242 |
-
height: 0;
|
243 |
-
left: 50%;
|
244 |
-
margin-left: -4px;
|
245 |
-
margin-top: -2px;
|
246 |
-
position: absolute;
|
247 |
-
top: 50%;
|
248 |
-
width: 0; }
|
249 |
-
|
250 |
-
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
251 |
-
float: left; }
|
252 |
-
|
253 |
-
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
254 |
-
left: 1px;
|
255 |
-
right: auto; }
|
256 |
-
|
257 |
-
.select2-container--default.select2-container--disabled .select2-selection--single {
|
258 |
-
background-color: #eee;
|
259 |
-
cursor: default; }
|
260 |
-
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
|
261 |
-
display: none; }
|
262 |
-
|
263 |
-
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
264 |
-
border-color: transparent transparent #888 transparent;
|
265 |
-
border-width: 0 4px 5px 4px; }
|
266 |
-
|
267 |
-
.select2-container--default .select2-selection--multiple {
|
268 |
-
background-color: white;
|
269 |
-
border: 1px solid #aaa;
|
270 |
-
border-radius: 4px;
|
271 |
-
cursor: text; }
|
272 |
-
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
|
273 |
-
box-sizing: border-box;
|
274 |
-
list-style: none;
|
275 |
-
margin: 0;
|
276 |
-
padding: 0 5px;
|
277 |
-
width: 100%; }
|
278 |
-
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
|
279 |
-
list-style: none; }
|
280 |
-
.select2-container--default .select2-selection--multiple .select2-selection__placeholder {
|
281 |
-
color: #999;
|
282 |
-
margin-top: 5px;
|
283 |
-
float: left; }
|
284 |
-
.select2-container--default .select2-selection--multiple .select2-selection__clear {
|
285 |
-
cursor: pointer;
|
286 |
-
float: right;
|
287 |
-
font-weight: bold;
|
288 |
-
margin-top: 5px;
|
289 |
-
margin-right: 10px; }
|
290 |
-
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
291 |
-
background-color: #e4e4e4;
|
292 |
-
border: 1px solid #aaa;
|
293 |
-
border-radius: 4px;
|
294 |
-
cursor: default;
|
295 |
-
float: left;
|
296 |
-
margin-right: 5px;
|
297 |
-
margin-top: 5px;
|
298 |
-
padding: 0 5px; }
|
299 |
-
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
300 |
-
color: #999;
|
301 |
-
cursor: pointer;
|
302 |
-
display: inline-block;
|
303 |
-
font-weight: bold;
|
304 |
-
margin-right: 2px; }
|
305 |
-
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
|
306 |
-
color: #333; }
|
307 |
-
|
308 |
-
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
|
309 |
-
float: right; }
|
310 |
-
|
311 |
-
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
312 |
-
margin-left: 5px;
|
313 |
-
margin-right: auto; }
|
314 |
-
|
315 |
-
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
316 |
-
margin-left: 2px;
|
317 |
-
margin-right: auto; }
|
318 |
-
|
319 |
-
.select2-container--default.select2-container--focus .select2-selection--multiple {
|
320 |
-
border: solid black 1px;
|
321 |
-
outline: 0; }
|
322 |
-
|
323 |
-
.select2-container--default.select2-container--disabled .select2-selection--multiple {
|
324 |
-
background-color: #eee;
|
325 |
-
cursor: default; }
|
326 |
-
|
327 |
-
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
|
328 |
-
display: none; }
|
329 |
-
|
330 |
-
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
|
331 |
-
border-top-left-radius: 0;
|
332 |
-
border-top-right-radius: 0; }
|
333 |
-
|
334 |
-
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
|
335 |
-
border-bottom-left-radius: 0;
|
336 |
-
border-bottom-right-radius: 0; }
|
337 |
-
|
338 |
-
.select2-container--default .select2-search--dropdown .select2-search__field {
|
339 |
-
border: 1px solid #aaa; }
|
340 |
-
|
341 |
-
.select2-container--default .select2-search--inline .select2-search__field {
|
342 |
-
background: transparent;
|
343 |
-
border: none;
|
344 |
-
outline: 0;
|
345 |
-
box-shadow: none;
|
346 |
-
-webkit-appearance: textfield; }
|
347 |
-
|
348 |
-
.select2-container--default .select2-results > .select2-results__options {
|
349 |
-
max-height: 200px;
|
350 |
-
overflow-y: auto; }
|
351 |
-
|
352 |
-
.select2-container--default .select2-results__option[role=group] {
|
353 |
-
padding: 0; }
|
354 |
-
|
355 |
-
.select2-container--default .select2-results__option[aria-disabled=true] {
|
356 |
-
color: #999; }
|
357 |
-
|
358 |
-
.select2-container--default .select2-results__option[aria-selected=true] {
|
359 |
-
background-color: #ddd; }
|
360 |
-
|
361 |
-
.select2-container--default .select2-results__option .select2-results__option {
|
362 |
-
padding-left: 1em; }
|
363 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
|
364 |
-
padding-left: 0; }
|
365 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
|
366 |
-
margin-left: -1em;
|
367 |
-
padding-left: 2em; }
|
368 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
369 |
-
margin-left: -2em;
|
370 |
-
padding-left: 3em; }
|
371 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
372 |
-
margin-left: -3em;
|
373 |
-
padding-left: 4em; }
|
374 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
375 |
-
margin-left: -4em;
|
376 |
-
padding-left: 5em; }
|
377 |
-
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
378 |
-
margin-left: -5em;
|
379 |
-
padding-left: 6em; }
|
380 |
-
|
381 |
-
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
382 |
-
background-color: #5897fb;
|
383 |
-
color: white; }
|
384 |
-
|
385 |
-
.select2-container--default .select2-results__group {
|
386 |
-
cursor: default;
|
387 |
-
display: block;
|
388 |
-
padding: 6px; }
|
389 |
-
|
390 |
-
.select2-container--classic .select2-selection--single {
|
391 |
-
background-color: #f7f7f7;
|
392 |
-
border: 1px solid #aaa;
|
393 |
-
border-radius: 4px;
|
394 |
-
outline: 0;
|
395 |
-
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
|
396 |
-
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
|
397 |
-
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
|
398 |
-
background-repeat: repeat-x;
|
399 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
400 |
-
.select2-container--classic .select2-selection--single:focus {
|
401 |
-
border: 1px solid #5897fb; }
|
402 |
-
.select2-container--classic .select2-selection--single .select2-selection__rendered {
|
403 |
-
color: #444;
|
404 |
-
line-height: 28px; }
|
405 |
-
.select2-container--classic .select2-selection--single .select2-selection__clear {
|
406 |
-
cursor: pointer;
|
407 |
-
float: right;
|
408 |
-
font-weight: bold;
|
409 |
-
margin-right: 10px; }
|
410 |
-
.select2-container--classic .select2-selection--single .select2-selection__placeholder {
|
411 |
-
color: #999; }
|
412 |
-
.select2-container--classic .select2-selection--single .select2-selection__arrow {
|
413 |
-
background-color: #ddd;
|
414 |
-
border: none;
|
415 |
-
border-left: 1px solid #aaa;
|
416 |
-
border-top-right-radius: 4px;
|
417 |
-
border-bottom-right-radius: 4px;
|
418 |
-
height: 26px;
|
419 |
-
position: absolute;
|
420 |
-
top: 1px;
|
421 |
-
right: 1px;
|
422 |
-
width: 20px;
|
423 |
-
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
424 |
-
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
425 |
-
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
|
426 |
-
background-repeat: repeat-x;
|
427 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
|
428 |
-
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
|
429 |
-
border-color: #888 transparent transparent transparent;
|
430 |
-
border-style: solid;
|
431 |
-
border-width: 5px 4px 0 4px;
|
432 |
-
height: 0;
|
433 |
-
left: 50%;
|
434 |
-
margin-left: -4px;
|
435 |
-
margin-top: -2px;
|
436 |
-
position: absolute;
|
437 |
-
top: 50%;
|
438 |
-
width: 0; }
|
439 |
-
|
440 |
-
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
441 |
-
float: left; }
|
442 |
-
|
443 |
-
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
444 |
-
border: none;
|
445 |
-
border-right: 1px solid #aaa;
|
446 |
-
border-radius: 0;
|
447 |
-
border-top-left-radius: 4px;
|
448 |
-
border-bottom-left-radius: 4px;
|
449 |
-
left: 1px;
|
450 |
-
right: auto; }
|
451 |
-
|
452 |
-
.select2-container--classic.select2-container--open .select2-selection--single {
|
453 |
-
border: 1px solid #5897fb; }
|
454 |
-
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
|
455 |
-
background: transparent;
|
456 |
-
border: none; }
|
457 |
-
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
458 |
-
border-color: transparent transparent #888 transparent;
|
459 |
-
border-width: 0 4px 5px 4px; }
|
460 |
-
|
461 |
-
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
|
462 |
-
border-top: none;
|
463 |
-
border-top-left-radius: 0;
|
464 |
-
border-top-right-radius: 0;
|
465 |
-
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
|
466 |
-
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
|
467 |
-
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
|
468 |
-
background-repeat: repeat-x;
|
469 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
470 |
-
|
471 |
-
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
|
472 |
-
border-bottom: none;
|
473 |
-
border-bottom-left-radius: 0;
|
474 |
-
border-bottom-right-radius: 0;
|
475 |
-
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
|
476 |
-
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
|
477 |
-
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
|
478 |
-
background-repeat: repeat-x;
|
479 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
|
480 |
-
|
481 |
-
.select2-container--classic .select2-selection--multiple {
|
482 |
-
background-color: white;
|
483 |
-
border: 1px solid #aaa;
|
484 |
-
border-radius: 4px;
|
485 |
-
cursor: text;
|
486 |
-
outline: 0; }
|
487 |
-
.select2-container--classic .select2-selection--multiple:focus {
|
488 |
-
border: 1px solid #5897fb; }
|
489 |
-
.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
|
490 |
-
list-style: none;
|
491 |
-
margin: 0;
|
492 |
-
padding: 0 5px; }
|
493 |
-
.select2-container--classic .select2-selection--multiple .select2-selection__clear {
|
494 |
-
display: none; }
|
495 |
-
.select2-container--classic .select2-selection--multiple .select2-selection__choice {
|
496 |
-
background-color: #e4e4e4;
|
497 |
-
border: 1px solid #aaa;
|
498 |
-
border-radius: 4px;
|
499 |
-
cursor: default;
|
500 |
-
float: left;
|
501 |
-
margin-right: 5px;
|
502 |
-
margin-top: 5px;
|
503 |
-
padding: 0 5px; }
|
504 |
-
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
|
505 |
-
color: #888;
|
506 |
-
cursor: pointer;
|
507 |
-
display: inline-block;
|
508 |
-
font-weight: bold;
|
509 |
-
margin-right: 2px; }
|
510 |
-
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
|
511 |
-
color: #555; }
|
512 |
-
|
513 |
-
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
514 |
-
float: right; }
|
515 |
-
|
516 |
-
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
517 |
-
margin-left: 5px;
|
518 |
-
margin-right: auto; }
|
519 |
-
|
520 |
-
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
521 |
-
margin-left: 2px;
|
522 |
-
margin-right: auto; }
|
523 |
-
|
524 |
-
.select2-container--classic.select2-container--open .select2-selection--multiple {
|
525 |
-
border: 1px solid #5897fb; }
|
526 |
-
|
527 |
-
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
|
528 |
-
border-top: none;
|
529 |
-
border-top-left-radius: 0;
|
530 |
-
border-top-right-radius: 0; }
|
531 |
-
|
532 |
-
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
|
533 |
-
border-bottom: none;
|
534 |
-
border-bottom-left-radius: 0;
|
535 |
-
border-bottom-right-radius: 0; }
|
536 |
-
|
537 |
-
.select2-container--classic .select2-search--dropdown .select2-search__field {
|
538 |
-
border: 1px solid #aaa;
|
539 |
-
outline: 0; }
|
540 |
-
|
541 |
-
.select2-container--classic .select2-search--inline .select2-search__field {
|
542 |
-
outline: 0;
|
543 |
-
box-shadow: none; }
|
544 |
-
|
545 |
-
.select2-container--classic .select2-dropdown {
|
546 |
-
background-color: white;
|
547 |
-
border: 1px solid transparent; }
|
548 |
-
|
549 |
-
.select2-container--classic .select2-dropdown--above {
|
550 |
-
border-bottom: none; }
|
551 |
-
|
552 |
-
.select2-container--classic .select2-dropdown--below {
|
553 |
-
border-top: none; }
|
554 |
-
|
555 |
-
.select2-container--classic .select2-results > .select2-results__options {
|
556 |
-
max-height: 200px;
|
557 |
-
overflow-y: auto; }
|
558 |
-
|
559 |
-
.select2-container--classic .select2-results__option[role=group] {
|
560 |
-
padding: 0; }
|
561 |
-
|
562 |
-
.select2-container--classic .select2-results__option[aria-disabled=true] {
|
563 |
-
color: grey; }
|
564 |
-
|
565 |
-
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
|
566 |
-
background-color: #3875d7;
|
567 |
-
color: white; }
|
568 |
-
|
569 |
-
.select2-container--classic .select2-results__group {
|
570 |
-
cursor: default;
|
571 |
-
display: block;
|
572 |
-
padding: 6px; }
|
573 |
-
|
574 |
-
.select2-container--classic.select2-container--open .select2-dropdown {
|
575 |
-
border-color: #5897fb; }
|
576 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/css/datetime-style-settings.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box}.ui-timepicker{box-sizing:content-box;display:block;height:205px;list-style:none outside none;margin:0;padding:0 1px;text-align:center}.ui-timepicker-viewport{box-sizing:content-box;display:block;height:148px;margin:0;padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-family:Verdana,Arial,sans-serif;font-size:1.1em;background-color:#fff;border:1px solid #aaa;color:#222;margin:0;padding:2px;height:155px!important}.ui-timepicker-standard a{border:1px solid transparent;color:#222;display:block;padding:.2em .4em;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#dadada;border:1px solid #999;font-weight:400;color:#212121}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:none}.select2-container{box-sizing:border-box;display:inline-block;margin:0;width:90%!important;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
|
|
includes/css/hide-login-form.css
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
body.login div#login {
|
2 |
display: block;
|
3 |
}
|
1 |
+
.mo2fa_visible{
|
2 |
+
top: 20px !important;
|
3 |
+
}
|
4 |
body.login div#login {
|
5 |
display: block;
|
6 |
}
|
includes/css/jquery-ui.min.css
CHANGED
@@ -1,4 +1 @@
|
|
1 |
-
* http://jqueryui.com
|
2 |
-
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
|
3 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
|
4 |
-
* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;max-height:100px;overflow-y:auto;overflow-x:hidden}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
1 |
+
* http: //jqueryui.com * Includes: core.css,.ui-helper-hidden,accordion.css,autocomplete.css,button.css,checkboxradio.css,controlgroup.css,dialog.css,draggable.css,menu.css,progressbar.css,resizable.css,selectable.css,selectmenu.css,slider.css,sortable.css,spinner.css,tabs.css,theme.css * To view and modify this theme,tooltip.css{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;max-height:100px;overflow-y:auto;overflow-x:hidden}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
|
|
|
|
|
includes/css/jquery.ui.css
CHANGED
@@ -741,178 +741,3 @@ button.ui-button::-moz-focus-inner {
|
|
741 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
742 |
border-radius: 8px;
|
743 |
}
|
744 |
-
.ui-datepicker {
|
745 |
-
width: 17em;
|
746 |
-
padding: .2em .2em 0;
|
747 |
-
display: none;
|
748 |
-
}
|
749 |
-
.ui-datepicker .ui-datepicker-header {
|
750 |
-
position: relative;
|
751 |
-
padding: .2em 0;
|
752 |
-
}
|
753 |
-
.ui-datepicker .ui-datepicker-prev,
|
754 |
-
.ui-datepicker .ui-datepicker-next {
|
755 |
-
position: absolute;
|
756 |
-
top: 2px;
|
757 |
-
width: 1.8em;
|
758 |
-
height: 1.8em;
|
759 |
-
}
|
760 |
-
.ui-datepicker .ui-datepicker-prev-hover,
|
761 |
-
.ui-datepicker .ui-datepicker-next-hover {
|
762 |
-
top: 1px;
|
763 |
-
}
|
764 |
-
.ui-datepicker .ui-datepicker-prev {
|
765 |
-
left: 2px;
|
766 |
-
}
|
767 |
-
.ui-datepicker .ui-datepicker-next {
|
768 |
-
right: 2px;
|
769 |
-
}
|
770 |
-
.ui-datepicker .ui-datepicker-prev-hover {
|
771 |
-
left: 1px;
|
772 |
-
}
|
773 |
-
.ui-datepicker .ui-datepicker-next-hover {
|
774 |
-
right: 1px;
|
775 |
-
}
|
776 |
-
.ui-datepicker .ui-datepicker-prev span,
|
777 |
-
.ui-datepicker .ui-datepicker-next span {
|
778 |
-
display: block;
|
779 |
-
position: absolute;
|
780 |
-
left: 50%;
|
781 |
-
margin-left: -8px;
|
782 |
-
top: 50%;
|
783 |
-
margin-top: -8px;
|
784 |
-
}
|
785 |
-
.ui-datepicker .ui-datepicker-title {
|
786 |
-
margin: 0 2.3em;
|
787 |
-
line-height: 1.8em;
|
788 |
-
text-align: center;
|
789 |
-
}
|
790 |
-
.ui-datepicker .ui-datepicker-title select {
|
791 |
-
font-size: 1em;
|
792 |
-
margin: 1px 0;
|
793 |
-
}
|
794 |
-
.ui-datepicker select.ui-datepicker-month,
|
795 |
-
.ui-datepicker select.ui-datepicker-year {
|
796 |
-
width: 45%;
|
797 |
-
}
|
798 |
-
.ui-datepicker table {
|
799 |
-
width: 100%;
|
800 |
-
font-size: .9em;
|
801 |
-
border-collapse: collapse;
|
802 |
-
margin: 0 0 .4em;
|
803 |
-
}
|
804 |
-
.ui-datepicker th {
|
805 |
-
padding: .7em .3em;
|
806 |
-
text-align: center;
|
807 |
-
font-weight: bold;
|
808 |
-
border: 0;
|
809 |
-
}
|
810 |
-
.ui-datepicker td {
|
811 |
-
border: 0;
|
812 |
-
padding: 1px;
|
813 |
-
}
|
814 |
-
.ui-datepicker td span,
|
815 |
-
.ui-datepicker td a {
|
816 |
-
display: block;
|
817 |
-
padding: .2em;
|
818 |
-
text-align: right;
|
819 |
-
text-decoration: none;
|
820 |
-
}
|
821 |
-
.ui-datepicker .ui-datepicker-buttonpane {
|
822 |
-
background-image: none;
|
823 |
-
margin: .7em 0 0 0;
|
824 |
-
padding: 0 .2em;
|
825 |
-
border-left: 0;
|
826 |
-
border-right: 0;
|
827 |
-
border-bottom: 0;
|
828 |
-
}
|
829 |
-
.ui-datepicker .ui-datepicker-buttonpane button {
|
830 |
-
float: right;
|
831 |
-
margin: .5em .2em .4em;
|
832 |
-
cursor: pointer;
|
833 |
-
padding: .2em .6em .3em .6em;
|
834 |
-
width: auto;
|
835 |
-
overflow: visible;
|
836 |
-
}
|
837 |
-
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
|
838 |
-
float: left;
|
839 |
-
}
|
840 |
-
|
841 |
-
/* with multiple calendars */
|
842 |
-
.ui-datepicker.ui-datepicker-multi {
|
843 |
-
width: auto;
|
844 |
-
}
|
845 |
-
.ui-datepicker-multi .ui-datepicker-group {
|
846 |
-
float: left;
|
847 |
-
}
|
848 |
-
.ui-datepicker-multi .ui-datepicker-group table {
|
849 |
-
width: 95%;
|
850 |
-
margin: 0 auto .4em;
|
851 |
-
}
|
852 |
-
.ui-datepicker-multi-2 .ui-datepicker-group {
|
853 |
-
width: 50%;
|
854 |
-
}
|
855 |
-
.ui-datepicker-multi-3 .ui-datepicker-group {
|
856 |
-
width: 33.3%;
|
857 |
-
}
|
858 |
-
.ui-datepicker-multi-4 .ui-datepicker-group {
|
859 |
-
width: 25%;
|
860 |
-
}
|
861 |
-
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
|
862 |
-
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
|
863 |
-
border-left-width: 0;
|
864 |
-
}
|
865 |
-
.ui-datepicker-multi .ui-datepicker-buttonpane {
|
866 |
-
clear: left;
|
867 |
-
}
|
868 |
-
.ui-datepicker-row-break {
|
869 |
-
clear: both;
|
870 |
-
width: 100%;
|
871 |
-
font-size: 0;
|
872 |
-
}
|
873 |
-
|
874 |
-
/* RTL support */
|
875 |
-
.ui-datepicker-rtl {
|
876 |
-
direction: rtl;
|
877 |
-
}
|
878 |
-
.ui-datepicker-rtl .ui-datepicker-prev {
|
879 |
-
right: 2px;
|
880 |
-
left: auto;
|
881 |
-
}
|
882 |
-
.ui-datepicker-rtl .ui-datepicker-next {
|
883 |
-
left: 2px;
|
884 |
-
right: auto;
|
885 |
-
}
|
886 |
-
.ui-datepicker-rtl .ui-datepicker-prev:hover {
|
887 |
-
right: 1px;
|
888 |
-
left: auto;
|
889 |
-
}
|
890 |
-
.ui-datepicker-rtl .ui-datepicker-next:hover {
|
891 |
-
left: 1px;
|
892 |
-
right: auto;
|
893 |
-
}
|
894 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane {
|
895 |
-
clear: right;
|
896 |
-
}
|
897 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
|
898 |
-
float: left;
|
899 |
-
}
|
900 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
|
901 |
-
.ui-datepicker-rtl .ui-datepicker-group {
|
902 |
-
float: right;
|
903 |
-
}
|
904 |
-
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
|
905 |
-
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
|
906 |
-
border-right-width: 0;
|
907 |
-
border-left-width: 1px;
|
908 |
-
}
|
909 |
-
|
910 |
-
/* Icons */
|
911 |
-
.ui-datepicker .ui-icon {
|
912 |
-
display: block;
|
913 |
-
text-indent: -99999px;
|
914 |
-
overflow: hidden;
|
915 |
-
background-repeat: no-repeat;
|
916 |
-
left: .5em;
|
917 |
-
top: .3em;
|
918 |
-
}
|
741 |
filter: Alpha(Opacity=30); /* support: IE8 */
|
742 |
border-radius: 8px;
|
743 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/css/popup.css
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
height: 80%;
|
25 |
display: block;
|
26 |
background: white;
|
27 |
-
border: 2px solid #
|
28 |
border-radius: 20px;
|
29 |
padding: 1rem;
|
30 |
padding-top: 0px;
|
@@ -36,7 +36,7 @@
|
|
36 |
}
|
37 |
|
38 |
#mo_popup_id input[type="radio"]:checked + label {
|
39 |
-
background: #
|
40 |
color: hsla(215, 0%, 100%, 1);
|
41 |
&::after {
|
42 |
color: hsla(215, 5%, 25%, 1);
|
24 |
height: 80%;
|
25 |
display: block;
|
26 |
background: white;
|
27 |
+
border: 2px solid #2271b1;
|
28 |
border-radius: 20px;
|
29 |
padding: 1rem;
|
30 |
padding-top: 0px;
|
36 |
}
|
37 |
|
38 |
#mo_popup_id input[type="radio"]:checked + label {
|
39 |
+
background: #2271b1;
|
40 |
color: hsla(215, 0%, 100%, 1);
|
41 |
&::after {
|
42 |
color: hsla(215, 5%, 25%, 1);
|
includes/css/style_settings.css
CHANGED
@@ -1,10 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.mo2f-chat-popup {
|
2 |
display: none;
|
3 |
position: fixed;
|
4 |
bottom: 0;
|
5 |
right: 15px;
|
6 |
border: 3px solid #f1f1f1;
|
7 |
-
z-index:
|
8 |
}
|
9 |
.mo2f-open-button {
|
10 |
background-color: #555;
|
@@ -27,6 +57,22 @@
|
|
27 |
float: left;
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
.mo2f-form-container textarea {
|
32 |
width: 100%;
|
@@ -77,23 +123,22 @@
|
|
77 |
text-decoration: none;
|
78 |
cursor: pointer;
|
79 |
}
|
|
|
|
|
80 |
.mo-2fa-help-button-text {
|
81 |
cursor: pointer;
|
82 |
font-size: 16px;
|
83 |
-
|
84 |
-
|
85 |
bottom: 3%;
|
86 |
right: 7%;
|
87 |
position: fixed;
|
88 |
font-weight: 700;
|
89 |
color: #fff;
|
90 |
-
border-
|
91 |
-
border-top-right-radius: 15px;
|
92 |
-
border-bottom-right-radius: 15px;
|
93 |
-
border-bottom-left-radius: 15px;
|
94 |
-
border: 3px solid #002ab6;
|
95 |
padding: 9px;
|
96 |
transition: all 3s ease-in-out;
|
|
|
97 |
}
|
98 |
.mo_support_input_label {
|
99 |
color: #999;
|
@@ -108,7 +153,7 @@
|
|
108 |
height: 0;
|
109 |
position: absolute;
|
110 |
border-top: 15px solid transparent;
|
111 |
-
border-left: 30px solid #
|
112 |
border-bottom: 15px solid transparent;
|
113 |
right: -32px;
|
114 |
top: 16px;
|
@@ -169,6 +214,11 @@
|
|
169 |
right:13%!important
|
170 |
}
|
171 |
}
|
|
|
|
|
|
|
|
|
|
|
172 |
.mo-2fa-mail-button
|
173 |
{
|
174 |
bottom: 2.5%;
|
@@ -184,22 +234,21 @@
|
|
184 |
box-shadow: 1px 1px 10px 3px #8e8e9c;
|
185 |
}
|
186 |
.mo2f_blue_premium_features{
|
187 |
-
|
188 |
margin: 2px;
|
189 |
-
color
|
190 |
-
|
|
|
191 |
text-decoration: none;
|
192 |
padding: 5px;
|
193 |
font-size: 15px;
|
194 |
}
|
195 |
.mo2f_btn_premium_features
|
196 |
{
|
197 |
-
background-color: #
|
198 |
color: #fff;
|
199 |
cursor: pointer;
|
200 |
margin: 2px;
|
201 |
-
border-radius: 3px;
|
202 |
-
border: 2px solid #20b2aa;
|
203 |
text-decoration: none;
|
204 |
padding: 5px;
|
205 |
font-size: 12px;
|
@@ -254,8 +303,8 @@
|
|
254 |
}
|
255 |
.mo2f_2fa_plan_title
|
256 |
{
|
257 |
-
background-color:
|
258 |
-
border: 2px solid
|
259 |
}
|
260 |
.mo2f_padding_style
|
261 |
{
|
@@ -280,7 +329,7 @@
|
|
280 |
.mo2f_tooltip .mo2f_tooltiptext {
|
281 |
visibility: hidden;
|
282 |
width: 200px;
|
283 |
-
background-color:
|
284 |
color: white;
|
285 |
text-align: center;
|
286 |
border-radius: 6px;
|
@@ -297,13 +346,14 @@
|
|
297 |
}
|
298 |
.mo2f_tooltip_addon .mo2f_tooltiptext_addon {
|
299 |
visibility: hidden;
|
300 |
-
|
301 |
-
|
|
|
302 |
color: white;
|
303 |
text-align: center;
|
304 |
border-radius: 6px;
|
305 |
font-size: 14px;
|
306 |
-
padding:
|
307 |
/* Position the tooltip */
|
308 |
position: absolute;
|
309 |
z-index: 9999;
|
@@ -314,9 +364,9 @@
|
|
314 |
}*/
|
315 |
.mo2f_info_tab
|
316 |
{
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
}
|
321 |
.mo2f_info_tab:hover
|
322 |
{
|
@@ -356,15 +406,15 @@
|
|
356 |
border-radius: 50em;
|
357 |
border-width: 1px;
|
358 |
border-style: solid;
|
359 |
-
border-color:
|
360 |
border-image: initial;
|
361 |
}
|
362 |
-
.
|
363 |
{
|
364 |
position: relative;
|
365 |
z-index: 1;
|
366 |
display: inline-block;
|
367 |
-
float:
|
368 |
width: 210px;
|
369 |
height: 44px;
|
370 |
line-height: 40px;
|
@@ -595,7 +645,7 @@
|
|
595 |
background-color: white;
|
596 |
}
|
597 |
.mo_wpns_button_info_tab {
|
598 |
-
background-color:
|
599 |
border: none;
|
600 |
color: white;
|
601 |
height: 1.8em;
|
@@ -761,7 +811,7 @@
|
|
761 |
font-size: 103%;
|
762 |
margin-top: 20px;
|
763 |
margin-bottom: 20px;
|
764 |
-
border: solid 1px
|
765 |
background-color: white;
|
766 |
color: black;
|
767 |
width :162px;
|
@@ -770,16 +820,16 @@
|
|
770 |
|
771 |
/* Change background color of buttons on hover */
|
772 |
.mo_wpns_tab button:hover {
|
773 |
-
background-color:
|
774 |
color: white;
|
775 |
}
|
776 |
|
777 |
/* Create an active/current tablink class */
|
778 |
.mo_wpns_tab button.active {
|
779 |
-
background-color:
|
780 |
color: white;
|
781 |
width: 20%;
|
782 |
-
border: solid 1px
|
783 |
/*border-bottom: none;*/
|
784 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
785 |
font-weight: 600;
|
@@ -793,7 +843,7 @@
|
|
793 |
border-top: none;
|
794 |
}
|
795 |
.mo_wpsn_button {
|
796 |
-
background-color:
|
797 |
border: none;
|
798 |
color: white;
|
799 |
padding: 11px 32px;
|
@@ -816,22 +866,26 @@
|
|
816 |
padding:0px 24px 10px 10px;
|
817 |
min-height:220px;
|
818 |
}
|
819 |
-
.
|
820 |
margin-bottom: 10px;
|
821 |
margin-top: 10px;
|
822 |
-
height:
|
823 |
width:100%;
|
824 |
float:left;
|
825 |
|
|
|
|
|
|
|
|
|
|
|
826 |
|
827 |
}
|
828 |
.mo_wpns_divided_layout{
|
829 |
margin-bottom: 10px;
|
830 |
margin-top: 10px;
|
831 |
height:auto;
|
832 |
-
width:
|
833 |
float:left;
|
834 |
-
|
835 |
|
836 |
}
|
837 |
.mo_wpns_divided_layout_2
|
@@ -852,7 +906,7 @@
|
|
852 |
min-height: 222px;
|
853 |
overflow: hidden;
|
854 |
text-align: center;
|
855 |
-
border-top: 6px solid
|
856 |
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
857 |
}
|
858 |
.mo_wpns_small_layout{
|
@@ -864,18 +918,23 @@
|
|
864 |
margin: 10px;
|
865 |
padding: 5px 20px;
|
866 |
background-color: #FFFFFF;
|
867 |
-
|
868 |
float: left;
|
869 |
-
width:
|
870 |
margin-left: 1%;
|
871 |
-
min-height:
|
872 |
-
overflow:
|
873 |
text-align: center;
|
874 |
-
border-top: 6px solid
|
875 |
-
|
876 |
/*font-style: italic;*/
|
877 |
|
878 |
}
|
|
|
|
|
|
|
|
|
|
|
879 |
.mo_wpns_method_layout{
|
880 |
margin: 10px;
|
881 |
padding: 5px 20px;
|
@@ -887,7 +946,7 @@
|
|
887 |
min-height: 222px;
|
888 |
overflow: hidden;
|
889 |
text-align: center;
|
890 |
-
border-top: 6px solid
|
891 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
892 |
/*font-style: italic;*/
|
893 |
|
@@ -900,34 +959,40 @@
|
|
900 |
/*border: 1px solid #CCCCCC;*/
|
901 |
float: left;
|
902 |
width: 47%;
|
903 |
-
margin-left: 1%;
|
904 |
-
height:
|
905 |
text-align: center;
|
|
|
906 |
}
|
907 |
|
908 |
|
909 |
.mo_wpns_small_3_layout
|
910 |
{
|
911 |
-
|
|
|
|
|
|
|
912 |
width: 64%;
|
913 |
-
height:
|
914 |
text-align: center;
|
915 |
-
margin-top:
|
|
|
|
|
916 |
}
|
917 |
.mo_wpns_line
|
918 |
{
|
919 |
-
border: 1.2px solid
|
920 |
}
|
921 |
.mo_wpns_dashboard_layout
|
922 |
{
|
923 |
margin: 10px;
|
924 |
-
/*padding: 5px 20px;*/
|
925 |
-
background-color: none;
|
926 |
-
/*border: 1px solid #CCCCCC;*/
|
927 |
float: left;
|
928 |
-
width:
|
929 |
-
height:
|
930 |
-
margin-left:
|
|
|
|
|
|
|
931 |
}
|
932 |
.mo_wpns_inside_dashboard_layout
|
933 |
{
|
@@ -940,7 +1005,7 @@
|
|
940 |
height: 100px;
|
941 |
margin-left: 1%;
|
942 |
font-weight: 600;
|
943 |
-
border-top: 2px solid
|
944 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
945 |
}
|
946 |
.mo_wpns_sub_dashboards_layout
|
@@ -948,13 +1013,15 @@
|
|
948 |
margin-top: 10px;
|
949 |
padding: 5px 0px;
|
950 |
background-color: #FFFFFF;
|
951 |
-
border: 1px solid
|
952 |
float: left;
|
953 |
width: 34%;
|
954 |
-
height:
|
955 |
margin-left: 1%;
|
956 |
font-weight: 600;
|
957 |
-
border-top: 4px solid
|
|
|
|
|
958 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
959 |
/*font-style: italic;*/
|
960 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
@@ -964,14 +1031,15 @@
|
|
964 |
margin-top: 10px;
|
965 |
padding: 5px 0px;
|
966 |
background-color: #FFFFFF;
|
967 |
-
border: 1px solid
|
968 |
float: left;
|
969 |
width: 45%;
|
970 |
-
min-
|
|
|
971 |
overflow: hidden;
|
972 |
margin-left: 1%;
|
973 |
font-weight: 600;
|
974 |
-
border-top: 3px solid
|
975 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
976 |
/*font-style: italic;*/
|
977 |
}
|
@@ -1046,7 +1114,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1046 |
margin-left: 0.3%;
|
1047 |
float: left;
|
1048 |
text-align: center;
|
1049 |
-
border: 2px solid
|
1050 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1051 |
}
|
1052 |
|
@@ -1058,7 +1126,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1058 |
margin-left: 1%;
|
1059 |
float: left;
|
1060 |
/*text-align: center;*/
|
1061 |
-
border: 2px solid
|
1062 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1063 |
}
|
1064 |
.mo_wpns_settings_textarea
|
@@ -1098,7 +1166,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1098 |
margin: 10px;
|
1099 |
padding: 5px 20px;
|
1100 |
background-color: #FFFFFF;
|
1101 |
-
border: 2px solid
|
1102 |
float: left;
|
1103 |
width: 593px;
|
1104 |
min-height: 200px;
|
@@ -1119,21 +1187,20 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1119 |
margin: 5px;
|
1120 |
margin-left: 0px;
|
1121 |
padding: 5px 20px 30px 20px;
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1130 |
}
|
1131 |
.mo_wpns_setting_layout_scan
|
1132 |
{
|
1133 |
margin: 5px;
|
1134 |
padding: 5px 20px 30px 20px;
|
1135 |
background-color: #FFFFFF;
|
1136 |
-
border:
|
1137 |
float: left;
|
1138 |
width: 80%;
|
1139 |
margin-left: 10%;
|
@@ -1172,7 +1239,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1172 |
|
1173 |
/* Create an active/current tablink class */
|
1174 |
.mo_wpns_sub_nav_tab button.mo_wpns_sub_nav_active {
|
1175 |
-
background-color:
|
1176 |
color: white;
|
1177 |
}
|
1178 |
|
@@ -1211,12 +1278,12 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1211 |
width:23.3%;
|
1212 |
float:left;
|
1213 |
background-color: white;
|
1214 |
-
border-top: 4px solid
|
1215 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1216 |
font-style: italic;
|
1217 |
}
|
1218 |
.mo_wpns_button {
|
1219 |
-
background-color:
|
1220 |
border: none;
|
1221 |
color: white;
|
1222 |
padding: 11px 28px;
|
@@ -1247,7 +1314,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1247 |
|
1248 |
|
1249 |
.mo_wpns_dashboard_button {
|
1250 |
-
background-color:
|
1251 |
border: none;
|
1252 |
color: white;
|
1253 |
padding-top: 10px;
|
@@ -1282,7 +1349,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1282 |
}*/
|
1283 |
.mo_wpns_upgrade_page_button
|
1284 |
{
|
1285 |
-
border: 2px solid
|
1286 |
background-color: #2a80ca;
|
1287 |
color: white;
|
1288 |
padding: 12px 0px;
|
@@ -1351,7 +1418,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1351 |
min-height: 222px;
|
1352 |
overflow: hidden;
|
1353 |
text-align: center;
|
1354 |
-
border-top: 6px solid
|
1355 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1356 |
}
|
1357 |
|
@@ -1366,7 +1433,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1366 |
height: 220px;
|
1367 |
overflow: hidden;
|
1368 |
text-align: center;
|
1369 |
-
/*border-top: 6px solid
|
1370 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1371 |
}
|
1372 |
|
@@ -1429,7 +1496,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1429 |
background-color: #dddddd;
|
1430 |
}
|
1431 |
.mo_wpns_free_feature_button {
|
1432 |
-
/*background-color: green; /* Green
|
1433 |
border: none;
|
1434 |
color: black;
|
1435 |
padding: 11px 12px;
|
@@ -1500,15 +1567,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1500 |
width: 100%;
|
1501 |
|
1502 |
}
|
1503 |
-
.mo_wpns_divided_layout_tab{
|
1504 |
-
margin-bottom: 10px;
|
1505 |
-
margin-top: 10px;
|
1506 |
-
height:auto;
|
1507 |
-
width:100%;
|
1508 |
-
float:left;
|
1509 |
-
|
1510 |
|
1511 |
-
}
|
1512 |
.mo_wpns_small_layout{
|
1513 |
/*background-color:#FFFFFF;
|
1514 |
border:1px solid #CCCCCC;
|
@@ -1527,7 +1586,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1527 |
text-align: center;
|
1528 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1529 |
/*font-style: italic;*/
|
1530 |
-
border-top: 6px solid
|
1531 |
}
|
1532 |
|
1533 |
.mo_wpns_small_layout_test{
|
@@ -1551,39 +1610,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1551 |
|
1552 |
}
|
1553 |
|
1554 |
-
.
|
1555 |
-
{
|
1556 |
-
/*margin: 10px;*/
|
1557 |
-
/*padding: 5px 20px;*/
|
1558 |
-
/*background-color: yellow;*/
|
1559 |
-
/*border: 1px solid #CCCCCC;*/
|
1560 |
-
float: left;
|
1561 |
-
width: 100%;
|
1562 |
-
margin-left: 1%;
|
1563 |
-
height: 120px;
|
1564 |
-
text-align: center;
|
1565 |
-
}
|
1566 |
-
.mo_wpns_small_3_layout
|
1567 |
-
{
|
1568 |
-
float: left;
|
1569 |
-
width: 68%;
|
1570 |
-
height: 222px;
|
1571 |
-
text-align: center;
|
1572 |
-
margin-top: 26px;
|
1573 |
-
}
|
1574 |
-
.mo_wpns_dashboard_layout
|
1575 |
-
{
|
1576 |
-
/*margin: 10px;*/
|
1577 |
-
padding: 5px 20px;
|
1578 |
-
background-color: none;
|
1579 |
-
|
1580 |
-
float: left;
|
1581 |
-
width: 90%;
|
1582 |
-
height: auto;
|
1583 |
-
/*margin-left: 1%;*/
|
1584 |
-
|
1585 |
-
}
|
1586 |
-
.mo_wpns_inside_dashboard_layout
|
1587 |
{
|
1588 |
margin-top: 10px;
|
1589 |
padding: 5px 0px;
|
@@ -1592,10 +1619,10 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1592 |
float: left;
|
1593 |
width: 18.5%;
|
1594 |
height: 100px;
|
1595 |
-
border-top: 2px solid
|
1596 |
font-weight: 600;
|
1597 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1598 |
-
}
|
1599 |
|
1600 |
/*.wpns_font_size {
|
1601 |
font-size: 30px;
|
@@ -1625,7 +1652,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1625 |
|
1626 |
.mo_wpns_dashboard_button
|
1627 |
{
|
1628 |
-
background-color:
|
1629 |
border: none;
|
1630 |
color: white;
|
1631 |
padding-top: 10px;
|
@@ -1658,52 +1685,16 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1658 |
text-align: center;
|
1659 |
color: black;
|
1660 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1661 |
-
/*margin-top: 20px;
|
1662 |
-
padding: 5px 20px;
|
1663 |
-
background-color: #20b2aa;
|
1664 |
-
border: 1px solid #CCCCCC;
|
1665 |
-
float: left;
|
1666 |
-
width: 227px;
|
1667 |
-
height: 170px;
|
1668 |
-
margin-left: 1%;
|
1669 |
-
color: white;
|
1670 |
-
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1671 |
}
|
1672 |
-
.mo_wpns_sub_dashboards_layout
|
1673 |
-
{
|
1674 |
-
margin-top: 10px;
|
1675 |
-
padding: 5px 0px;
|
1676 |
-
background-color: #FFFFFF;
|
1677 |
-
border: 1px solid lightseagreen;
|
1678 |
-
float: left;
|
1679 |
-
width: 30%;
|
1680 |
-
height: 100px;
|
1681 |
-
margin-left: 1%;
|
1682 |
-
font-weight: 600;
|
1683 |
-
border-top: 4px solid lightseagreen;
|
1684 |
|
1685 |
-
|
1686 |
-
}
|
1687 |
-
.mo_wpns_sub_sub_dashboard_layout
|
1688 |
-
{
|
1689 |
-
margin-top: 10px;
|
1690 |
-
padding: 5px 0px;
|
1691 |
-
background-color: #FFFFFF;
|
1692 |
-
border: 1px solid lightseagreen;
|
1693 |
-
float: left;
|
1694 |
-
width: 22%;
|
1695 |
-
min-height: 74px;
|
1696 |
-
overflow: hidden;
|
1697 |
-
margin-left: 1%;
|
1698 |
-
font-weight: 600;
|
1699 |
-
border-top: 3px solid lightseagreen;
|
1700 |
-
}
|
1701 |
.mo_wpns_container{
|
1702 |
/*padding:10px;*/
|
1703 |
width: 100%;
|
1704 |
/*background-color: yellow;*/
|
1705 |
height: auto;
|
1706 |
}
|
|
|
1707 |
.mo_wpns_details_layout
|
1708 |
{
|
1709 |
margin:10px;
|
@@ -1719,7 +1710,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1719 |
float:left;
|
1720 |
border: 1px solid;
|
1721 |
background-color: white;
|
1722 |
-
border-top: 4px solid
|
1723 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1724 |
font-style: italic;
|
1725 |
}
|
@@ -1733,35 +1724,22 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1733 |
font-size: 103%;
|
1734 |
margin-top: 20px;
|
1735 |
margin-bottom: 20px;
|
1736 |
-
border: solid 1px
|
1737 |
background-color: white;
|
1738 |
color: black;
|
1739 |
width: 129px;
|
1740 |
height: 55%;
|
1741 |
}
|
1742 |
.mo_wpns_tab button.active {
|
1743 |
-
background-color:
|
1744 |
color: white;
|
1745 |
width: 130px;
|
1746 |
-
border: solid 1px
|
1747 |
/*border-bottom: none;*/
|
1748 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1749 |
font-weight: 600;
|
1750 |
}
|
1751 |
|
1752 |
-
|
1753 |
-
/* background-color: #4CAF50;
|
1754 |
-
border: none;
|
1755 |
-
color: white;
|
1756 |
-
padding: 15px 32px;
|
1757 |
-
text-align: center;
|
1758 |
-
text-decoration: none;
|
1759 |
-
display: inline-block;
|
1760 |
-
font-size: 16px;
|
1761 |
-
margin: 10px 14px;
|
1762 |
-
cursor: pointer;
|
1763 |
-
width: 20%;*/
|
1764 |
-
}
|
1765 |
.mo_wpns_third_layout{
|
1766 |
margin-top: 10px;
|
1767 |
padding: 5px 20px;
|
@@ -1792,7 +1770,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1792 |
margin: 10px;
|
1793 |
padding: 5px 20px;
|
1794 |
background-color: #FFFFFF;
|
1795 |
-
border: 2px solid
|
1796 |
float: left;
|
1797 |
width: 90%;
|
1798 |
min-height: 200px;
|
@@ -1800,7 +1778,9 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1800 |
text-align: center;
|
1801 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1802 |
}
|
1803 |
-
|
|
|
|
|
1804 |
h1 .nav-tab, a .nav-tab{
|
1805 |
font-size : auto;
|
1806 |
background-color: none; /* Green
|
@@ -1813,7 +1793,6 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1813 |
|
1814 |
font-size: 20px;
|
1815 |
margin: 5px 0px;
|
1816 |
-
cursor: pointer;
|
1817 |
/*border-radius: 23px;*/
|
1818 |
width: 07.5%;
|
1819 |
border: 1px solid gray;
|
@@ -1825,20 +1804,20 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1825 |
/*background-color: #4CAF50;*/
|
1826 |
font-size: 150%;
|
1827 |
box-shadow: 3px 4px 3px #888888;
|
1828 |
-
background-color:
|
1829 |
color: white;
|
1830 |
|
1831 |
}
|
1832 |
h1 .nav-tab:hover , a .nav-tab:hover
|
1833 |
{
|
1834 |
-
background-color:
|
1835 |
color: white;
|
1836 |
/*border-bottom: none;*/
|
1837 |
}
|
1838 |
h1 .nav-tab-active:hover , a .nav-tab-active:hover
|
1839 |
{
|
1840 |
background-color: white;
|
1841 |
-
color
|
1842 |
}
|
1843 |
.mo_wpns_sub_nav_tab button {
|
1844 |
background-color: inherit;
|
@@ -1857,21 +1836,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1857 |
color: black;
|
1858 |
width :210px;
|
1859 |
}
|
1860 |
-
.mo_wpns_setting_layout
|
1861 |
-
{
|
1862 |
-
margin: 5px;
|
1863 |
-
margin-left: 0px;
|
1864 |
-
padding: 5px 20px 30px 20px;
|
1865 |
-
background-color: #FFFFFF;
|
1866 |
-
border: 2px solid #20b2aa;
|
1867 |
-
float: left;
|
1868 |
-
width: 90%;
|
1869 |
-
/*margin-left: 1%;*/
|
1870 |
|
1871 |
-
overflow: hidden;
|
1872 |
-
text-align: left;
|
1873 |
-
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1874 |
-
}
|
1875 |
.mo_wpns_products-dollar-amount {
|
1876 |
color: #797878;
|
1877 |
font-weight: 400;
|
@@ -1897,7 +1862,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1897 |
-o-transition: border .2s ease-in-out;
|
1898 |
transition: border .2s ease-in-out
|
1899 |
}
|
1900 |
-
|
1901 |
|
1902 |
|
1903 |
.mo_wpns_table_layout td strong {
|
@@ -1917,7 +1882,7 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1917 |
}
|
1918 |
|
1919 |
.fixed {
|
1920 |
-
|
1921 |
}
|
1922 |
.mo_wpns_table_textbox {
|
1923 |
width:100%;
|
@@ -2050,49 +2015,60 @@ h2.mo_wpns_nav-tab-wrapper
|
|
2050 |
width:33%;
|
2051 |
float: left;
|
2052 |
}
|
2053 |
-
|
|
|
2054 |
{
|
2055 |
-
|
2056 |
-
/*background-color: none; /* Green */
|
2057 |
-
/*background-color: #4CAFA4;*/
|
2058 |
-
background-color: white;
|
2059 |
-
border: 1px ;
|
2060 |
-
color: black;
|
2061 |
-
padding: 10px;
|
2062 |
text-align: center;
|
2063 |
-
|
2064 |
|
2065 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2066 |
|
2067 |
-
|
2068 |
-
|
2069 |
-
|
2070 |
-
|
2071 |
-
|
2072 |
-
|
2073 |
-
/*width: 100px;*/
|
2074 |
}
|
2075 |
-
|
2076 |
-
|
2077 |
-
|
2078 |
-
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
2090 |
-
|
2091 |
-
|
2092 |
-
|
2093 |
-
|
2094 |
-
|
2095 |
-
|
|
|
2096 |
.ip_lookup_desc,.file_backup_desc{
|
2097 |
background-color:#E6E6E6;
|
2098 |
width:100%;
|
@@ -2467,22 +2443,17 @@ a{
|
|
2467 |
font-weight: bold;
|
2468 |
}
|
2469 |
|
2470 |
-
|
2471 |
-
|
2472 |
-
margin-top: -10px;
|
2473 |
-
padding-right: 11px;
|
2474 |
-
}*/
|
2475 |
.wpns_font_shown {
|
|
|
2476 |
font-size: 70px;
|
2477 |
-
margin-top: -10px;
|
2478 |
-
margin-bottom: 5px;
|
2479 |
-
padding-right: 11px;
|
2480 |
}
|
2481 |
|
2482 |
/* Added for malware */
|
2483 |
.malwaresummarydiv{
|
2484 |
display: inline-flex;
|
2485 |
-
width:
|
2486 |
}
|
2487 |
.malwarescandiv{
|
2488 |
border-radius: 4px;
|
@@ -2541,11 +2512,6 @@ padding-right: 11px;
|
|
2541 |
line-height: 20px; /* To center it vertically */
|
2542 |
color: white;
|
2543 |
}
|
2544 |
-
/*#mo_wpns_bar {
|
2545 |
-
width: 0%;
|
2546 |
-
height: 20px;
|
2547 |
-
background-color: blue;
|
2548 |
-
}*/
|
2549 |
.mo_wpns_lightgreen{
|
2550 |
color:rgb(128, 173, 128);
|
2551 |
}
|
@@ -2588,7 +2554,7 @@ padding-right: 11px;
|
|
2588 |
width: 50%;
|
2589 |
}
|
2590 |
.mo_wpns_scan_button {
|
2591 |
-
background-color:
|
2592 |
border: none;
|
2593 |
color: white;
|
2594 |
padding: 5px 5px;
|
@@ -2602,7 +2568,7 @@ padding-right: 11px;
|
|
2602 |
transition-duration: 0.4s;
|
2603 |
}
|
2604 |
.mo_wpns_scan_modal_button {
|
2605 |
-
background-color:
|
2606 |
border: none;
|
2607 |
color: white;
|
2608 |
padding: 5px 80px;
|
@@ -2616,7 +2582,7 @@ padding-right: 11px;
|
|
2616 |
transition-duration: 0.4s;
|
2617 |
}
|
2618 |
.mo_wpns_deep_scan_button {
|
2619 |
-
background-color:
|
2620 |
border: none;
|
2621 |
color: white;
|
2622 |
padding: 5px 5px;
|
@@ -2638,18 +2604,18 @@ padding-right: 11px;
|
|
2638 |
{
|
2639 |
padding: 5px;
|
2640 |
background-color: #FFFFFF;
|
2641 |
-
border: 1px solid
|
2642 |
width: 23.5%;
|
2643 |
-
border-top: 4px solid
|
2644 |
min-height: 180px;
|
2645 |
}
|
2646 |
.mo_wpns_malwarescandiv
|
2647 |
{
|
2648 |
padding: 5px;
|
2649 |
background-color: #FFFFFF;
|
2650 |
-
border: 1px solid
|
2651 |
width: 50%;
|
2652 |
-
border-top: 4px solid
|
2653 |
}
|
2654 |
|
2655 |
|
@@ -2834,7 +2800,7 @@ padding-right: 11px;
|
|
2834 |
margin: 10px;
|
2835 |
float: left;
|
2836 |
text-align: center;
|
2837 |
-
border: 2px solid
|
2838 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
2839 |
}
|
2840 |
|
@@ -2845,6 +2811,32 @@ padding-right: 11px;
|
|
2845 |
|
2846 |
|
2847 |
/*2FA css used*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2848 |
.mo2f_licensing_plans {
|
2849 |
background-color: white;
|
2850 |
border-style: solid;
|
@@ -2872,7 +2864,7 @@ padding-right: 11px;
|
|
2872 |
}
|
2873 |
|
2874 |
.mo2f_auth_methods_table {
|
2875 |
-
border-spacing:
|
2876 |
border-collapse: separate;
|
2877 |
width: 100%;
|
2878 |
}
|
@@ -2910,7 +2902,6 @@ padding-right: 11px;
|
|
2910 |
min-height: 103%;
|
2911 |
overflow: hidden;
|
2912 |
background-color: #fff;
|
2913 |
-
border: 1px solid #ddd;
|
2914 |
-webkit-transition: border .2s ease-in-out;
|
2915 |
-o-transition: border .2s ease-in-out;
|
2916 |
transition: border .2s ease-in-out
|
@@ -2944,7 +2935,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
2944 |
}
|
2945 |
|
2946 |
.mo2f_thumbnail_method_desc{
|
2947 |
-
padding:
|
2948 |
font-size:17px;
|
2949 |
}
|
2950 |
|
@@ -2963,6 +2954,9 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
2963 |
outline: none;
|
2964 |
color: white;
|
2965 |
}
|
|
|
|
|
|
|
2966 |
|
2967 |
.mo2f_auth_methods_thumbnail {
|
2968 |
width: 50px;
|
@@ -2982,21 +2976,9 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
2982 |
align-content: center
|
2983 |
|
2984 |
}
|
2985 |
-
|
2986 |
-
|
2987 |
-
margin: 5px;
|
2988 |
-
margin-left: 0px;
|
2989 |
-
padding: 5px 20px 30px 20px;
|
2990 |
-
background-color: #FFFFFF;
|
2991 |
-
border: 2px solid #20b2aa;
|
2992 |
-
float: left;
|
2993 |
-
width: 94%;
|
2994 |
-
/*margin-left: 1%;*/
|
2995 |
-
/*overflow: hidden;*/
|
2996 |
-
text-align: left;
|
2997 |
-
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
2998 |
}
|
2999 |
-
|
3000 |
.mo2f_configure_set_2_factor:hover {
|
3001 |
font-weight: bold;
|
3002 |
font-size: 14px;
|
@@ -3109,6 +3091,15 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3109 |
border-radius: 4px;
|
3110 |
height: 30px;
|
3111 |
font-size: 13px !important;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3112 |
}
|
3113 |
|
3114 |
.mo2f_kba_table {
|
@@ -3201,7 +3192,17 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3201 |
text-align: center;
|
3202 |
padding: 11px;
|
3203 |
}
|
3204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3205 |
.mo2f_vertical-submenu a:hover {
|
3206 |
background-color: #ccc;
|
3207 |
}
|
@@ -3280,7 +3281,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3280 |
margin: 0px 0px;
|
3281 |
cursor: pointer;
|
3282 |
width: 1200px;
|
3283 |
-
border: 1px solid
|
3284 |
|
3285 |
}
|
3286 |
.mo_subtab_flex-container{
|
@@ -3300,25 +3301,25 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3300 |
margin: 0px 0px;
|
3301 |
cursor: pointer;
|
3302 |
width: 1200px;
|
3303 |
-
border: 1px solid
|
3304 |
}
|
3305 |
|
3306 |
.mo_wpns_sub_scanmode
|
3307 |
{
|
3308 |
padding: 5px;
|
3309 |
background-color: #FFFFFF;
|
3310 |
-
border: 1px solid
|
3311 |
width: 23.5%;
|
3312 |
-
border-top: 4px solid
|
3313 |
min-height: 180px;
|
3314 |
}
|
3315 |
.mo_wpns_sub_scansummary
|
3316 |
{
|
3317 |
padding: 5px;
|
3318 |
background-color: #FFFFFF;
|
3319 |
-
border: 1px solid
|
3320 |
width: 23.5%;
|
3321 |
-
border-top: 4px solid
|
3322 |
height: 120px;
|
3323 |
}
|
3324 |
.mo_wpns_scan_summary_text
|
@@ -3331,9 +3332,9 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3331 |
{
|
3332 |
padding: 5px;
|
3333 |
background-color: #FFFFFF;
|
3334 |
-
border: 1px solid
|
3335 |
width: 50%;
|
3336 |
-
border-top: 4px solid
|
3337 |
}
|
3338 |
|
3339 |
.mo_scan_modal {
|
@@ -3393,8 +3394,10 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3393 |
}
|
3394 |
/*Custom login form*/
|
3395 |
.customloginform{
|
|
|
|
|
3396 |
border-collapse: collapse;
|
3397 |
-
border:1px solid #
|
3398 |
}
|
3399 |
.customloginform th {
|
3400 |
|
@@ -3403,7 +3406,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3403 |
.customloginform td {
|
3404 |
/*width:80%;*/
|
3405 |
text-align:left;
|
3406 |
-
border:1px solid #
|
3407 |
padding:1%;
|
3408 |
|
3409 |
}
|
@@ -3415,16 +3418,30 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3415 |
.mo2f_doc_icon_style
|
3416 |
{
|
3417 |
font-size:25px;
|
3418 |
-
color:#
|
3419 |
}
|
3420 |
.mo2f_doc_font_size
|
3421 |
{
|
3422 |
font-size: 112%;
|
3423 |
width: 30%;
|
3424 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3425 |
.mo2f_advance_setting
|
3426 |
{
|
3427 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
3428 |
}
|
3429 |
.mo2f_advance_setting:hover
|
3430 |
{
|
@@ -3475,7 +3492,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3475 |
}
|
3476 |
.mo2f_addons_alignment
|
3477 |
{
|
3478 |
-
color
|
3479 |
font-size: large;
|
3480 |
float: left;
|
3481 |
margin-right: 5px;
|
@@ -3529,16 +3546,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3529 |
color: #ffffff;
|
3530 |
margin-left: 15px;
|
3531 |
}
|
3532 |
-
|
3533 |
-
background: #F2F5FF;
|
3534 |
-
border-radius: 5px;
|
3535 |
-
margin-top: 10px;
|
3536 |
-
margin-bottom: 15px;
|
3537 |
-
padding-top: 10px;
|
3538 |
-
border-style: solid;
|
3539 |
-
border-color: #2f6062;
|
3540 |
-
padding-left: 10px;
|
3541 |
-
}
|
3542 |
/* The switch - the box around the slider */
|
3543 |
.switch {
|
3544 |
position: relative;
|
@@ -3602,27 +3610,6 @@ input:checked + .slider:before {
|
|
3602 |
border-radius: 50%;
|
3603 |
}
|
3604 |
|
3605 |
-
|
3606 |
-
|
3607 |
-
|
3608 |
-
|
3609 |
-
|
3610 |
-
|
3611 |
-
|
3612 |
-
|
3613 |
-
|
3614 |
-
|
3615 |
-
|
3616 |
-
|
3617 |
-
|
3618 |
-
|
3619 |
-
|
3620 |
-
|
3621 |
-
|
3622 |
-
|
3623 |
-
|
3624 |
-
|
3625 |
-
|
3626 |
.mo_wpns_upgrade_page_2fa_ns_styles
|
3627 |
{
|
3628 |
background-color: #7ccbc7;
|
@@ -3812,67 +3799,246 @@ input:checked + .slider:before {
|
|
3812 |
|
3813 |
.mo2f_offer_main_div
|
3814 |
{
|
3815 |
-
|
3816 |
-
background-
|
3817 |
-
|
3818 |
-
|
3819 |
-
|
|
|
|
|
|
|
|
|
|
|
3820 |
}
|
3821 |
|
3822 |
.mo2f_offer_first_section
|
3823 |
{
|
3824 |
-
|
3825 |
-
|
3826 |
-
|
3827 |
-
|
3828 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3829 |
|
3830 |
}
|
3831 |
-
.mo2f_offer_first_section_text
|
3832 |
-
{
|
3833 |
-
font-size: 73px !important;
|
3834 |
-
text-align: center;
|
3835 |
-
margin: 0px;
|
3836 |
-
margin-bottom: 4% !important;
|
3837 |
-
color: black;
|
3838 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3839 |
}
|
3840 |
-
.
|
3841 |
-
|
3842 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3843 |
}
|
|
|
3844 |
.mo2f_offer_middle_section
|
3845 |
{
|
3846 |
-
width:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3847 |
}
|
3848 |
|
3849 |
.mo2f_offer_last_section
|
3850 |
{
|
3851 |
-
width:
|
|
|
|
|
|
|
3852 |
}
|
3853 |
|
3854 |
.mo2f_offer_contact_us
|
3855 |
{
|
3856 |
-
font-size:
|
3857 |
-
border-radius:
|
3858 |
-
|
3859 |
-
border: 0px;
|
3860 |
color: white;
|
3861 |
-
padding:
|
|
|
|
|
3862 |
text-decoration: none;
|
3863 |
}
|
3864 |
|
3865 |
-
.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3866 |
{
|
3867 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3868 |
}
|
3869 |
|
3870 |
.mo2f_offer_contact_us_layout
|
3871 |
{
|
3872 |
-
border: 3px solid
|
3873 |
}
|
3874 |
|
3875 |
.mo2f_offer_contact_us_button
|
3876 |
{
|
3877 |
-
background:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3878 |
}
|
1 |
+
|
2 |
+
|
3 |
+
:root {
|
4 |
+
--mo2f-theme-color: #2271b1;
|
5 |
+
--white: #ffffff;
|
6 |
+
}
|
7 |
+
|
8 |
+
.mo2f_miniAuthApp {
|
9 |
+
padding: 26px;
|
10 |
+
font-size: 18px;
|
11 |
+
font-weight: 600;
|
12 |
+
width: 100%;
|
13 |
+
height: 100%;
|
14 |
+
margin:-10px;
|
15 |
+
background-color:#2271b130;
|
16 |
+
display:block;
|
17 |
+
}
|
18 |
+
.mo2f_miniAuthApp:hover {
|
19 |
+
background: #2271b19e;
|
20 |
+
}
|
21 |
+
input[name = 'miniOrangeAuthenticator'] {
|
22 |
+
visibility:hidden;
|
23 |
+
}
|
24 |
+
input[name = 'miniOrangeAuthenticator']:checked + .mo2f_miniAuthApp{
|
25 |
+
background: #2271b1db;
|
26 |
+
}
|
27 |
+
.mo2fa-addons-preview-alignment{
|
28 |
+
text-align: right;
|
29 |
+
font-size: small
|
30 |
+
}
|
31 |
.mo2f-chat-popup {
|
32 |
display: none;
|
33 |
position: fixed;
|
34 |
bottom: 0;
|
35 |
right: 15px;
|
36 |
border: 3px solid #f1f1f1;
|
37 |
+
z-index: 998;
|
38 |
}
|
39 |
.mo2f-open-button {
|
40 |
background-color: #555;
|
57 |
float: left;
|
58 |
}
|
59 |
|
60 |
+
.mo2f_advanced_options_note {
|
61 |
+
|
62 |
+
|
63 |
+
background-color: #bbccdd;
|
64 |
+
|
65 |
+
|
66 |
+
border-radius: 2px;
|
67 |
+
|
68 |
+
|
69 |
+
font-style: italic;
|
70 |
+
|
71 |
+
|
72 |
+
padding:2%;
|
73 |
+
|
74 |
+
|
75 |
+
}
|
76 |
|
77 |
.mo2f-form-container textarea {
|
78 |
width: 100%;
|
123 |
text-decoration: none;
|
124 |
cursor: pointer;
|
125 |
}
|
126 |
+
|
127 |
+
|
128 |
.mo-2fa-help-button-text {
|
129 |
cursor: pointer;
|
130 |
font-size: 16px;
|
131 |
+
box-shadow: transparent;
|
132 |
+
background-color: #413c69;
|
133 |
bottom: 3%;
|
134 |
right: 7%;
|
135 |
position: fixed;
|
136 |
font-weight: 700;
|
137 |
color: #fff;
|
138 |
+
border-radius: 15px;
|
|
|
|
|
|
|
|
|
139 |
padding: 9px;
|
140 |
transition: all 3s ease-in-out;
|
141 |
+
display: none;
|
142 |
}
|
143 |
.mo_support_input_label {
|
144 |
color: #999;
|
153 |
height: 0;
|
154 |
position: absolute;
|
155 |
border-top: 15px solid transparent;
|
156 |
+
border-left: 30px solid #413c69;
|
157 |
border-bottom: 15px solid transparent;
|
158 |
right: -32px;
|
159 |
top: 16px;
|
214 |
right:13%!important
|
215 |
}
|
216 |
}
|
217 |
+
#wpbody-content
|
218 |
+
{
|
219 |
+
padding: 0px;
|
220 |
+
}
|
221 |
+
|
222 |
.mo-2fa-mail-button
|
223 |
{
|
224 |
bottom: 2.5%;
|
234 |
box-shadow: 1px 1px 10px 3px #8e8e9c;
|
235 |
}
|
236 |
.mo2f_blue_premium_features{
|
237 |
+
cursor: pointer;
|
238 |
margin: 2px;
|
239 |
+
color: white;
|
240 |
+
font-style: oblique;
|
241 |
+
background-color:#a7c5eb;
|
242 |
text-decoration: none;
|
243 |
padding: 5px;
|
244 |
font-size: 15px;
|
245 |
}
|
246 |
.mo2f_btn_premium_features
|
247 |
{
|
248 |
+
background-color: #4a47a3;
|
249 |
color: #fff;
|
250 |
cursor: pointer;
|
251 |
margin: 2px;
|
|
|
|
|
252 |
text-decoration: none;
|
253 |
padding: 5px;
|
254 |
font-size: 12px;
|
303 |
}
|
304 |
.mo2f_2fa_plan_title
|
305 |
{
|
306 |
+
background-color: var(--mo2f-theme-color);
|
307 |
+
border: 2px solid var(--mo2f-theme-color);
|
308 |
}
|
309 |
.mo2f_padding_style
|
310 |
{
|
329 |
.mo2f_tooltip .mo2f_tooltiptext {
|
330 |
visibility: hidden;
|
331 |
width: 200px;
|
332 |
+
background-color: var(--mo2f-theme-color);
|
333 |
color: white;
|
334 |
text-align: center;
|
335 |
border-radius: 6px;
|
346 |
}
|
347 |
.mo2f_tooltip_addon .mo2f_tooltiptext_addon {
|
348 |
visibility: hidden;
|
349 |
+
font-family: 'Roboto Thin', sans-serif;
|
350 |
+
width: 500px;
|
351 |
+
background-color: #709fb0;
|
352 |
color: white;
|
353 |
text-align: center;
|
354 |
border-radius: 6px;
|
355 |
font-size: 14px;
|
356 |
+
padding: 10px;
|
357 |
/* Position the tooltip */
|
358 |
position: absolute;
|
359 |
z-index: 9999;
|
364 |
}*/
|
365 |
.mo2f_info_tab
|
366 |
{
|
367 |
+
margin: 2px;
|
368 |
+
color:#709fb0;
|
369 |
+
cursor: pointer;
|
370 |
}
|
371 |
.mo2f_info_tab:hover
|
372 |
{
|
406 |
border-radius: 50em;
|
407 |
border-width: 1px;
|
408 |
border-style: solid;
|
409 |
+
border-color: var(--mo2f-theme-color);
|
410 |
border-image: initial;
|
411 |
}
|
412 |
+
.mo2f_upgrade_toggle_lable
|
413 |
{
|
414 |
position: relative;
|
415 |
z-index: 1;
|
416 |
display: inline-block;
|
417 |
+
float:left;
|
418 |
width: 210px;
|
419 |
height: 44px;
|
420 |
line-height: 40px;
|
645 |
background-color: white;
|
646 |
}
|
647 |
.mo_wpns_button_info_tab {
|
648 |
+
background-color: var(--mo2f-theme-color);
|
649 |
border: none;
|
650 |
color: white;
|
651 |
height: 1.8em;
|
811 |
font-size: 103%;
|
812 |
margin-top: 20px;
|
813 |
margin-bottom: 20px;
|
814 |
+
border: solid 1px var(--mo2f-theme-color);
|
815 |
background-color: white;
|
816 |
color: black;
|
817 |
width :162px;
|
820 |
|
821 |
/* Change background color of buttons on hover */
|
822 |
.mo_wpns_tab button:hover {
|
823 |
+
background-color: var(--mo2f-theme-color);
|
824 |
color: white;
|
825 |
}
|
826 |
|
827 |
/* Create an active/current tablink class */
|
828 |
.mo_wpns_tab button.active {
|
829 |
+
background-color: var(--mo2f-theme-color);
|
830 |
color: white;
|
831 |
width: 20%;
|
832 |
+
border: solid 1px var(--mo2f-theme-color);
|
833 |
/*border-bottom: none;*/
|
834 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
835 |
font-weight: 600;
|
843 |
border-top: none;
|
844 |
}
|
845 |
.mo_wpsn_button {
|
846 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
847 |
border: none;
|
848 |
color: white;
|
849 |
padding: 11px 32px;
|
866 |
padding:0px 24px 10px 10px;
|
867 |
min-height:220px;
|
868 |
}
|
869 |
+
.mo_wpns_waf_divided_layout_tab{
|
870 |
margin-bottom: 10px;
|
871 |
margin-top: 10px;
|
872 |
+
height: 200px;
|
873 |
width:100%;
|
874 |
float:left;
|
875 |
|
876 |
+
}
|
877 |
+
.mo_wpns_offer_image{
|
878 |
+
margin-bottom: 10px;
|
879 |
+
margin-top: 10px;
|
880 |
+
float:left;
|
881 |
|
882 |
}
|
883 |
.mo_wpns_divided_layout{
|
884 |
margin-bottom: 10px;
|
885 |
margin-top: 10px;
|
886 |
height:auto;
|
887 |
+
width:100%;
|
888 |
float:left;
|
|
|
889 |
|
890 |
}
|
891 |
.mo_wpns_divided_layout_2
|
906 |
min-height: 222px;
|
907 |
overflow: hidden;
|
908 |
text-align: center;
|
909 |
+
border-top: 6px solid var(--mo2f-theme-color);
|
910 |
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
911 |
}
|
912 |
.mo_wpns_small_layout{
|
918 |
margin: 10px;
|
919 |
padding: 5px 20px;
|
920 |
background-color: #FFFFFF;
|
921 |
+
border: 1px solid #CCCCCC;
|
922 |
float: left;
|
923 |
+
width: 320px;
|
924 |
margin-left: 1%;
|
925 |
+
min-height: 280px;
|
926 |
+
overflow:auto;
|
927 |
text-align: center;
|
928 |
+
border-top: 6px solid var(--mo2f-theme-color);
|
929 |
+
/* */
|
930 |
/*font-style: italic;*/
|
931 |
|
932 |
}
|
933 |
+
|
934 |
+
.mo_wpns_small_layout:hover{
|
935 |
+
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
936 |
+
}
|
937 |
+
|
938 |
.mo_wpns_method_layout{
|
939 |
margin: 10px;
|
940 |
padding: 5px 20px;
|
946 |
min-height: 222px;
|
947 |
overflow: hidden;
|
948 |
text-align: center;
|
949 |
+
border-top: 6px solid var(--mo2f-theme-color);
|
950 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
951 |
/*font-style: italic;*/
|
952 |
|
959 |
/*border: 1px solid #CCCCCC;*/
|
960 |
float: left;
|
961 |
width: 47%;
|
962 |
+
margin-left: 1%;
|
963 |
+
height: inherit;
|
964 |
text-align: center;
|
965 |
+
|
966 |
}
|
967 |
|
968 |
|
969 |
.mo_wpns_small_3_layout
|
970 |
{
|
971 |
+
display: flex;
|
972 |
+
align-items: center;
|
973 |
+
flex-direction: column;
|
974 |
+
justify-content: top;
|
975 |
width: 64%;
|
976 |
+
height: inherit;
|
977 |
text-align: center;
|
978 |
+
margin-top: 10px;
|
979 |
+
|
980 |
+
flex-wrap: wrap;
|
981 |
}
|
982 |
.mo_wpns_line
|
983 |
{
|
984 |
+
border: 1.2px solid var(--mo2f-theme-color);
|
985 |
}
|
986 |
.mo_wpns_dashboard_layout
|
987 |
{
|
988 |
margin: 10px;
|
|
|
|
|
|
|
989 |
float: left;
|
990 |
+
width: 100%;
|
991 |
+
height: 200px;
|
992 |
+
margin-left: 3%;
|
993 |
+
background-color: #ffffff;
|
994 |
+
width: 94.5%;
|
995 |
+
/* border: 2px solid var(--mo2f-theme-color); */
|
996 |
}
|
997 |
.mo_wpns_inside_dashboard_layout
|
998 |
{
|
1005 |
height: 100px;
|
1006 |
margin-left: 1%;
|
1007 |
font-weight: 600;
|
1008 |
+
border-top: 2px solid var(--mo2f-theme-color);
|
1009 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1010 |
}
|
1011 |
.mo_wpns_sub_dashboards_layout
|
1013 |
margin-top: 10px;
|
1014 |
padding: 5px 0px;
|
1015 |
background-color: #FFFFFF;
|
1016 |
+
border: 1px solid var(--mo2f-theme-color);
|
1017 |
float: left;
|
1018 |
width: 34%;
|
1019 |
+
height: 150px;
|
1020 |
margin-left: 1%;
|
1021 |
font-weight: 600;
|
1022 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
1023 |
+
text-align: center;
|
1024 |
+
|
1025 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1026 |
/*font-style: italic;*/
|
1027 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1031 |
margin-top: 10px;
|
1032 |
padding: 5px 0px;
|
1033 |
background-color: #FFFFFF;
|
1034 |
+
border: 1px solid var(--mo2f-theme-color);
|
1035 |
float: left;
|
1036 |
width: 45%;
|
1037 |
+
min-width: 50px;
|
1038 |
+
min-height: 50px;
|
1039 |
overflow: hidden;
|
1040 |
margin-left: 1%;
|
1041 |
font-weight: 600;
|
1042 |
+
border-top: 3px solid var(--mo2f-theme-color);
|
1043 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1044 |
/*font-style: italic;*/
|
1045 |
}
|
1114 |
margin-left: 0.3%;
|
1115 |
float: left;
|
1116 |
text-align: center;
|
1117 |
+
border: 2px solid var(--mo2f-theme-color);
|
1118 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1119 |
}
|
1120 |
|
1126 |
margin-left: 1%;
|
1127 |
float: left;
|
1128 |
/*text-align: center;*/
|
1129 |
+
border: 2px solid var(--mo2f-theme-color);
|
1130 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1131 |
}
|
1132 |
.mo_wpns_settings_textarea
|
1166 |
margin: 10px;
|
1167 |
padding: 5px 20px;
|
1168 |
background-color: #FFFFFF;
|
1169 |
+
border: 2px solid var(--mo2f-theme-color);
|
1170 |
float: left;
|
1171 |
width: 593px;
|
1172 |
min-height: 200px;
|
1187 |
margin: 5px;
|
1188 |
margin-left: 0px;
|
1189 |
padding: 5px 20px 30px 20px;
|
1190 |
+
background-color: #FFFFFF;
|
1191 |
+
border: 1px solid #CCCCCC !important;
|
1192 |
+
float: left;
|
1193 |
+
width: 90%;
|
1194 |
+
overflow: hidden;
|
1195 |
+
text-align: left;
|
1196 |
+
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
|
|
1197 |
}
|
1198 |
.mo_wpns_setting_layout_scan
|
1199 |
{
|
1200 |
margin: 5px;
|
1201 |
padding: 5px 20px 30px 20px;
|
1202 |
background-color: #FFFFFF;
|
1203 |
+
border: 1px solid #CCCCCC;
|
1204 |
float: left;
|
1205 |
width: 80%;
|
1206 |
margin-left: 10%;
|
1239 |
|
1240 |
/* Create an active/current tablink class */
|
1241 |
.mo_wpns_sub_nav_tab button.mo_wpns_sub_nav_active {
|
1242 |
+
background-color: var(--mo2f-theme-color);
|
1243 |
color: white;
|
1244 |
}
|
1245 |
|
1278 |
width:23.3%;
|
1279 |
float:left;
|
1280 |
background-color: white;
|
1281 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
1282 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1283 |
font-style: italic;
|
1284 |
}
|
1285 |
.mo_wpns_button {
|
1286 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
1287 |
border: none;
|
1288 |
color: white;
|
1289 |
padding: 11px 28px;
|
1314 |
|
1315 |
|
1316 |
.mo_wpns_dashboard_button {
|
1317 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
1318 |
border: none;
|
1319 |
color: white;
|
1320 |
padding-top: 10px;
|
1349 |
}*/
|
1350 |
.mo_wpns_upgrade_page_button
|
1351 |
{
|
1352 |
+
border: 2px solid #2a80ca;
|
1353 |
background-color: #2a80ca;
|
1354 |
color: white;
|
1355 |
padding: 12px 0px;
|
1418 |
min-height: 222px;
|
1419 |
overflow: hidden;
|
1420 |
text-align: center;
|
1421 |
+
border-top: 6px solid var(--mo2f-theme-color);
|
1422 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1423 |
}
|
1424 |
|
1433 |
height: 220px;
|
1434 |
overflow: hidden;
|
1435 |
text-align: center;
|
1436 |
+
/*border-top: 6px solid var(--mo2f-theme-color);*/
|
1437 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1438 |
}
|
1439 |
|
1496 |
background-color: #dddddd;
|
1497 |
}
|
1498 |
.mo_wpns_free_feature_button {
|
1499 |
+
/*background-color: green; /* Green */
|
1500 |
border: none;
|
1501 |
color: black;
|
1502 |
padding: 11px 12px;
|
1567 |
width: 100%;
|
1568 |
|
1569 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1570 |
|
|
|
1571 |
.mo_wpns_small_layout{
|
1572 |
/*background-color:#FFFFFF;
|
1573 |
border:1px solid #CCCCCC;
|
1586 |
text-align: center;
|
1587 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1588 |
/*font-style: italic;*/
|
1589 |
+
border-top: 6px solid var(--mo2f-theme-color);
|
1590 |
}
|
1591 |
|
1592 |
.mo_wpns_small_layout_test{
|
1610 |
|
1611 |
}
|
1612 |
|
1613 |
+
/* .mo_wpns_inside_dashboard_layout
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1614 |
{
|
1615 |
margin-top: 10px;
|
1616 |
padding: 5px 0px;
|
1619 |
float: left;
|
1620 |
width: 18.5%;
|
1621 |
height: 100px;
|
1622 |
+
border-top: 2px solid var(--mo2f-theme-color);
|
1623 |
font-weight: 600;
|
1624 |
/*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1625 |
+
} */
|
1626 |
|
1627 |
/*.wpns_font_size {
|
1628 |
font-size: 30px;
|
1652 |
|
1653 |
.mo_wpns_dashboard_button
|
1654 |
{
|
1655 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
1656 |
border: none;
|
1657 |
color: white;
|
1658 |
padding-top: 10px;
|
1685 |
text-align: center;
|
1686 |
color: black;
|
1687 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1688 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1689 |
|
1690 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1691 |
.mo_wpns_container{
|
1692 |
/*padding:10px;*/
|
1693 |
width: 100%;
|
1694 |
/*background-color: yellow;*/
|
1695 |
height: auto;
|
1696 |
}
|
1697 |
+
|
1698 |
.mo_wpns_details_layout
|
1699 |
{
|
1700 |
margin:10px;
|
1710 |
float:left;
|
1711 |
border: 1px solid;
|
1712 |
background-color: white;
|
1713 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
1714 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1715 |
font-style: italic;
|
1716 |
}
|
1724 |
font-size: 103%;
|
1725 |
margin-top: 20px;
|
1726 |
margin-bottom: 20px;
|
1727 |
+
border: solid 1px var(--mo2f-theme-color);
|
1728 |
background-color: white;
|
1729 |
color: black;
|
1730 |
width: 129px;
|
1731 |
height: 55%;
|
1732 |
}
|
1733 |
.mo_wpns_tab button.active {
|
1734 |
+
background-color: var(--mo2f-theme-color);
|
1735 |
color: white;
|
1736 |
width: 130px;
|
1737 |
+
border: solid 1px var(--mo2f-theme-color);
|
1738 |
/*border-bottom: none;*/
|
1739 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1740 |
font-weight: 600;
|
1741 |
}
|
1742 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1743 |
.mo_wpns_third_layout{
|
1744 |
margin-top: 10px;
|
1745 |
padding: 5px 20px;
|
1770 |
margin: 10px;
|
1771 |
padding: 5px 20px;
|
1772 |
background-color: #FFFFFF;
|
1773 |
+
border: 2px solid var(--mo2f-theme-color);
|
1774 |
float: left;
|
1775 |
width: 90%;
|
1776 |
min-height: 200px;
|
1778 |
text-align: center;
|
1779 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1780 |
}
|
1781 |
+
.nav-tab{
|
1782 |
+
cursor: pointer;
|
1783 |
+
}
|
1784 |
h1 .nav-tab, a .nav-tab{
|
1785 |
font-size : auto;
|
1786 |
background-color: none; /* Green
|
1793 |
|
1794 |
font-size: 20px;
|
1795 |
margin: 5px 0px;
|
|
|
1796 |
/*border-radius: 23px;*/
|
1797 |
width: 07.5%;
|
1798 |
border: 1px solid gray;
|
1804 |
/*background-color: #4CAF50;*/
|
1805 |
font-size: 150%;
|
1806 |
box-shadow: 3px 4px 3px #888888;
|
1807 |
+
background-color: var(--mo2f-theme-color);
|
1808 |
color: white;
|
1809 |
|
1810 |
}
|
1811 |
h1 .nav-tab:hover , a .nav-tab:hover
|
1812 |
{
|
1813 |
+
background-color: var(--mo2f-theme-color);
|
1814 |
color: white;
|
1815 |
/*border-bottom: none;*/
|
1816 |
}
|
1817 |
h1 .nav-tab-active:hover , a .nav-tab-active:hover
|
1818 |
{
|
1819 |
background-color: white;
|
1820 |
+
color:var(--mo2f-theme-color);
|
1821 |
}
|
1822 |
.mo_wpns_sub_nav_tab button {
|
1823 |
background-color: inherit;
|
1836 |
color: black;
|
1837 |
width :210px;
|
1838 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1839 |
|
|
|
|
|
|
|
|
|
1840 |
.mo_wpns_products-dollar-amount {
|
1841 |
color: #797878;
|
1842 |
font-weight: 400;
|
1862 |
-o-transition: border .2s ease-in-out;
|
1863 |
transition: border .2s ease-in-out
|
1864 |
}
|
1865 |
+
|
1866 |
|
1867 |
|
1868 |
.mo_wpns_table_layout td strong {
|
1882 |
}
|
1883 |
|
1884 |
.fixed {
|
1885 |
+
width: 75% !important;
|
1886 |
}
|
1887 |
.mo_wpns_table_textbox {
|
1888 |
width:100%;
|
2015 |
width:33%;
|
2016 |
float: left;
|
2017 |
}
|
2018 |
+
|
2019 |
+
.test_auth_button
|
2020 |
{
|
2021 |
+
margin: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
2022 |
text-align: center;
|
2023 |
+
align-items: center;
|
2024 |
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
.mo2f_table_layout
|
2028 |
+
{
|
2029 |
+
width: 90%;
|
2030 |
+
background-color: #FFFFFF;
|
2031 |
+
border: 1px solid #CCCCCC;
|
2032 |
+
padding: 25px 50px 25px 50px;
|
2033 |
+
margin: 10px;
|
2034 |
+
}
|
2035 |
+
|
2036 |
+
.mo2f_wpns_container
|
2037 |
+
{
|
2038 |
+
position: absolute;
|
2039 |
+
width: 90%;
|
2040 |
+
margin: 10px;
|
2041 |
+
}
|
2042 |
|
2043 |
+
|
2044 |
+
|
2045 |
+
|
2046 |
+
.mo2f_table_divide_border
|
2047 |
+
{
|
2048 |
+
padding: 10px;
|
|
|
2049 |
}
|
2050 |
+
|
2051 |
+
.mo2f_flexbox
|
2052 |
+
{
|
2053 |
+
display: flex;
|
2054 |
+
justify-content: space-between;
|
2055 |
+
}
|
2056 |
+
|
2057 |
+
.mo2f_support_flex
|
2058 |
+
{
|
2059 |
+
flex: 0 0 25%;
|
2060 |
+
}
|
2061 |
+
.mo2f_table_layout_support
|
2062 |
+
{
|
2063 |
+
margin: 10px;
|
2064 |
+
border: 1px solid #053742;
|
2065 |
+
text-align: center;
|
2066 |
+
padding: 10px;
|
2067 |
+
background-color: #dcecff;
|
2068 |
+
|
2069 |
+
}
|
2070 |
+
|
2071 |
+
|
2072 |
.ip_lookup_desc,.file_backup_desc{
|
2073 |
background-color:#E6E6E6;
|
2074 |
width:100%;
|
2443 |
font-weight: bold;
|
2444 |
}
|
2445 |
|
2446 |
+
|
2447 |
+
|
|
|
|
|
|
|
2448 |
.wpns_font_shown {
|
2449 |
+
padding-top: 20%;
|
2450 |
font-size: 70px;
|
|
|
|
|
|
|
2451 |
}
|
2452 |
|
2453 |
/* Added for malware */
|
2454 |
.malwaresummarydiv{
|
2455 |
display: inline-flex;
|
2456 |
+
width: 90%;
|
2457 |
}
|
2458 |
.malwarescandiv{
|
2459 |
border-radius: 4px;
|
2512 |
line-height: 20px; /* To center it vertically */
|
2513 |
color: white;
|
2514 |
}
|
|
|
|
|
|
|
|
|
|
|
2515 |
.mo_wpns_lightgreen{
|
2516 |
color:rgb(128, 173, 128);
|
2517 |
}
|
2554 |
width: 50%;
|
2555 |
}
|
2556 |
.mo_wpns_scan_button {
|
2557 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
2558 |
border: none;
|
2559 |
color: white;
|
2560 |
padding: 5px 5px;
|
2568 |
transition-duration: 0.4s;
|
2569 |
}
|
2570 |
.mo_wpns_scan_modal_button {
|
2571 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
2572 |
border: none;
|
2573 |
color: white;
|
2574 |
padding: 5px 80px;
|
2582 |
transition-duration: 0.4s;
|
2583 |
}
|
2584 |
.mo_wpns_deep_scan_button {
|
2585 |
+
background-color: var(--mo2f-theme-color); /* Green */
|
2586 |
border: none;
|
2587 |
color: white;
|
2588 |
padding: 5px 5px;
|
2604 |
{
|
2605 |
padding: 5px;
|
2606 |
background-color: #FFFFFF;
|
2607 |
+
border: 1px solid var(--mo2f-theme-color);
|
2608 |
width: 23.5%;
|
2609 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
2610 |
min-height: 180px;
|
2611 |
}
|
2612 |
.mo_wpns_malwarescandiv
|
2613 |
{
|
2614 |
padding: 5px;
|
2615 |
background-color: #FFFFFF;
|
2616 |
+
border: 1px solid var(--mo2f-theme-color);
|
2617 |
width: 50%;
|
2618 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
2619 |
}
|
2620 |
|
2621 |
|
2800 |
margin: 10px;
|
2801 |
float: left;
|
2802 |
text-align: center;
|
2803 |
+
border: 2px solid var(--mo2f-theme-color);
|
2804 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
2805 |
}
|
2806 |
|
2811 |
|
2812 |
|
2813 |
/*2FA css used*/
|
2814 |
+
|
2815 |
+
|
2816 |
+
.mo2f_new_support_form
|
2817 |
+
{
|
2818 |
+
padding: 10px;
|
2819 |
+
border-radius: 20px;
|
2820 |
+
}
|
2821 |
+
|
2822 |
+
|
2823 |
+
.mo2f_new_support_form_table
|
2824 |
+
{
|
2825 |
+
border-radius: 25px;
|
2826 |
+
width: 100%;
|
2827 |
+
padding: 5px;
|
2828 |
+
border-spacing: 15px;
|
2829 |
+
}
|
2830 |
+
|
2831 |
+
.mo2f_new_support_form_input
|
2832 |
+
{
|
2833 |
+
border: 2px solid gray;
|
2834 |
+
width: 100%;
|
2835 |
+
height: 25px;
|
2836 |
+
border-radius: 20px !important;
|
2837 |
+
padding: 20px !important;
|
2838 |
+
}
|
2839 |
+
|
2840 |
.mo2f_licensing_plans {
|
2841 |
background-color: white;
|
2842 |
border-style: solid;
|
2864 |
}
|
2865 |
|
2866 |
.mo2f_auth_methods_table {
|
2867 |
+
border-spacing: 13px;
|
2868 |
border-collapse: separate;
|
2869 |
width: 100%;
|
2870 |
}
|
2902 |
min-height: 103%;
|
2903 |
overflow: hidden;
|
2904 |
background-color: #fff;
|
|
|
2905 |
-webkit-transition: border .2s ease-in-out;
|
2906 |
-o-transition: border .2s ease-in-out;
|
2907 |
transition: border .2s ease-in-out
|
2935 |
}
|
2936 |
|
2937 |
.mo2f_thumbnail_method_desc{
|
2938 |
+
padding:10px;
|
2939 |
font-size:17px;
|
2940 |
}
|
2941 |
|
2954 |
outline: none;
|
2955 |
color: white;
|
2956 |
}
|
2957 |
+
.mo2f_configure_switch_2_factor{
|
2958 |
+
margin-top: 0.4em;
|
2959 |
+
}
|
2960 |
|
2961 |
.mo2f_auth_methods_thumbnail {
|
2962 |
width: 50px;
|
2976 |
align-content: center
|
2977 |
|
2978 |
}
|
2979 |
+
.mo2fa_see_preview{
|
2980 |
+
font-size: 13px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2981 |
}
|
|
|
2982 |
.mo2f_configure_set_2_factor:hover {
|
2983 |
font-weight: bold;
|
2984 |
font-size: 14px;
|
3091 |
border-radius: 4px;
|
3092 |
height: 30px;
|
3093 |
font-size: 13px !important;
|
3094 |
+
background: #fff!important;
|
3095 |
+
color: #1a5a97!important;
|
3096 |
+
font-weight: 600!important;
|
3097 |
+
}
|
3098 |
+
|
3099 |
+
.mo2f_kba_ques:hover {
|
3100 |
+
color: #1a5a97!important;
|
3101 |
+
font-weight: 600 !important;
|
3102 |
+
|
3103 |
}
|
3104 |
|
3105 |
.mo2f_kba_table {
|
3192 |
text-align: center;
|
3193 |
padding: 11px;
|
3194 |
}
|
3195 |
+
.mo2f_send_query{
|
3196 |
+
margin-bottom:3%!important;
|
3197 |
+
width: 18em;
|
3198 |
+
}
|
3199 |
+
.mo2f_raise_support_ticket{
|
3200 |
+
margin-bottom:3%!important;
|
3201 |
+
background-color: #479814b5!important;
|
3202 |
+
color: white!important;
|
3203 |
+
width: 18em;
|
3204 |
+
border-color: white !important;
|
3205 |
+
}
|
3206 |
.mo2f_vertical-submenu a:hover {
|
3207 |
background-color: #ccc;
|
3208 |
}
|
3281 |
margin: 0px 0px;
|
3282 |
cursor: pointer;
|
3283 |
width: 1200px;
|
3284 |
+
border: 1px solid var(--mo2f-theme-color);
|
3285 |
|
3286 |
}
|
3287 |
.mo_subtab_flex-container{
|
3301 |
margin: 0px 0px;
|
3302 |
cursor: pointer;
|
3303 |
width: 1200px;
|
3304 |
+
border: 1px solid var(--mo2f-theme-color);
|
3305 |
}
|
3306 |
|
3307 |
.mo_wpns_sub_scanmode
|
3308 |
{
|
3309 |
padding: 5px;
|
3310 |
background-color: #FFFFFF;
|
3311 |
+
border: 1px solid var(--mo2f-theme-color);
|
3312 |
width: 23.5%;
|
3313 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
3314 |
min-height: 180px;
|
3315 |
}
|
3316 |
.mo_wpns_sub_scansummary
|
3317 |
{
|
3318 |
padding: 5px;
|
3319 |
background-color: #FFFFFF;
|
3320 |
+
border: 1px solid var(--mo2f-theme-color);
|
3321 |
width: 23.5%;
|
3322 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
3323 |
height: 120px;
|
3324 |
}
|
3325 |
.mo_wpns_scan_summary_text
|
3332 |
{
|
3333 |
padding: 5px;
|
3334 |
background-color: #FFFFFF;
|
3335 |
+
border: 1px solid var(--mo2f-theme-color);
|
3336 |
width: 50%;
|
3337 |
+
border-top: 4px solid var(--mo2f-theme-color);
|
3338 |
}
|
3339 |
|
3340 |
.mo_scan_modal {
|
3394 |
}
|
3395 |
/*Custom login form*/
|
3396 |
.customloginform{
|
3397 |
+
padding: 25px !important;
|
3398 |
+
margin: 30px!important;
|
3399 |
border-collapse: collapse;
|
3400 |
+
border:1px solid #413c69;
|
3401 |
}
|
3402 |
.customloginform th {
|
3403 |
|
3406 |
.customloginform td {
|
3407 |
/*width:80%;*/
|
3408 |
text-align:left;
|
3409 |
+
border:1px solid #413c69;
|
3410 |
padding:1%;
|
3411 |
|
3412 |
}
|
3418 |
.mo2f_doc_icon_style
|
3419 |
{
|
3420 |
font-size:25px;
|
3421 |
+
color:#413c69;
|
3422 |
}
|
3423 |
.mo2f_doc_font_size
|
3424 |
{
|
3425 |
font-size: 112%;
|
3426 |
width: 30%;
|
3427 |
}
|
3428 |
+
.mo2fa_tour_button{
|
3429 |
+
margin-left: 5%!important;
|
3430 |
+
font-weight: bold;
|
3431 |
+
width: 40%!important;
|
3432 |
+
float: left;
|
3433 |
+
min-height: 54px;
|
3434 |
+
border: 2px solid black!important;
|
3435 |
+
}
|
3436 |
.mo2f_advance_setting
|
3437 |
{
|
3438 |
+
margin-left: 6%;
|
3439 |
+
background: none;
|
3440 |
+
font-weight: bold;
|
3441 |
+
width: 40%;
|
3442 |
+
float: left;
|
3443 |
+
min-height: 54px;
|
3444 |
+
border: 2px solid black!important;
|
3445 |
}
|
3446 |
.mo2f_advance_setting:hover
|
3447 |
{
|
3492 |
}
|
3493 |
.mo2f_addons_alignment
|
3494 |
{
|
3495 |
+
color:var(--mo2f-theme-color);
|
3496 |
font-size: large;
|
3497 |
float: left;
|
3498 |
margin-right: 5px;
|
3546 |
color: #ffffff;
|
3547 |
margin-left: 15px;
|
3548 |
}
|
3549 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3550 |
/* The switch - the box around the slider */
|
3551 |
.switch {
|
3552 |
position: relative;
|
3610 |
border-radius: 50%;
|
3611 |
}
|
3612 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3613 |
.mo_wpns_upgrade_page_2fa_ns_styles
|
3614 |
{
|
3615 |
background-color: #7ccbc7;
|
3799 |
|
3800 |
.mo2f_offer_main_div
|
3801 |
{
|
3802 |
+
display:flex;
|
3803 |
+
background-image : url("christmas.gif");
|
3804 |
+
background-repeat: repeat;
|
3805 |
+
margin-top: -2.5%;
|
3806 |
+
height:auto;
|
3807 |
+
width: inherit;
|
3808 |
+
border-radius: 6px;
|
3809 |
+
padding-top: 1%;
|
3810 |
+
padding-bottom: 3%;
|
3811 |
+
justify-content: space-around;
|
3812 |
}
|
3813 |
|
3814 |
.mo2f_offer_first_section
|
3815 |
{
|
3816 |
+
clear: both;
|
3817 |
+
display: block;
|
3818 |
+
width:23%;
|
3819 |
+
height: auto;
|
3820 |
+
margin:0px;
|
3821 |
+
padding-left: 3%;
|
3822 |
+
text-align: center;
|
3823 |
+
padding-top: 30px;
|
3824 |
+
}
|
3825 |
+
@media screen and (max-width: 768px) {
|
3826 |
+
.mo2f_offer_first_section {
|
3827 |
+
display:none;
|
3828 |
+
}
|
3829 |
+
.mo2f_offer_valid{
|
3830 |
+
display: none !important;
|
3831 |
+
}
|
3832 |
+
.mo2f_offer_timer{
|
3833 |
+
display:none !important;
|
3834 |
+
}
|
3835 |
+
.mo2f_offer_contact_us
|
3836 |
+
{
|
3837 |
+
font-size: 120% !important;
|
3838 |
+
border-radius: 30px;
|
3839 |
+
border: 1px solid #ea5ab7a1;
|
3840 |
+
color: white;
|
3841 |
+
padding: 4% 8%;
|
3842 |
+
background: #ea5ab7a1;
|
3843 |
+
text-decoration: none;
|
3844 |
+
}
|
3845 |
+
|
3846 |
|
3847 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3848 |
|
3849 |
+
.mo2f_offer_christmas{
|
3850 |
+
letter-spacing: 5px;
|
3851 |
+
font-size: 250%;
|
3852 |
+
width: 83%;
|
3853 |
+
color: #fffafa;
|
3854 |
+
-webkit-text-stroke: 2px #ffff;
|
3855 |
+
font-family: sans-serif;
|
3856 |
+
margin: 0%;
|
3857 |
}
|
3858 |
+
.mo2f_offer_cyber{
|
3859 |
+
font-size: 200%;
|
3860 |
+
margin:0px;
|
3861 |
+
margin-left: -18%;
|
3862 |
+
letter-spacing: 6px;
|
3863 |
+
color: white;
|
3864 |
+
margin-top: 2%;
|
3865 |
+
font-weight: bold;
|
3866 |
+
}
|
3867 |
+
.mo2fa_hr_line{
|
3868 |
+
width: 83%;
|
3869 |
+
line-height: 1%;
|
3870 |
+
margin: 7px;
|
3871 |
+
}
|
3872 |
+
.mo2fa_hr_line span{
|
3873 |
+
background: #fe161600;
|
3874 |
+
padding: 0 10px;
|
3875 |
+
color: #ffffff;
|
3876 |
+
font-weight: bold;
|
3877 |
+
font-size: 30px;
|
3878 |
}
|
3879 |
+
|
3880 |
.mo2f_offer_middle_section
|
3881 |
{
|
3882 |
+
width:50%;
|
3883 |
+
color: white; /*if no support for background-clip*/
|
3884 |
+
float: left;
|
3885 |
+
}
|
3886 |
+
|
3887 |
+
.mo2f_offer_get_upto
|
3888 |
+
{
|
3889 |
+
text-align:center;
|
3890 |
+
margin:0px;
|
3891 |
+
margin-bottom: -2%;
|
3892 |
+
margin-top: 4.5%;
|
3893 |
+
color: white;
|
3894 |
+
font-size: 200%;
|
3895 |
+
}
|
3896 |
+
.mo2f_offer_valid{
|
3897 |
+
text-align: center;
|
3898 |
+
font-size: 165%;
|
3899 |
+
margin:0px;
|
3900 |
+
}
|
3901 |
+
.mo2f_offer_timer{
|
3902 |
+
text-align: center;
|
3903 |
+
margin:0px;
|
3904 |
+
font-size: 150%;
|
3905 |
+
font-weight:bold;
|
3906 |
}
|
3907 |
|
3908 |
.mo2f_offer_last_section
|
3909 |
{
|
3910 |
+
width:25%;
|
3911 |
+
padding-top: 5%;
|
3912 |
+
float: right;
|
3913 |
+
text-align: center;
|
3914 |
}
|
3915 |
|
3916 |
.mo2f_offer_contact_us
|
3917 |
{
|
3918 |
+
font-size: 170%;
|
3919 |
+
border-radius: 30px;
|
3920 |
+
border: 1px solid #ffff;
|
|
|
3921 |
color: white;
|
3922 |
+
padding: 4% 8%;
|
3923 |
+
background: #ffffff94;
|
3924 |
+
font-weight: 500;
|
3925 |
text-decoration: none;
|
3926 |
}
|
3927 |
|
3928 |
+
.mo2f_banner_never_show_again{
|
3929 |
+
color: white;
|
3930 |
+
|
3931 |
+
font-size: 15px;
|
3932 |
+
float: right;
|
3933 |
+
margin-top: -70px;
|
3934 |
+
margin-right: 10px;
|
3935 |
+
border:none;
|
3936 |
+
}
|
3937 |
+
|
3938 |
+
.mo2f_close
|
3939 |
{
|
3940 |
+
background:none;
|
3941 |
+
}
|
3942 |
+
|
3943 |
+
.mo2f_cross
|
3944 |
+
{
|
3945 |
+
background:#d69494;
|
3946 |
+
padding: 0px 4px;
|
3947 |
+
font-weight: bold;
|
3948 |
+
cursor: pointer;
|
3949 |
+
}
|
3950 |
+
|
3951 |
+
.mo2f_offer_contact_us:hover, .mo2f_cross:hover
|
3952 |
+
{
|
3953 |
+
color: white;
|
3954 |
+
background: #ffffff7a;
|
3955 |
}
|
3956 |
|
3957 |
.mo2f_offer_contact_us_layout
|
3958 |
{
|
3959 |
+
border: 3px solid var(--mo2f-theme-color) !important;
|
3960 |
}
|
3961 |
|
3962 |
.mo2f_offer_contact_us_button
|
3963 |
{
|
3964 |
+
background: var(--mo2f-theme-color) !important;
|
3965 |
+
}
|
3966 |
+
|
3967 |
+
.mo2f_trial_submit_button
|
3968 |
+
{
|
3969 |
+
background: #2271b1 !important;
|
3970 |
+
background-color: #20b2aa; /* Green */
|
3971 |
+
border: none;
|
3972 |
+
color: white;
|
3973 |
+
padding: 11px 28px;
|
3974 |
+
text-align: center;
|
3975 |
+
text-decoration: none;
|
3976 |
+
display: inline-block;
|
3977 |
+
font-size: 16px;
|
3978 |
+
margin: 4px 2px;
|
3979 |
+
cursor: pointer;
|
3980 |
+
-webkit-transition-duration: 0.4s; /* Safari */
|
3981 |
+
transition-duration: 0.4s;
|
3982 |
+
}
|
3983 |
+
.mo2f_trial_submit_button:hover {
|
3984 |
+
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
|
3985 |
+
color: white;
|
3986 |
+
}
|
3987 |
+
|
3988 |
+
.mo2f_trial_box{
|
3989 |
+
width: 654px;
|
3990 |
+
}
|
3991 |
+
|
3992 |
+
.mo2f_firebase_adv_container{
|
3993 |
+
display: flex;
|
3994 |
+
justify-content: top;
|
3995 |
+
align-items: center;
|
3996 |
+
flex-direction: column;
|
3997 |
+
margin: 10px;
|
3998 |
+
border: 1px solid #000000;
|
3999 |
+
height: 185px;
|
4000 |
+
padding: 10px;
|
4001 |
+
background-image: linear-gradient(rgba(255, 252, 0, 1),rgb(255,188,107));
|
4002 |
+
/* background-color: orange; */
|
4003 |
+
}
|
4004 |
+
|
4005 |
+
.mo2f_firebase_adv_img{
|
4006 |
+
display: flex;
|
4007 |
+
align-items: center;
|
4008 |
+
justify-content: space-between;
|
4009 |
+
}
|
4010 |
+
.mo2f_firebase_adv_text{
|
4011 |
+
width: 60px;
|
4012 |
+
height: 60px;
|
4013 |
+
left: 0px;
|
4014 |
+
top: 0px;
|
4015 |
+
|
4016 |
+
}
|
4017 |
+
.mo2f_firebase_adv_content{
|
4018 |
+
text-align: center;
|
4019 |
+
padding: 10px;
|
4020 |
+
font-size:15px;
|
4021 |
+
color: #434343;
|
4022 |
+
}
|
4023 |
+
|
4024 |
+
.mo2f_firebase_adv_button{
|
4025 |
+
background-color: #000000;
|
4026 |
+
border: none;
|
4027 |
+
color: #ffffff;
|
4028 |
+
padding: 10px 20px;
|
4029 |
+
text-align: center;
|
4030 |
+
text-decoration: none;
|
4031 |
+
display: inline-block;
|
4032 |
+
font-size: 16px;
|
4033 |
+
margin: 4px 2px;
|
4034 |
+
cursor: pointer;
|
4035 |
+
border-radius: 50px;
|
4036 |
+
}
|
4037 |
+
|
4038 |
+
|
4039 |
+
.mo2f_firebase_adv_button,.mo2f_firebase_adv_button:visited, .mo2f_firebase_adv_button:hover,.mo2f_firebase_adv_button:active{color:#ffffff;}
|
4040 |
+
|
4041 |
+
.mp2f-form-div{
|
4042 |
+
display: none;
|
4043 |
+
margin-top:10px;
|
4044 |
}
|
includes/css/twofa_style_settings.css
CHANGED
@@ -155,7 +155,19 @@
|
|
155 |
filter: alpha(opacity=50);
|
156 |
opacity: .5
|
157 |
}
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
button.mo2f_close {
|
160 |
-webkit-appearance: none;
|
161 |
padding: 0;
|
155 |
filter: alpha(opacity=50);
|
156 |
opacity: .5
|
157 |
}
|
158 |
+
.mo2f-styled-radio {
|
159 |
+
width: 32px;
|
160 |
+
height: 32px;
|
161 |
+
position: relative;
|
162 |
+
display: inline-block;
|
163 |
+
border-radius: 50%;
|
164 |
+
background-color: #e6e6e6;
|
165 |
+
float: left;
|
166 |
+
margin-top: -4px;
|
167 |
+
}
|
168 |
+
.mo2f-styled-radio-text_conf {
|
169 |
+
margin-left: 10px;
|
170 |
+
}
|
171 |
button.mo2f_close {
|
172 |
-webkit-appearance: none;
|
173 |
padding: 0;
|
includes/css/upgrade.css
CHANGED
@@ -1,3 +1,291 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.mo2fa_pricing_feature_collection_supporter{
|
2 |
height: 32em;
|
3 |
}
|
@@ -8,12 +296,14 @@
|
|
8 |
}
|
9 |
i.fa-check {
|
10 |
color: black;
|
|
|
11 |
margin-right: 17px;
|
12 |
margin-top: 0.5em;
|
13 |
margin-bottom: 0.5em;
|
14 |
}
|
15 |
i.fa-times {
|
16 |
color: #b6abab;
|
|
|
17 |
margin-right: 17px;
|
18 |
margin-top: 0.5em;
|
19 |
margin-bottom: 0.5em;
|
@@ -26,20 +316,19 @@ i.fa-times {
|
|
26 |
|
27 |
}
|
28 |
.mo2fa_pricing_feature_collection{
|
29 |
-
width: 24em;
|
30 |
height: 31em;
|
31 |
-
margin-top: 13px;
|
32 |
-
padding-top: 18px;
|
33 |
-
margin-left: 21px;
|
34 |
-
margin-right: 28px;
|
35 |
}
|
36 |
.mo2fa_limit_pricing_feature_mo_2fa{
|
37 |
color: #b6abab;
|
38 |
font-weight: 500;
|
39 |
}
|
40 |
.mo2fa_unltimate_feature{
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
.mo2fa_sec{
|
45 |
width: 27em;
|
@@ -49,24 +338,45 @@ i.fa-times {
|
|
49 |
border: 1px solid #ccc;
|
50 |
padding-top: 2em;
|
51 |
}
|
52 |
-
.
|
53 |
border: none;
|
54 |
-
|
55 |
-
|
56 |
color: white;
|
57 |
padding: 15px 32px;
|
58 |
width: auto;
|
59 |
-
min-width:
|
60 |
border-radius: 26px;
|
61 |
text-align: center;
|
62 |
text-decoration: none;
|
63 |
display: inline-block;
|
64 |
-
background: #
|
65 |
font-size: 16px;
|
66 |
height: auto;
|
67 |
-
/*margin: 2px 18px 2px -27px;*/
|
68 |
margin-top: 24px;
|
69 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
.mo2fa_upgrade_my_plan:hover{
|
71 |
border: none;
|
72 |
background: #8d86f5;
|
@@ -77,7 +387,7 @@ i.fa-times {
|
|
77 |
.mo2fa_pricing_tabs_mo{
|
78 |
width: auto;
|
79 |
border-radius: 4px;
|
80 |
-
height:
|
81 |
border: 1px solid #ccc;
|
82 |
padding-top: 2em;
|
83 |
}
|
@@ -99,12 +409,15 @@ i.fa-times {
|
|
99 |
color: white;
|
100 |
background: #8d86f5;
|
101 |
}
|
|
|
|
|
|
|
102 |
.mo2fa_pricing_head_mo_2fa{
|
103 |
-
font-size:
|
104 |
-
|
105 |
-
|
106 |
margin-bottom: 3%;
|
107 |
-
|
108 |
}
|
109 |
.mo2fa_method-list-size{
|
110 |
font-size: 11px;
|
@@ -113,7 +426,6 @@ i.fa-times {
|
|
113 |
margin-left: 2em;
|
114 |
font-weight: 450;
|
115 |
}
|
116 |
-
|
117 |
.mo2fa_method-list-mo-size-cross{
|
118 |
font-size: 11px;
|
119 |
color: #b6abab;
|
@@ -121,28 +433,23 @@ i.fa-times {
|
|
121 |
list-style: none!important;
|
122 |
margin-left: 2em;
|
123 |
}
|
124 |
-
|
125 |
.mo2fa_price_mo_2fa{
|
126 |
font-size: 35px;
|
127 |
font-weight: bold;
|
128 |
color: black;
|
129 |
-
|
130 |
}
|
131 |
.mo2fa_purchase_user_limit_mo{
|
132 |
margin-top: 22px!important;
|
133 |
margin-bottom: 0px!important;
|
134 |
color: black;
|
135 |
}
|
136 |
-
|
137 |
.mo2fa_purchase_otp_limit{
|
138 |
margin-top: 10px!important;
|
139 |
margin-bottom: 4px!important;
|
140 |
color: black;
|
141 |
-
|
142 |
}
|
143 |
.mo2fa_increase_my_limit{
|
144 |
-
width:
|
145 |
-
min-width: 85%;
|
146 |
color: black;
|
147 |
font-size: 11px;
|
148 |
background: #c9dbdb75;
|
@@ -159,6 +466,14 @@ i.fa-times {
|
|
159 |
.mo2fa_ul{
|
160 |
font-size: 15px;
|
161 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
.mo2fa_more_details_p,.mo2fa_more_details_p1{
|
163 |
font-size: 13px;
|
164 |
margin-bottom: -10px;
|
@@ -173,8 +488,7 @@ i.fa-times {
|
|
173 |
}
|
174 |
.mo2fa_pricing{
|
175 |
padding: 16px 55px 12px 41px;
|
176 |
-
|
177 |
-
height: 25em;
|
178 |
}
|
179 |
.mo2fa_pricing_p{
|
180 |
font-size: 10px;
|
@@ -184,8 +498,8 @@ i.fa-times {
|
|
184 |
font-size: 46px;
|
185 |
font-weight: 600;
|
186 |
padding: 5px 5px 5px 5px;
|
187 |
-
margin-top:
|
188 |
-
color:
|
189 |
}
|
190 |
.mo2fa_country{
|
191 |
margin-top: 2px;
|
@@ -212,7 +526,6 @@ i.fa-times {
|
|
212 |
.mo2fa_starting_from{
|
213 |
font-size: 10px;
|
214 |
margin-left: -24px;
|
215 |
-
/*margin-top: -17px;*/
|
216 |
}
|
217 |
.mo2fa_center{
|
218 |
text-align: center;
|
@@ -222,8 +535,6 @@ i.fa-times {
|
|
222 |
border: none!important;
|
223 |
}
|
224 |
.mo2fa_pricing_tabs_mo_premium{
|
225 |
-
height: 84em!important;
|
226 |
-
margin-top: -4em;
|
227 |
background: ffffffad;
|
228 |
border: none;
|
229 |
box-shadow: 12px;
|
@@ -242,7 +553,6 @@ i.fa-times {
|
|
242 |
background: #2a80caa6;
|
243 |
color: white;
|
244 |
height: 3em;
|
245 |
-
/* border-radius: 1px 25px 25px 0px; */
|
246 |
margin-left: 0px;
|
247 |
margin-top: -2em;
|
248 |
font-size: 16px;
|
@@ -276,7 +586,7 @@ i.fa-times {
|
|
276 |
height: 28px;
|
277 |
width:auto;
|
278 |
}
|
279 |
-
.
|
280 |
font-size: 16px;
|
281 |
font-weight: 600;
|
282 |
padding-bottom: 0.3em;
|
@@ -287,12 +597,12 @@ background: #d5d5d5!important;
|
|
287 |
margin-top: 0.3em;
|
288 |
margin-bottom: 0.3em;
|
289 |
}
|
290 |
-
.
|
291 |
font-size: 17px;
|
292 |
border :0.5px solid #c1c1c1 ;
|
293 |
background: #c9dbdb!important
|
294 |
}
|
295 |
-
.
|
296 |
font-size: 13px!important;
|
297 |
font-weight: 400;
|
298 |
}
|
@@ -332,26 +642,25 @@ table.mo2fa_table_features tr:last-child
|
|
332 |
min-width: 22%!important;
|
333 |
width:10%;
|
334 |
}
|
335 |
-
.
|
336 |
position: relative;
|
337 |
display: inline-block;
|
338 |
}
|
339 |
|
340 |
-
.
|
341 |
visibility: hidden;
|
342 |
width: 15em;
|
343 |
background-color: #000000b8;
|
344 |
color: #fff;
|
345 |
text-align: left;
|
346 |
border-radius: 6px;
|
347 |
-
padding: 7px
|
348 |
position: absolute;
|
349 |
z-index: 1;
|
350 |
-
top:
|
351 |
left: 107%;
|
352 |
}
|
353 |
-
|
354 |
-
.mo2fa_tooltip_methodlist .methodlist::after {
|
355 |
content: "";
|
356 |
position: absolute;
|
357 |
top: 50%;
|
@@ -361,30 +670,27 @@ table.mo2fa_table_features tr:last-child
|
|
361 |
border-style: solid;
|
362 |
border-color: transparent black transparent transparent;
|
363 |
}
|
364 |
-
.
|
365 |
visibility: visible;
|
366 |
}
|
367 |
-
|
368 |
.mo2fa_tooltip_methodlist {
|
369 |
position: relative;
|
370 |
display: inline-block;
|
371 |
}
|
372 |
-
|
373 |
-
.mo2fa_tooltip_methodlist .methodlist {
|
374 |
visibility: hidden;
|
375 |
width: 14em;
|
376 |
background-color: #000000b8;
|
377 |
color: #fff;
|
378 |
text-align: left;
|
379 |
border-radius: 6px;
|
380 |
-
padding:
|
381 |
position: absolute;
|
382 |
z-index: 1;
|
383 |
-
top: -
|
384 |
-
left:
|
385 |
}
|
386 |
-
|
387 |
-
.mo2fa_tooltip_methodlist .methodlist::after {
|
388 |
content: "";
|
389 |
position: absolute;
|
390 |
top: 50%;
|
@@ -394,9 +700,346 @@ table.mo2fa_table_features tr:last-child
|
|
394 |
border-style: solid;
|
395 |
border-color: transparent black transparent transparent;
|
396 |
}
|
397 |
-
.mo2fa_tooltip_methodlist:hover .
|
398 |
visibility: visible;
|
399 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
.mo2fa_enterprise_getting_started{
|
401 |
margin-top: -1em;
|
402 |
}
|
@@ -430,7 +1073,7 @@ table.mo2fa_table_features tr:last-child
|
|
430 |
.mo_2fa_card{
|
431 |
width: 98%;
|
432 |
}
|
433 |
-
.
|
434 |
font-size: 1em;
|
435 |
width: 12em;
|
436 |
}
|
@@ -441,3 +1084,41 @@ table.mo2fa_table_features tr:last-child
|
|
441 |
display: grid;
|
442 |
}
|
443 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.mo2fa_pricing_head_blue{
|
2 |
+
background-color: #1f3668;
|
3 |
+
border-radius: 1em 1em 50% 50%;
|
4 |
+
padding: 1em 1em 2em 0em;
|
5 |
+
color: white;
|
6 |
+
margin-top: -10%;
|
7 |
+
}
|
8 |
+
.mo2fa_per_tooltip_methodlist {
|
9 |
+
position: relative;
|
10 |
+
display: inline-block;
|
11 |
+
}
|
12 |
+
.mo2fa_per_tooltip_methodlist .mo2fa_methodlist {
|
13 |
+
visibility: hidden;
|
14 |
+
width: 13em;
|
15 |
+
background-color: #000000b8;
|
16 |
+
color: #fff;
|
17 |
+
text-align: left;
|
18 |
+
border-radius: 6px;
|
19 |
+
padding: 12px 2px 12px 28px;
|
20 |
+
position: absolute;
|
21 |
+
z-index: 1;
|
22 |
+
top: -2em;
|
23 |
+
left: 107%;
|
24 |
+
}
|
25 |
+
.mo2fa_per_tooltip_methodlist:hover .mo2fa_methodlist {
|
26 |
+
visibility: visible;
|
27 |
+
}
|
28 |
+
.mo2fa_per_tooltip_methodlist .mo2fa_methodlist::after {
|
29 |
+
content: "";
|
30 |
+
position: absolute;
|
31 |
+
top: 50%;
|
32 |
+
right: 100%;
|
33 |
+
margin-top: -5px;
|
34 |
+
border-width: 5px;
|
35 |
+
border-style: solid;
|
36 |
+
border-color: transparent black transparent transparent;
|
37 |
+
}
|
38 |
+
.mo2fa_on_per_tooltip_methodlist {
|
39 |
+
position: relative;
|
40 |
+
display: inline-block;
|
41 |
+
}
|
42 |
+
.mo2fa_on_per_tooltip_methodlist .mo2fa_methodlist {
|
43 |
+
visibility: hidden;
|
44 |
+
width: 14em;
|
45 |
+
background-color: #000000b8;
|
46 |
+
color: #fff;
|
47 |
+
text-align: left;
|
48 |
+
border-radius: 6px;
|
49 |
+
padding: 12px 2px 12px 28px;
|
50 |
+
position: absolute;
|
51 |
+
z-index: 1;
|
52 |
+
top: -1.6em;
|
53 |
+
left: 90%;
|
54 |
+
}
|
55 |
+
.mo2fa_on_per_tooltip_methodlist:hover .mo2fa_methodlist {
|
56 |
+
visibility: visible;
|
57 |
+
}
|
58 |
+
.mo2fa_on_per_tooltip_methodlist .mo2fa_methodlist::after {
|
59 |
+
content: "";
|
60 |
+
position: absolute;
|
61 |
+
top: 50%;
|
62 |
+
right: 100%;
|
63 |
+
margin-top: -5px;
|
64 |
+
border-width: 5px;
|
65 |
+
border-style: solid;
|
66 |
+
border-color: transparent black transparent transparent;
|
67 |
+
}
|
68 |
+
|
69 |
+
|
70 |
+
.mo2fa_cloud_per_tooltip_methodlist {
|
71 |
+
position: relative;
|
72 |
+
display: inline-block;
|
73 |
+
}
|
74 |
+
.mo2fa_cloud_per_tooltip_methodlist .mo2fa_methodlist {
|
75 |
+
visibility: hidden;
|
76 |
+
width: 14em;
|
77 |
+
background-color: #000000b8;
|
78 |
+
color: #fff;
|
79 |
+
text-align: left;
|
80 |
+
border-radius: 6px;
|
81 |
+
padding: 11px 1px 11px 43px;
|
82 |
+
position: absolute;
|
83 |
+
z-index: 1;
|
84 |
+
top: -15px;
|
85 |
+
right: 110%;
|
86 |
+
}
|
87 |
+
.mo2fa_cloud_per_tooltip_methodlist:hover .mo2fa_methodlist {
|
88 |
+
visibility: visible;
|
89 |
+
}
|
90 |
+
.mo2fa_cloud_per_tooltip_methodlist .mo2fa_methodlist::after {
|
91 |
+
content: "";
|
92 |
+
position: absolute;
|
93 |
+
top: 50%;
|
94 |
+
left: 100%;
|
95 |
+
margin-top: -5px;
|
96 |
+
border-width: 5px;
|
97 |
+
border-style: solid;
|
98 |
+
border-color: transparent transparent transparent black;
|
99 |
+
}
|
100 |
+
|
101 |
+
.mo2fa_fido_tooltip_methodlist {
|
102 |
+
position: relative;
|
103 |
+
display: inline-block;
|
104 |
+
}
|
105 |
+
.mo2fa_fido_tooltip_methodlist .mo2fa_methodlist {
|
106 |
+
visibility: hidden;
|
107 |
+
width: 16em;
|
108 |
+
background-color: #000000b8;
|
109 |
+
color: #fff;
|
110 |
+
text-align: left;
|
111 |
+
border-radius: 6px;
|
112 |
+
padding: 12px 2px 12px 28px;
|
113 |
+
position: absolute;
|
114 |
+
z-index: 1;
|
115 |
+
top: -1.9em;
|
116 |
+
left: 91%;
|
117 |
+
}
|
118 |
+
.mo2fa_fido_tooltip_methodlist:hover .mo2fa_methodlist {
|
119 |
+
visibility: visible;
|
120 |
+
}
|
121 |
+
.mo2fa_fido_tooltip_methodlist .mo2fa_methodlist::after {
|
122 |
+
content: "";
|
123 |
+
position: absolute;
|
124 |
+
top: 50%;
|
125 |
+
right: 100%;
|
126 |
+
margin-top: -5px;
|
127 |
+
border-width: 5px;
|
128 |
+
border-style: solid;
|
129 |
+
border-color: transparent black transparent transparent;
|
130 |
+
}
|
131 |
+
|
132 |
+
.mo2fa_shortcode_tooltip_methodlist {
|
133 |
+
position: relative;
|
134 |
+
display: inline-block;
|
135 |
+
}
|
136 |
+
.mo2fa_shortcode_tooltip_methodlist .mo2fa_methodlist {
|
137 |
+
visibility: hidden;
|
138 |
+
width: auto;
|
139 |
+
min-width:26em;
|
140 |
+
background-color: #000000b8;
|
141 |
+
color: #fff;
|
142 |
+
text-align: left;
|
143 |
+
border-radius: 6px;
|
144 |
+
padding: 7px 0px 8px 8px;
|
145 |
+
position: absolute;
|
146 |
+
z-index: 1;
|
147 |
+
top: -1.1em;
|
148 |
+
left: 107%;
|
149 |
+
}
|
150 |
+
.mo2fa_shortcode_tooltip_methodlist:hover .mo2fa_methodlist {
|
151 |
+
visibility: visible;
|
152 |
+
}
|
153 |
+
.mo2fa_shortcode_tooltip_methodlist .mo2fa_methodlist::after {
|
154 |
+
content: "";
|
155 |
+
position: absolute;
|
156 |
+
top: 50%;
|
157 |
+
right: 100%;
|
158 |
+
margin-top: -5px;
|
159 |
+
border-width: 5px;
|
160 |
+
border-style: solid;
|
161 |
+
border-color: transparent black transparent transparent;
|
162 |
+
}
|
163 |
+
.mo2fa_shortcode_ent_tooltip_methodlist {
|
164 |
+
position: relative;
|
165 |
+
display: inline-block;
|
166 |
+
}
|
167 |
+
.mo2fa_shortcode_ent_tooltip_methodlist .mo2fa_methodlist {
|
168 |
+
visibility: hidden;
|
169 |
+
width: auto;
|
170 |
+
min-width:26em;
|
171 |
+
background-color: #000000b8;
|
172 |
+
color: #fff;
|
173 |
+
text-align: left;
|
174 |
+
border-radius: 6px;
|
175 |
+
padding: 7px 0px 8px 8px;
|
176 |
+
position: absolute;
|
177 |
+
z-index: 1;
|
178 |
+
top: -15px;
|
179 |
+
right: 110%;
|
180 |
+
}
|
181 |
+
.mo2fa_shortcode_ent_tooltip_methodlist:hover .mo2fa_methodlist {
|
182 |
+
visibility: visible;
|
183 |
+
}
|
184 |
+
.mo2fa_shortcode_ent_tooltip_methodlist .mo2fa_methodlist::after {
|
185 |
+
content: "";
|
186 |
+
position: absolute;
|
187 |
+
top: 50%;
|
188 |
+
left: 100%;
|
189 |
+
margin-top: -5px;
|
190 |
+
border-width: 5px;
|
191 |
+
border-style: solid;
|
192 |
+
border-color: transparent transparent transparent black;
|
193 |
+
}
|
194 |
+
#mo2f_upgrade_main_div:hover > #mo2fa-ribbon{
|
195 |
+
margin-top: 0%;
|
196 |
+
transition: 1s;
|
197 |
+
}
|
198 |
+
.mo2fa_per_year{
|
199 |
+
color:white;
|
200 |
+
font-size: small;
|
201 |
+
}
|
202 |
+
.mo2fa_tooltip {
|
203 |
+
position: relative;
|
204 |
+
border-bottom: 1px dotted black;
|
205 |
+
}
|
206 |
+
.mo2fa_tooltip .mo2fa_tooltiptext {
|
207 |
+
visibility: hidden;
|
208 |
+
line-height: 1.6;
|
209 |
+
width: 248px;
|
210 |
+
background-color: white;
|
211 |
+
color: cadetblue;
|
212 |
+
border: 1px solid cadetblue;
|
213 |
+
text-align: center;
|
214 |
+
border-radius: 6px;
|
215 |
+
padding: 10px 0;
|
216 |
+
position: absolute;
|
217 |
+
z-index: 1;
|
218 |
+
top: -5px;
|
219 |
+
left: 105%;
|
220 |
+
}
|
221 |
+
.mo2fa_tooltip:hover .mo2fa_tooltiptext {
|
222 |
+
visibility: visible;
|
223 |
+
}
|
224 |
+
.mo2fa-ribbon span {
|
225 |
+
position: absolute;
|
226 |
+
width: 154px;
|
227 |
+
padding: 19px 0px 15px 68px;
|
228 |
+
background-color: #3498db;
|
229 |
+
box-shadow: 0 5px 10px rgb(0 0 0 / 10%);
|
230 |
+
color: #fff;
|
231 |
+
font: 700 14px/1 Lato,sans-serif;
|
232 |
+
text-shadow: 0 1px 1px rgb(0 0 0 / 20%);
|
233 |
+
}
|
234 |
+
.mo2fa-ribbon-top-right span {
|
235 |
+
left: 0;
|
236 |
+
top: 19px;
|
237 |
+
transform: rotate(45deg);
|
238 |
+
z-index: 1;
|
239 |
+
}
|
240 |
+
.mo2fa-ribbon {
|
241 |
+
width: 160px;
|
242 |
+
height: 160px;
|
243 |
+
overflow: hidden;
|
244 |
+
position: absolute;
|
245 |
+
z-index: 0;
|
246 |
+
}
|
247 |
+
.mo2fa-ribbon-top-right {
|
248 |
+
top: 154px;
|
249 |
+
right: 486px;
|
250 |
+
}
|
251 |
+
.mo2fa-ribbon::before {
|
252 |
+
position: absolute;
|
253 |
+
content: "";
|
254 |
+
border: 5px solid #2980b9;
|
255 |
+
}
|
256 |
+
.mo2fa-ribbon-top-right::before {
|
257 |
+
top: -2px;
|
258 |
+
left: 34px;
|
259 |
+
}
|
260 |
+
.mo2fa-ribbon::after, .mo2fa-ribbon::before {
|
261 |
+
position: absolute;
|
262 |
+
content: "";
|
263 |
+
border: 5px solid #2980b9;
|
264 |
+
}
|
265 |
+
.mo2fa-ribbon-top-right::after {
|
266 |
+
bottom: 34px;
|
267 |
+
right: 0;
|
268 |
+
}
|
269 |
+
.mo2fa_pricing_head_sky{
|
270 |
+
background-color: #327a86;
|
271 |
+
border-radius: 1em 1em 50% 50%;
|
272 |
+
padding: 1em 1em 2em 0em;
|
273 |
+
color: white;
|
274 |
+
margin-top: -10%;
|
275 |
+
height:15.5em;
|
276 |
+
}
|
277 |
+
.wp-core-ui select{
|
278 |
+
padding: 4px 24px 4px 8px;
|
279 |
+
margin-left:1em;
|
280 |
+
}
|
281 |
+
.mo2fa_plan-type{
|
282 |
+
text-align: center;
|
283 |
+
color: #1f3668;
|
284 |
+
font-size: 28px;
|
285 |
+
}
|
286 |
+
.mo2fa_ul li{
|
287 |
+
margin-bottom: 0%;
|
288 |
+
}
|
289 |
.mo2fa_pricing_feature_collection_supporter{
|
290 |
height: 32em;
|
291 |
}
|
296 |
}
|
297 |
i.fa-check {
|
298 |
color: black;
|
299 |
+
margin-left:2em;
|
300 |
margin-right: 17px;
|
301 |
margin-top: 0.5em;
|
302 |
margin-bottom: 0.5em;
|
303 |
}
|
304 |
i.fa-times {
|
305 |
color: #b6abab;
|
306 |
+
margin-left: 2em;
|
307 |
margin-right: 17px;
|
308 |
margin-top: 0.5em;
|
309 |
margin-bottom: 0.5em;
|
316 |
|
317 |
}
|
318 |
.mo2fa_pricing_feature_collection{
|
|
|
319 |
height: 31em;
|
|
|
|
|
|
|
|
|
320 |
}
|
321 |
.mo2fa_limit_pricing_feature_mo_2fa{
|
322 |
color: #b6abab;
|
323 |
font-weight: 500;
|
324 |
}
|
325 |
.mo2fa_unltimate_feature{
|
326 |
+
text-align: center;
|
327 |
+
color: #000000;
|
328 |
+
font-family:Open Sans;
|
329 |
+
letter-spacing: 0.3px;
|
330 |
+
padding:0.5em;
|
331 |
+
font-family:Open Sans;
|
332 |
}
|
333 |
.mo2fa_sec{
|
334 |
width: 27em;
|
338 |
border: 1px solid #ccc;
|
339 |
padding-top: 2em;
|
340 |
}
|
341 |
+
.mo2fa_upgrade_my_plan_ent{
|
342 |
border: none;
|
343 |
+
top: 50%;
|
344 |
+
left: 50%;
|
345 |
color: white;
|
346 |
padding: 15px 32px;
|
347 |
width: auto;
|
348 |
+
min-width: 50%;
|
349 |
border-radius: 26px;
|
350 |
text-align: center;
|
351 |
text-decoration: none;
|
352 |
display: inline-block;
|
353 |
+
background: #327a86;
|
354 |
font-size: 16px;
|
355 |
height: auto;
|
|
|
356 |
margin-top: 24px;
|
357 |
}
|
358 |
+
.mo2fa_upgrade_my_plan_ent:hover{
|
359 |
+
border: none;
|
360 |
+
background: #8d86f5;
|
361 |
+
}
|
362 |
+
.mo2fa_upgrade_my_plan {
|
363 |
+
border: none;
|
364 |
+
top: 50%;
|
365 |
+
left: 50%;
|
366 |
+
color: white;
|
367 |
+
padding: 15px 32px;
|
368 |
+
width: auto;
|
369 |
+
min-width: 50%;
|
370 |
+
border-radius: 26px;
|
371 |
+
text-align: center;
|
372 |
+
text-decoration: none;
|
373 |
+
display: inline-block;
|
374 |
+
background: #1f3668;
|
375 |
+
font-size: 16px;
|
376 |
+
height: auto;
|
377 |
+
margin-top: 24px;
|
378 |
+
cursor:pointer;
|
379 |
+
}
|
380 |
.mo2fa_upgrade_my_plan:hover{
|
381 |
border: none;
|
382 |
background: #8d86f5;
|
387 |
.mo2fa_pricing_tabs_mo{
|
388 |
width: auto;
|
389 |
border-radius: 4px;
|
390 |
+
height: 84.5em;
|
391 |
border: 1px solid #ccc;
|
392 |
padding-top: 2em;
|
393 |
}
|
409 |
color: white;
|
410 |
background: #8d86f5;
|
411 |
}
|
412 |
+
.mo2fa_web_sec{
|
413 |
+
padding:20px 0;
|
414 |
+
}
|
415 |
.mo2fa_pricing_head_mo_2fa{
|
416 |
+
font-size: 20px;
|
417 |
+
color: white;
|
418 |
+
line-height: 1.6;
|
419 |
margin-bottom: 3%;
|
420 |
+
font-family:unset;
|
421 |
}
|
422 |
.mo2fa_method-list-size{
|
423 |
font-size: 11px;
|
426 |
margin-left: 2em;
|
427 |
font-weight: 450;
|
428 |
}
|
|
|
429 |
.mo2fa_method-list-mo-size-cross{
|
430 |
font-size: 11px;
|
431 |
color: #b6abab;
|
433 |
list-style: none!important;
|
434 |
margin-left: 2em;
|
435 |
}
|
|
|
436 |
.mo2fa_price_mo_2fa{
|
437 |
font-size: 35px;
|
438 |
font-weight: bold;
|
439 |
color: black;
|
|
|
440 |
}
|
441 |
.mo2fa_purchase_user_limit_mo{
|
442 |
margin-top: 22px!important;
|
443 |
margin-bottom: 0px!important;
|
444 |
color: black;
|
445 |
}
|
|
|
446 |
.mo2fa_purchase_otp_limit{
|
447 |
margin-top: 10px!important;
|
448 |
margin-bottom: 4px!important;
|
449 |
color: black;
|
|
|
450 |
}
|
451 |
.mo2fa_increase_my_limit{
|
452 |
+
width:40%;
|
|
|
453 |
color: black;
|
454 |
font-size: 11px;
|
455 |
background: #c9dbdb75;
|
466 |
.mo2fa_ul{
|
467 |
font-size: 15px;
|
468 |
}
|
469 |
+
.mo2fa_ul li{
|
470 |
+
font-size: 14px;
|
471 |
+
font-family: system-ui;
|
472 |
+
}
|
473 |
+
|
474 |
+
.mo2fa_ul li:nth-of-type(2n+1) {
|
475 |
+
background-color: rgba(23,61,80,.06);
|
476 |
+
}
|
477 |
.mo2fa_more_details_p,.mo2fa_more_details_p1{
|
478 |
font-size: 13px;
|
479 |
margin-bottom: -10px;
|
488 |
}
|
489 |
.mo2fa_pricing{
|
490 |
padding: 16px 55px 12px 41px;
|
491 |
+
height: 10em;
|
|
|
492 |
}
|
493 |
.mo2fa_pricing_p{
|
494 |
font-size: 10px;
|
498 |
font-size: 46px;
|
499 |
font-weight: 600;
|
500 |
padding: 5px 5px 5px 5px;
|
501 |
+
margin-top: 35px;
|
502 |
+
color:white;
|
503 |
}
|
504 |
.mo2fa_country{
|
505 |
margin-top: 2px;
|
526 |
.mo2fa_starting_from{
|
527 |
font-size: 10px;
|
528 |
margin-left: -24px;
|
|
|
529 |
}
|
530 |
.mo2fa_center{
|
531 |
text-align: center;
|
535 |
border: none!important;
|
536 |
}
|
537 |
.mo2fa_pricing_tabs_mo_premium{
|
|
|
|
|
538 |
background: ffffffad;
|
539 |
border: none;
|
540 |
box-shadow: 12px;
|
553 |
background: #2a80caa6;
|
554 |
color: white;
|
555 |
height: 3em;
|
|
|
556 |
margin-left: 0px;
|
557 |
margin-top: -2em;
|
558 |
font-size: 16px;
|
586 |
height: 28px;
|
587 |
width:auto;
|
588 |
}
|
589 |
+
.mo2fa_category_feature{
|
590 |
font-size: 16px;
|
591 |
font-weight: 600;
|
592 |
padding-bottom: 0.3em;
|
597 |
margin-top: 0.3em;
|
598 |
margin-bottom: 0.3em;
|
599 |
}
|
600 |
+
.mo2fa_bg_category_main{
|
601 |
font-size: 17px;
|
602 |
border :0.5px solid #c1c1c1 ;
|
603 |
background: #c9dbdb!important
|
604 |
}
|
605 |
+
.mo2fa_description{
|
606 |
font-size: 13px!important;
|
607 |
font-weight: 400;
|
608 |
}
|
642 |
min-width: 22%!important;
|
643 |
width:10%;
|
644 |
}
|
645 |
+
.mo2fa_tooltip_sms_info {
|
646 |
position: relative;
|
647 |
display: inline-block;
|
648 |
}
|
649 |
|
650 |
+
.mo2fa_tooltip_sms_info .mo2fa_sms_info {
|
651 |
visibility: hidden;
|
652 |
width: 15em;
|
653 |
background-color: #000000b8;
|
654 |
color: #fff;
|
655 |
text-align: left;
|
656 |
border-radius: 6px;
|
657 |
+
padding: 7px 6px 8px 10px;
|
658 |
position: absolute;
|
659 |
z-index: 1;
|
660 |
+
top: 0px;
|
661 |
left: 107%;
|
662 |
}
|
663 |
+
.mo2fa_tooltip_sms_info .mo2fa_sms_info::after {
|
|
|
664 |
content: "";
|
665 |
position: absolute;
|
666 |
top: 50%;
|
670 |
border-style: solid;
|
671 |
border-color: transparent black transparent transparent;
|
672 |
}
|
673 |
+
.mo2fa_tooltip_sms_info:hover .mo2fa_sms_info {
|
674 |
visibility: visible;
|
675 |
}
|
|
|
676 |
.mo2fa_tooltip_methodlist {
|
677 |
position: relative;
|
678 |
display: inline-block;
|
679 |
}
|
680 |
+
.mo2fa_tooltip_methodlist .mo2fa_methodlist {
|
|
|
681 |
visibility: hidden;
|
682 |
width: 14em;
|
683 |
background-color: #000000b8;
|
684 |
color: #fff;
|
685 |
text-align: left;
|
686 |
border-radius: 6px;
|
687 |
+
padding: 11px 1px 11px 43px;
|
688 |
position: absolute;
|
689 |
z-index: 1;
|
690 |
+
top: -9.4em;
|
691 |
+
left: 95%;
|
692 |
}
|
693 |
+
.mo2fa_tooltip_methodlist .mo2fa_methodlist::after {
|
|
|
694 |
content: "";
|
695 |
position: absolute;
|
696 |
top: 50%;
|
700 |
border-style: solid;
|
701 |
border-color: transparent black transparent transparent;
|
702 |
}
|
703 |
+
.mo2fa_tooltip_methodlist:hover .mo2fa_methodlist {
|
704 |
visibility: visible;
|
705 |
}
|
706 |
+
|
707 |
+
.mo2fa_ent_tooltip_methodlist {
|
708 |
+
position: relative;
|
709 |
+
display: inline-block;
|
710 |
+
}
|
711 |
+
.mo2fa_ent_tooltip_methodlist .mo2fa_methodlist {
|
712 |
+
visibility: hidden;
|
713 |
+
width: 14em;
|
714 |
+
background-color: #000000b8;
|
715 |
+
color: #fff;
|
716 |
+
text-align: left;
|
717 |
+
border-radius: 6px;
|
718 |
+
padding: 11px 1px 11px 43px;
|
719 |
+
position: absolute;
|
720 |
+
z-index: 1;
|
721 |
+
top: -128px;
|
722 |
+
right: 110%;
|
723 |
+
}
|
724 |
+
.mo2fa_ent_tooltip_methodlist .mo2fa_methodlist::after {
|
725 |
+
content: "";
|
726 |
+
position: absolute;
|
727 |
+
top: 50%;
|
728 |
+
left: 100%;
|
729 |
+
margin-top: -5px;
|
730 |
+
border-width: 5px;
|
731 |
+
border-style: solid;
|
732 |
+
border-color: transparent transparent transparent black;
|
733 |
+
}
|
734 |
+
.mo2fa_ent_tooltip_methodlist:hover .mo2fa_methodlist {
|
735 |
+
visibility: visible;
|
736 |
+
}
|
737 |
+
.mo2fa_rba_tooltip_methodlist {
|
738 |
+
position: relative;
|
739 |
+
display: inline-block;
|
740 |
+
}
|
741 |
+
.mo2fa_rba_tooltip_methodlist .mo2fa_methodlist {
|
742 |
+
visibility: hidden;
|
743 |
+
width: 14em;
|
744 |
+
background-color: #000000b8;
|
745 |
+
color: #fff;
|
746 |
+
text-align: left;
|
747 |
+
border-radius: 6px;
|
748 |
+
padding: 7px 0px 8px 11px;
|
749 |
+
position: absolute;
|
750 |
+
z-index: 1;
|
751 |
+
top: -2.6em;
|
752 |
+
left: 93%;
|
753 |
+
}
|
754 |
+
.mo2fa_rba_tooltip_methodlist .mo2fa_methodlist::after {
|
755 |
+
content: "";
|
756 |
+
position: absolute;
|
757 |
+
top: 50%;
|
758 |
+
right: 100%;
|
759 |
+
margin-top: -5px;
|
760 |
+
border-width: 5px;
|
761 |
+
border-style: solid;
|
762 |
+
border-color: transparent black transparent transparent;
|
763 |
+
}
|
764 |
+
.mo2fa_rba_tooltip_methodlist:hover .mo2fa_methodlist {
|
765 |
+
visibility: visible;
|
766 |
+
}
|
767 |
+
.mo2fa_ent_rba_tooltip_methodlist {
|
768 |
+
position: relative;
|
769 |
+
display: inline-block;
|
770 |
+
}
|
771 |
+
.mo2fa_ent_rba_tooltip_methodlist .mo2fa_methodlist {
|
772 |
+
visibility: hidden;
|
773 |
+
width: auto;
|
774 |
+
min-width:10em;
|
775 |
+
background-color: #000000b8;
|
776 |
+
color: #fff;
|
777 |
+
text-align: left;
|
778 |
+
border-radius: 6px;
|
779 |
+
padding: 11px 6px 11px 17px;
|
780 |
+
position: absolute;
|
781 |
+
z-index: 1;
|
782 |
+
top: -37px;
|
783 |
+
right: 108%;
|
784 |
+
}
|
785 |
+
.mo2fa_ent_rba_tooltip_methodlist .mo2fa_methodlist::after {
|
786 |
+
content: "";
|
787 |
+
position: absolute;
|
788 |
+
top: 50%;
|
789 |
+
left: 100%;
|
790 |
+
margin-top: -5px;
|
791 |
+
border-width: 5px;
|
792 |
+
border-style: solid;
|
793 |
+
border-color: transparent transparent transparent black;
|
794 |
+
}
|
795 |
+
.mo2fa_ent_rba_tooltip_methodlist:hover .mo2fa_methodlist {
|
796 |
+
visibility: visible;
|
797 |
+
}
|
798 |
+
.mo2fa_redirect_tooltip_methodlist {
|
799 |
+
position: relative;
|
800 |
+
display: inline-block;
|
801 |
+
}
|
802 |
+
.mo2fa_redirect_tooltip_methodlist .mo2fa_methodlist {
|
803 |
+
visibility: hidden;
|
804 |
+
width: 17em;
|
805 |
+
background-color: #000000b8;
|
806 |
+
color: #fff;
|
807 |
+
text-align: left;
|
808 |
+
border-radius: 6px;
|
809 |
+
padding: 10px 3px 10px 34px;
|
810 |
+
position: absolute;
|
811 |
+
z-index: 1;
|
812 |
+
top: -2.1em;
|
813 |
+
left: 93%;
|
814 |
+
}
|
815 |
+
.mo2fa_redirect_tooltip_methodlist .mo2fa_methodlist::after {
|
816 |
+
content: "";
|
817 |
+
position: absolute;
|
818 |
+
top: 50%;
|
819 |
+
right: 100%;
|
820 |
+
margin-top: -5px;
|
821 |
+
border-width: 5px;
|
822 |
+
border-style: solid;
|
823 |
+
border-color: transparent black transparent transparent;
|
824 |
+
}
|
825 |
+
.mo2fa_redirect_tooltip_methodlist:hover .mo2fa_methodlist {
|
826 |
+
visibility: visible;
|
827 |
+
}
|
828 |
+
.mo2fa_ent_redirect_tooltip_methodlist {
|
829 |
+
position: relative;
|
830 |
+
display: inline-block;
|
831 |
+
}
|
832 |
+
.mo2fa_ent_redirect_tooltip_methodlist .mo2fa_methodlist {
|
833 |
+
visibility: hidden;
|
834 |
+
width: auto;
|
835 |
+
min-width:20em;
|
836 |
+
background-color: #000000b8;
|
837 |
+
color: #fff;
|
838 |
+
text-align: left;
|
839 |
+
border-radius: 6px;
|
840 |
+
padding: 11px 1px 11px 13px;
|
841 |
+
position: absolute;
|
842 |
+
z-index: 1;
|
843 |
+
top: -28px;
|
844 |
+
right: 105%;
|
845 |
+
}
|
846 |
+
.mo2fa_ent_redirect_tooltip_methodlist .mo2fa_methodlist::after {
|
847 |
+
content: "";
|
848 |
+
position: absolute;
|
849 |
+
top: 50%;
|
850 |
+
left: 100%;
|
851 |
+
margin-top: -5px;
|
852 |
+
border-width: 5px;
|
853 |
+
border-style: solid;
|
854 |
+
border-color: transparent transparent transparent black;
|
855 |
+
}
|
856 |
+
.mo2fa_ent_redirect_tooltip_methodlist:hover .mo2fa_methodlist {
|
857 |
+
visibility: visible;
|
858 |
+
}
|
859 |
+
.mo2fa_role_tooltip_methodlist {
|
860 |
+
position: relative;
|
861 |
+
display: inline-block;
|
862 |
+
}
|
863 |
+
.mo2fa_role_tooltip_methodlist .mo2fa_methodlist {
|
864 |
+
visibility: hidden;
|
865 |
+
width: auto;
|
866 |
+
min-width:10em;
|
867 |
+
background-color: #000000b8;
|
868 |
+
color: #fff;
|
869 |
+
text-align: left;
|
870 |
+
border-radius: 6px;
|
871 |
+
padding: 6px 7px 8px 17px;
|
872 |
+
position: absolute;
|
873 |
+
z-index: 1;
|
874 |
+
top: -1.1em;
|
875 |
+
left: 90%;
|
876 |
+
}
|
877 |
+
.mo2fa_role_tooltip_methodlist .mo2fa_methodlist::after {
|
878 |
+
content: "";
|
879 |
+
position: absolute;
|
880 |
+
top: 50%;
|
881 |
+
right: 100%;
|
882 |
+
margin-top: -5px;
|
883 |
+
border-width: 5px;
|
884 |
+
border-style: solid;
|
885 |
+
border-color: transparent black transparent transparent;
|
886 |
+
}
|
887 |
+
.mo2fa_role_tooltip_methodlist:hover .mo2fa_methodlist {
|
888 |
+
visibility: visible;
|
889 |
+
}
|
890 |
+
.mo2fa_ent_role_tooltip_methodlist {
|
891 |
+
position: relative;
|
892 |
+
display: inline-block;
|
893 |
+
}
|
894 |
+
.mo2fa_ent_role_tooltip_methodlist .mo2fa_methodlist {
|
895 |
+
visibility: hidden;
|
896 |
+
width: auto;
|
897 |
+
min-width:10em;
|
898 |
+
background-color: #000000b8;
|
899 |
+
color: #fff;
|
900 |
+
text-align: left;
|
901 |
+
border-radius: 6px;
|
902 |
+
padding: 6px 7px 8px 17px;
|
903 |
+
position: absolute;
|
904 |
+
z-index: 1;
|
905 |
+
top: -17px;
|
906 |
+
right: 110%;
|
907 |
+
}
|
908 |
+
.mo2fa_ent_role_tooltip_methodlist .mo2fa_methodlist::after {
|
909 |
+
content: "";
|
910 |
+
position: absolute;
|
911 |
+
top: 50%;
|
912 |
+
left: 100%;
|
913 |
+
margin-top: -5px;
|
914 |
+
border-width: 5px;
|
915 |
+
border-style: solid;
|
916 |
+
border-color: transparent transparent transparent black;
|
917 |
+
}
|
918 |
+
.mo2fa_ent_role_tooltip_methodlist:hover .mo2fa_methodlist {
|
919 |
+
visibility: visible;
|
920 |
+
}
|
921 |
+
.mo2fa_custom_sms_tooltip_methodlist {
|
922 |
+
position: relative;
|
923 |
+
display: inline-block;
|
924 |
+
}
|
925 |
+
.mo2fa_custom_sms_tooltip_methodlist .mo2fa_methodlist {
|
926 |
+
visibility: hidden;
|
927 |
+
width: auto;
|
928 |
+
min-width:16em;
|
929 |
+
background-color: #000000b8;
|
930 |
+
color: #fff;
|
931 |
+
text-align: left;
|
932 |
+
border-radius: 6px;
|
933 |
+
padding: 7px 0px 8px 21px;
|
934 |
+
position: absolute;
|
935 |
+
z-index: 1;
|
936 |
+
top: -1.1em;
|
937 |
+
left: 107%;
|
938 |
+
}
|
939 |
+
.mo2fa_custom_sms_tooltip_methodlist .mo2fa_methodlist::after {
|
940 |
+
content: "";
|
941 |
+
position: absolute;
|
942 |
+
top: 50%;
|
943 |
+
right: 100%;
|
944 |
+
margin-top: -5px;
|
945 |
+
border-width: 5px;
|
946 |
+
border-style: solid;
|
947 |
+
border-color: transparent black transparent transparent;
|
948 |
+
}
|
949 |
+
.mo2fa_custom_sms_tooltip_methodlist:hover .mo2fa_methodlist {
|
950 |
+
visibility: visible;
|
951 |
+
}
|
952 |
+
.mo2fa_ent_custom_sms_tooltip_methodlist {
|
953 |
+
position: relative;
|
954 |
+
display: inline-block;
|
955 |
+
}
|
956 |
+
.mo2fa_ent_custom_sms_tooltip_methodlist .mo2fa_methodlist {
|
957 |
+
visibility: hidden;
|
958 |
+
width: auto;
|
959 |
+
min-width:16em;
|
960 |
+
background-color: #000000b8;
|
961 |
+
color: #fff;
|
962 |
+
text-align: left;
|
963 |
+
border-radius: 6px;
|
964 |
+
padding: 7px 0px 8px 21px;
|
965 |
+
position: absolute;
|
966 |
+
z-index: 1;
|
967 |
+
top: -17px;
|
968 |
+
right: 106%;
|
969 |
+
}
|
970 |
+
.mo2fa_ent_custom_sms_tooltip_methodlist .mo2fa_methodlist::after {
|
971 |
+
content: "";
|
972 |
+
position: absolute;
|
973 |
+
top: 50%;
|
974 |
+
left: 100%;
|
975 |
+
margin-top: -5px;
|
976 |
+
border-width: 5px;
|
977 |
+
border-style: solid;
|
978 |
+
border-color: transparent transparent transparent black;
|
979 |
+
}
|
980 |
+
.mo2fa_ent_custom_sms_tooltip_methodlist:hover .mo2fa_methodlist {
|
981 |
+
visibility: visible;
|
982 |
+
}
|
983 |
+
.mo2fa_enforce_2fa_tooltip_methodlist {
|
984 |
+
position: relative;
|
985 |
+
display: inline-block;
|
986 |
+
}
|
987 |
+
.mo2fa_enforce_2fa_tooltip_methodlist .mo2fa_methodlist {
|
988 |
+
visibility: hidden;
|
989 |
+
width: 14em;
|
990 |
+
background-color: #000000b8;
|
991 |
+
color: #fff;
|
992 |
+
text-align: left;
|
993 |
+
border-radius: 6px;
|
994 |
+
padding: 8px 22px 8px 22px;
|
995 |
+
position: absolute;
|
996 |
+
z-index: 1;
|
997 |
+
top: -1.1em;
|
998 |
+
left: 94%;
|
999 |
+
}
|
1000 |
+
.mo2fa_enforce_2fa_tooltip_methodlist .mo2fa_methodlist::after {
|
1001 |
+
content: "";
|
1002 |
+
position: absolute;
|
1003 |
+
top: 50%;
|
1004 |
+
right: 100%;
|
1005 |
+
margin-top: -5px;
|
1006 |
+
border-width: 5px;
|
1007 |
+
border-style: solid;
|
1008 |
+
border-color: transparent black transparent transparent;
|
1009 |
+
}
|
1010 |
+
.mo2fa_enforce_2fa_tooltip_methodlist:hover .mo2fa_methodlist {
|
1011 |
+
visibility: visible;
|
1012 |
+
}
|
1013 |
+
.mo2fa_ent_enforce_2fa_tooltip_methodlist {
|
1014 |
+
position: relative;
|
1015 |
+
display: inline-block;
|
1016 |
+
}
|
1017 |
+
.mo2fa_ent_enforce_2fa_tooltip_methodlist .mo2fa_methodlist {
|
1018 |
+
visibility: hidden;
|
1019 |
+
width: 18em;
|
1020 |
+
background-color: #000000b8;
|
1021 |
+
color: #fff;
|
1022 |
+
text-align: left;
|
1023 |
+
border-radius: 6px;
|
1024 |
+
padding: 11px 1px 11px 43px;
|
1025 |
+
position: absolute;
|
1026 |
+
z-index: 1;
|
1027 |
+
top: -26px;
|
1028 |
+
right: 110%;
|
1029 |
+
}
|
1030 |
+
.mo2fa_ent_enforce_2fa_tooltip_methodlist .mo2fa_methodlist::after {
|
1031 |
+
content: "";
|
1032 |
+
position: absolute;
|
1033 |
+
top: 50%;
|
1034 |
+
left: 100%;
|
1035 |
+
margin-top: -5px;
|
1036 |
+
border-width: 5px;
|
1037 |
+
border-style: solid;
|
1038 |
+
border-color: transparent transparent transparent black;
|
1039 |
+
}
|
1040 |
+
.mo2fa_ent_enforce_2fa_tooltip_methodlist:hover .mo2fa_methodlist {
|
1041 |
+
visibility: visible;
|
1042 |
+
}
|
1043 |
.mo2fa_enterprise_getting_started{
|
1044 |
margin-top: -1em;
|
1045 |
}
|
1073 |
.mo_2fa_card{
|
1074 |
width: 98%;
|
1075 |
}
|
1076 |
+
.mo2f_upgrade_toggle_lable{
|
1077 |
font-size: 1em;
|
1078 |
width: 12em;
|
1079 |
}
|
1084 |
display: grid;
|
1085 |
}
|
1086 |
}
|
1087 |
+
@media only screen and (min-width: 768px) and (max-width: 1024px){
|
1088 |
+
.mo2fa_pricing_head_blue{
|
1089 |
+
background-color: #1f3668;
|
1090 |
+
border-radius: 1em 1em 50% 50%;
|
1091 |
+
padding: 1em 1em 2em 0em;
|
1092 |
+
margin-top: -13%;
|
1093 |
+
}
|
1094 |
+
.mo2fa_pricing_head_sky{
|
1095 |
+
background-color: #327a86;
|
1096 |
+
border-radius: 1em 1em 50% 50%;
|
1097 |
+
padding: 1em 1em 2em 0em;
|
1098 |
+
margin-top: -14%;
|
1099 |
+
height:15.5em;
|
1100 |
+
}
|
1101 |
+
.mo2fa_pricing_tabs_mo{
|
1102 |
+
height: 95em;
|
1103 |
+
}
|
1104 |
+
.mo2fa_increase_my_limit{
|
1105 |
+
width:6em;
|
1106 |
+
}
|
1107 |
+
.mo2fa_unltimate_feature{
|
1108 |
+
height:2em;
|
1109 |
+
}
|
1110 |
+
.mo2f_upgrade_main_div{
|
1111 |
+
Width:auto;
|
1112 |
+
}
|
1113 |
+
.mo2fa_upgrade_my_plan {
|
1114 |
+
border: none;
|
1115 |
+
color: white;
|
1116 |
+
padding: 15px 32px;
|
1117 |
+
width: auto;
|
1118 |
+
min-width: 50%;
|
1119 |
+
border-radius: 26px;
|
1120 |
+
text-align: center;
|
1121 |
+
text-decoration: none;
|
1122 |
+
display: inline-block;
|
1123 |
+
}
|
1124 |
+
}
|
includes/css/user-profile.css
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#mo2fa_form-table-user-profile th{
|
2 |
+
padding:0px 0px 0px 0px !important;
|
3 |
+
text-align: center;
|
4 |
+
|
5 |
+
}
|
6 |
+
.mo2fa_form-table td{
|
7 |
+
padding:6px 10px;
|
8 |
+
}
|
9 |
+
.miniOrange-2FA-methods-table {
|
10 |
+
background-color: #fff;
|
11 |
+
border: 1px solid #e5e5e5;
|
12 |
+
border-spacing: 0;
|
13 |
+
}
|
14 |
+
|
15 |
+
.miniOrange-2FA-methods-table thead,
|
16 |
+
.miniOrange-2FA-methods-table tfoot {
|
17 |
+
background: #fff;
|
18 |
+
}
|
19 |
+
|
20 |
+
.miniOrange-2FA-methods-table thead th {
|
21 |
+
padding: 0.5em;
|
22 |
+
}
|
23 |
+
|
24 |
+
.miniOrange-2FA-methods-table .col-primary,
|
25 |
+
.miniOrange-2FA-methods-table .col-enabled {
|
26 |
+
width: 5%;
|
27 |
+
}
|
28 |
+
|
29 |
+
.miniOrange-2FA-methods-table .col-name {
|
30 |
+
width: 90%;
|
31 |
+
}
|
32 |
+
.miniOrange-2FA-methods-
|
33 |
+
.miniOrange-2FA-methods-table tbody th {
|
34 |
+
text-align: center;
|
35 |
+
}
|
36 |
+
|
37 |
+
.miniOrange-2FA-methods-table tbody th,
|
38 |
+
.miniOrange-2FA-methods-table tbody td {
|
39 |
+
vertical-align: top;
|
40 |
+
}
|
41 |
+
|
42 |
+
.miniOrange-2FA-methods-table tbody tr:nth-child(odd) {
|
43 |
+
background-color: #f9f9f9;
|
44 |
+
|
45 |
+
/*background-color: nome;*/
|
46 |
+
}
|
47 |
+
#mo2f_configure_kba{
|
48 |
+
border:1px solid;
|
49 |
+
text-align: center;
|
50 |
+
border: 1px solid #52523b;
|
51 |
+
}
|
52 |
+
.mo2f_kba_header thead th{
|
53 |
+
border-bottom: 1px solid black;
|
54 |
+
}
|
55 |
+
.miniOrange-2FA-methods-table tbody th, .miniOrange-2FA-methods-table tbody td{
|
56 |
+
/*text-align: center;*/
|
57 |
+
}
|
58 |
+
#mo2f_setup_sms{
|
59 |
+
/*margin:0 auto;*/
|
60 |
+
}
|
61 |
+
#mo2f_setup_sms tr{
|
62 |
+
background-color: transparent;
|
63 |
+
}
|
64 |
+
.mo2f_qr{
|
65 |
+
margin-left: 5%;
|
66 |
+
}
|
67 |
+
.mcol-2{
|
68 |
+
margin-left: 2%;
|
69 |
+
}
|
70 |
+
.mo2fa_popup_text
|
71 |
+
{
|
72 |
+
color:black;
|
73 |
+
margin-top: 2%;
|
74 |
+
font-weight: 600;
|
75 |
+
font-size: 12px !important;;
|
76 |
+
|
77 |
+
}
|
78 |
+
.mo2fa_overlay_success {
|
79 |
+
width: min-content;
|
80 |
+
height: 40px;
|
81 |
+
position: fixed;
|
82 |
+
float: right;
|
83 |
+
z-index: 1;
|
84 |
+
top: 0;
|
85 |
+
right: 0;
|
86 |
+
margin-top: 7%;
|
87 |
+
background-color:#bcffb4 !important ;
|
88 |
+
/* overflow-x: hidden; */
|
89 |
+
border-left: 4px solid #46b450;
|
90 |
+
}
|
91 |
+
.mo2fa_overlay_error {
|
92 |
+
width: min-content;
|
93 |
+
height: min-content;
|
94 |
+
padding-bottom: 1%;
|
95 |
+
position: fixed;
|
96 |
+
float: right;
|
97 |
+
z-index: 1;
|
98 |
+
top: 0;
|
99 |
+
right: 0;
|
100 |
+
margin-top: 7%;
|
101 |
+
background-color:bisque !important ;
|
102 |
+
/* overflow-x: hidden; */
|
103 |
+
border-left: 4px solid red;
|
104 |
+
}
|
105 |
+
|
106 |
+
* {box-sizing: border-box}
|
107 |
+
|
108 |
+
/* Style the tab */
|
109 |
+
.mo2fa_tab {
|
110 |
+
float: left;
|
111 |
+
border: 1px solid #ccc;
|
112 |
+
background-color: #f1f1f1;
|
113 |
+
width: 15%;
|
114 |
+
height: 324px;
|
115 |
+
min-height: 300px;
|
116 |
+
/*margin-left: 210px;*/
|
117 |
+
}
|
118 |
+
|
119 |
+
/* Style the buttons that are used to open the tab content */
|
120 |
+
.mo2fa_tab button {
|
121 |
+
display: block;
|
122 |
+
background-color: inherit;
|
123 |
+
color: black;
|
124 |
+
padding: 8px 20px;
|
125 |
+
width: 100%;
|
126 |
+
border: none;
|
127 |
+
outline: none;
|
128 |
+
text-align: left;
|
129 |
+
cursor: pointer;
|
130 |
+
transition: 0.3s;
|
131 |
+
}
|
132 |
+
|
133 |
+
/* Change background color of buttons on hover */
|
134 |
+
.mo2fa_tab button:hover {
|
135 |
+
background-color: #ddd;
|
136 |
+
}
|
137 |
+
|
138 |
+
/* Create an active/current "tab button" class */
|
139 |
+
.mo2fa_tab button.active {
|
140 |
+
background-color: #ccc;
|
141 |
+
}
|
142 |
+
|
143 |
+
/* Style the tab content */
|
144 |
+
.mo2fa_tabcontent {
|
145 |
+
float: left;
|
146 |
+
padding: 0px 12px;
|
147 |
+
border: 1px solid #ccc;
|
148 |
+
width: 80%;
|
149 |
+
border-left: none;
|
150 |
+
/*height: autoffrom;*/
|
151 |
+
height: 324px;
|
152 |
+
}
|
153 |
+
|
154 |
+
.mo2f_miniAuthApp {
|
155 |
+
color: #2271b1;
|
156 |
+
padding:0.5% 3%;
|
157 |
+
/*font-size: 18px;*/
|
158 |
+
/*font-weight: 600;*/
|
159 |
+
/*width: 50%;*/
|
160 |
+
/*height: 20%;*/
|
161 |
+
margin:1px;
|
162 |
+
border: 1px solid black;
|
163 |
+
border-color: #2271b1;
|
164 |
+
background-color:#f6f7f7;
|
165 |
+
border-radius: 2px;
|
166 |
+
}
|
167 |
+
.mo2f_miniAuthApp:hover {
|
168 |
+
/*background: #20b2aa9e;*/
|
169 |
+
background: transparent;
|
170 |
+
}
|
171 |
+
input[name = 'miniOrangeAuthenticator'] {
|
172 |
+
visibility:hidden;
|
173 |
+
}
|
174 |
+
input[name = 'miniOrangeAuthenticator']:checked + .mo2f_miniAuthApp{
|
175 |
+
background: #e5e5ea;
|
176 |
+
}
|
177 |
+
.mo2fa_select_method{
|
178 |
+
width: auto !important;
|
179 |
+
}
|
includes/email-New-release.php
CHANGED
@@ -1,257 +1,567 @@
|
|
1 |
<?php
|
2 |
function mail_tem()
|
3 |
{
|
4 |
-
return '
|
5 |
-
|
|
|
6 |
<head>
|
7 |
-
<
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
}
|
85 |
-
.mo_2fa_ef_h2
|
86 |
-
{
|
87 |
-
color: #ad2100;
|
88 |
-
font-family: cursive;
|
89 |
-
}
|
90 |
-
.mo_2fa_ef_h1
|
91 |
-
{
|
92 |
-
color: #100505;
|
93 |
-
font-size: 35px;
|
94 |
-
}
|
95 |
-
.mo_2fa_ef_button
|
96 |
-
{
|
97 |
-
font-size: x-large;
|
98 |
-
background-color:#20b2aa;
|
99 |
-
color: white;
|
100 |
-
padding: 17px 127px;
|
101 |
-
font-family: cursive;
|
102 |
-
margin-left: -42px;
|
103 |
-
}
|
104 |
-
.mo_2fa_ef_read_more
|
105 |
-
{
|
106 |
-
color: #20b2aa;
|
107 |
-
border: 2px solid #20b2aa;
|
108 |
-
padding: 17px 27px;
|
109 |
-
font-family: cursive;
|
110 |
-
}
|
111 |
-
.mo_2fa_ef_read_more:hover
|
112 |
-
{
|
113 |
-
/*font-size: x-large;*/
|
114 |
-
background-color: #20b2aa;
|
115 |
-
color: white;
|
116 |
-
border: 1px solid white;
|
117 |
-
padding: 17px 27px;
|
118 |
-
font-family: cursive;
|
119 |
-
}
|
120 |
-
.mo_2fa_ef_hr
|
121 |
-
{
|
122 |
-
border: 2px solid #100505;
|
123 |
-
margin: 0px 7%;
|
124 |
-
}
|
125 |
-
.myDiv
|
126 |
-
{
|
127 |
-
|
128 |
-
/*min-height: 300px;*/
|
129 |
-
background-color: #18272a;
|
130 |
-
/*width: 29%;*/
|
131 |
-
/*float: left;*/
|
132 |
-
text-align: center;
|
133 |
-
color: white;
|
134 |
-
padding: 2px 2px;
|
135 |
-
font-size:18px;
|
136 |
-
margin-top:14px;
|
137 |
-
}
|
138 |
</style>
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
</ul>
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
</ul>
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
</ul>
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
</div>
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
<h2 style="color: black;">Support</h2>
|
219 |
-
<p style="color: black;padding: 0px 27px;text-align: justify;">You are not going to hit a ridiculously long phone menu when you call us or contact us.</p>
|
220 |
-
</div>
|
221 |
-
<div>
|
222 |
-
<br><br>
|
223 |
-
<center>
|
224 |
-
<a class="mo_2fa_ef_read_more" href="https://www.miniorange.com/contact">Read More</a>
|
225 |
-
</center>
|
226 |
-
</div>
|
227 |
-
</div>
|
228 |
-
<div class="mo_2fa_email_template_details">
|
229 |
-
<i class="fa fa-shield" style="font-size:50px;color: black;margin-top: 6%"></i>
|
230 |
-
<div style="min-height: 150px;">
|
231 |
-
<h2 style="color: black;">Security site</h2>
|
232 |
-
<p style="color: black;padding: 0px 27px;text-align: justify;">miniOrange combines Web Application Firewall (WAF),Malware Scanner,Encrypted Database and File backup</p>
|
233 |
-
</div>
|
234 |
-
<div>
|
235 |
-
<br><br>
|
236 |
-
<center>
|
237 |
-
<a class="mo_2fa_ef_read_more" href="https://security.miniorange.com/">Read More</a>
|
238 |
-
</center>
|
239 |
-
</div>
|
240 |
-
</div>
|
241 |
-
</div>
|
242 |
-
|
243 |
-
<div class="myDiv">
|
244 |
-
<h2 style="margin-bottom: -36px;"><b>You are welcome to use our New Features</b></h2>.
|
245 |
-
<h2 style="margin-bottom: -36px;" > Thank you</h2><br>
|
246 |
-
<p style="margin-top: 26px;">If you need any help we are just a mail away <p> <br>
|
247 |
-
<p style="margin-top: -47px;"> Contact us at :- <b>info@xecurify.com /2fasupport@xecurify.com<b></p><br>
|
248 |
-
<p style="margin-top: -10px;"> If you want to disable this notification please turn of the toggle of email from Notification TAB
|
249 |
-
</p>
|
250 |
-
|
251 |
-
</div>
|
252 |
</div>
|
253 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
</body>
|
255 |
-
|
|
|
|
|
|
|
|
|
256 |
}
|
257 |
?>
|
1 |
<?php
|
2 |
function mail_tem()
|
3 |
{
|
4 |
+
return '
|
5 |
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6 |
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
7 |
<head>
|
8 |
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
9 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
10 |
+
<meta name="x-apple-disable-message-reformatting">
|
11 |
+
<!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]-->
|
12 |
+
<title></title>
|
13 |
+
|
14 |
+
<style type="text/css">
|
15 |
+
table, td { color: #000000; } a { color: #0000ee; text-decoration: underline; }
|
16 |
+
@media only screen and (min-width: 520px) {
|
17 |
+
.u-row {
|
18 |
+
width: 500px !important;
|
19 |
+
}
|
20 |
+
.u-row .u-col {
|
21 |
+
vertical-align: top;
|
22 |
+
}
|
23 |
+
|
24 |
+
.u-row .u-col-50 {
|
25 |
+
width: 250px !important;
|
26 |
+
}
|
27 |
+
|
28 |
+
.u-row .u-col-100 {
|
29 |
+
width: 500px !important;
|
30 |
+
}
|
31 |
+
|
32 |
+
}
|
33 |
+
|
34 |
+
@media (max-width: 520px) {
|
35 |
+
.u-row-container {
|
36 |
+
max-width: 100% !important;
|
37 |
+
padding-left: 0px !important;
|
38 |
+
padding-right: 0px !important;
|
39 |
+
}
|
40 |
+
.u-row .u-col {
|
41 |
+
min-width: 320px !important;
|
42 |
+
max-width: 100% !important;
|
43 |
+
display: block !important;
|
44 |
+
}
|
45 |
+
.u-row {
|
46 |
+
width: calc(100% - 40px) !important;
|
47 |
+
}
|
48 |
+
.u-col {
|
49 |
+
width: 100% !important;
|
50 |
+
}
|
51 |
+
.u-col > div {
|
52 |
+
margin: 0 auto;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
body {
|
56 |
+
margin: 0;
|
57 |
+
padding: 0;
|
58 |
+
}
|
59 |
+
|
60 |
+
table,
|
61 |
+
tr,
|
62 |
+
td {
|
63 |
+
vertical-align: top;
|
64 |
+
border-collapse: collapse;
|
65 |
+
}
|
66 |
+
|
67 |
+
p {
|
68 |
+
margin: 0;
|
69 |
+
}
|
70 |
+
|
71 |
+
.ie-container table,
|
72 |
+
.mso-container table {
|
73 |
+
table-layout: fixed;
|
74 |
+
}
|
75 |
+
|
76 |
+
* {
|
77 |
+
line-height: inherit;
|
78 |
+
}
|
79 |
+
|
80 |
+
a[x-apple-data-detectors=\'true\'] {
|
81 |
+
color: inherit !important;
|
82 |
+
text-decoration: none !important;
|
83 |
+
}
|
84 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
</style>
|
86 |
+
|
87 |
+
|
88 |
+
|
89 |
+
</head>
|
90 |
+
|
91 |
+
<body class="clean-body u_body" style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #e7e7e7;color: #000000">
|
92 |
+
<!--[if IE]><div class="ie-container"><![endif]-->
|
93 |
+
<!--[if mso]><div class="mso-container"><![endif]-->
|
94 |
+
<table style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #e7e7e7;width:100%" cellpadding="0" cellspacing="0">
|
95 |
+
<tbody>
|
96 |
+
<tr style="vertical-align: top">
|
97 |
+
<td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
|
98 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #e7e7e7;"><![endif]-->
|
99 |
+
|
100 |
+
|
101 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
102 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;">
|
103 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
104 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: transparent;"><![endif]-->
|
105 |
+
|
106 |
+
<!--[if (mso)|(IE)]><td align="center" width="500" style="background-color: #20b2aa;width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
|
107 |
+
<div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
|
108 |
+
<div style="background-color: #20b2aa;width: 100% !important;">
|
109 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;"><!--<![endif]-->
|
110 |
+
|
111 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
112 |
+
<tbody>
|
113 |
+
<tr>
|
114 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
115 |
+
|
116 |
+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
117 |
+
<tr>
|
118 |
+
<td style="padding-right: 0px;padding-left: 0px;" align="center">
|
119 |
+
|
120 |
+
<img align="center" border="0" src="https://s3.amazonaws.com/Snowcovered_C_Images/40290_shield.png" alt="" title="" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: auto;float: none;width: 34%;max-width: 163.2px;" width="163.2"/>
|
121 |
+
|
122 |
+
</td>
|
123 |
+
</tr>
|
124 |
+
</table>
|
125 |
+
|
126 |
+
</td>
|
127 |
+
</tr>
|
128 |
+
</tbody>
|
129 |
+
</table>
|
130 |
+
|
131 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
132 |
+
<tbody>
|
133 |
+
<tr>
|
134 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
135 |
+
|
136 |
+
<h1 style="margin: 0px; color: #ffffff; line-height: 140%; text-align: center; word-wrap: break-word; font-weight: normal; font-family: arial,helvetica,sans-serif; font-size: 21px;">
|
137 |
+
miniOrange 2FA Plugin List of Latest Features
|
138 |
+
</h1>
|
139 |
+
|
140 |
+
</td>
|
141 |
+
</tr>
|
142 |
+
</tbody>
|
143 |
+
</table>
|
144 |
+
|
145 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
146 |
+
</div>
|
147 |
+
</div>
|
148 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
149 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
150 |
+
</div>
|
151 |
+
</div>
|
152 |
+
</div>
|
153 |
+
|
154 |
+
|
155 |
+
|
156 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
157 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
158 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
159 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
160 |
+
|
161 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
162 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
163 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
164 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
165 |
+
|
166 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
167 |
+
<tbody>
|
168 |
+
<tr>
|
169 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
170 |
+
|
171 |
+
<div>
|
172 |
+
<div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
|
173 |
+
<h2>Backup Codes</h2>
|
174 |
+
<ul class="mo_2fa_feature_backup_codes" style="text-align: left;padding-left: 15%;margin-top: 1%;padding-right: 7%;">
|
175 |
+
<li> Helps you to come out from locked out situation </li>
|
176 |
+
<li> Provide five backup codes </li>
|
177 |
+
<li> All are one time usable </li>
|
178 |
+
</ul>
|
179 |
+
</div>
|
180 |
+
</div>
|
181 |
+
|
182 |
+
</td>
|
183 |
+
</tr>
|
184 |
+
</tbody>
|
185 |
+
</table>
|
186 |
+
|
187 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
188 |
+
</div>
|
189 |
+
</div>
|
190 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
191 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
192 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
193 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
194 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
195 |
+
|
196 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
197 |
+
<tbody>
|
198 |
+
<tr>
|
199 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
200 |
+
|
201 |
+
<div>
|
202 |
+
<div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
|
203 |
+
<h2 class="mo_2fa_email_feature_title" style="margin-top: 2%;text-align: center;padding: 0% 2%;">Microsoft Authenticator</h2>
|
204 |
+
<ul class="mo_2fa_feature_MA" style="text-align: left;margin-top: -4%;padding-left: 15%;padding-right: 7%;">
|
205 |
+
<li>Generates the OTP on every login</li>
|
206 |
+
<li>Provides multifactor authentication with extra layer</li>
|
207 |
+
<li> Very easy to use and secure access</li>
|
208 |
</ul>
|
209 |
+
</div>
|
210 |
+
</div>
|
211 |
+
|
212 |
+
</td>
|
213 |
+
</tr>
|
214 |
+
</tbody>
|
215 |
+
</table>
|
216 |
+
|
217 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
218 |
+
</div>
|
219 |
+
</div>
|
220 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
221 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
222 |
+
</div>
|
223 |
+
</div>
|
224 |
+
</div>
|
225 |
+
|
226 |
+
|
227 |
+
|
228 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
229 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
230 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
231 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
232 |
+
|
233 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
234 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
235 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
236 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
237 |
+
|
238 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
239 |
+
<tbody>
|
240 |
+
<tr>
|
241 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
242 |
+
|
243 |
+
<div>
|
244 |
+
<div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
|
245 |
+
<h2 class="mo_2fa_email_feature_title" style="margin-top: 10%;text-align: center;padding: 0% 2%;">Email Notification</h2>
|
246 |
+
<ul class="mo_2fa_feature_EN" style="text-align: left;padding-left: 15%;margin-top: -4%;padding-right: 7%;">
|
247 |
+
<li>Gives you important alerts via email</li>
|
248 |
+
<li>Very helpful for the user to know about account acitivities</li>
|
249 |
+
|
250 |
</ul>
|
251 |
+
</div>
|
252 |
+
</div>
|
253 |
+
|
254 |
+
</td>
|
255 |
+
</tr>
|
256 |
+
</tbody>
|
257 |
+
</table>
|
258 |
+
|
259 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
260 |
+
</div>
|
261 |
+
</div>
|
262 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
263 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
264 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
265 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
266 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
267 |
+
|
268 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
269 |
+
<tbody>
|
270 |
+
<tr>
|
271 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
272 |
+
|
273 |
+
<div>
|
274 |
+
<div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
|
275 |
+
<h2>MFA</h2>
|
276 |
+
<ul class="mo_2fa_feature_MFA" style="text-align: left;padding-left: 15%;padding-right: 7%;">
|
277 |
+
<li>Login with any of the configured methods: <br>Authenticator Apps, OTP over Email and SMS, KBA, etc. </li>
|
278 |
+
|
279 |
</ul>
|
280 |
+
</div>
|
281 |
+
</div>
|
282 |
+
|
283 |
+
</td>
|
284 |
+
</tr>
|
285 |
+
</tbody>
|
286 |
+
</table>
|
287 |
+
|
288 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
289 |
+
</div>
|
290 |
+
</div>
|
291 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
292 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
293 |
+
</div>
|
294 |
+
</div>
|
295 |
+
</div>
|
296 |
+
|
297 |
+
|
298 |
+
|
299 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
300 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
301 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
302 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
303 |
+
|
304 |
+
<!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
305 |
+
<div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
|
306 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
307 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
308 |
+
|
309 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
310 |
+
<tbody>
|
311 |
+
<tr>
|
312 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
313 |
+
|
314 |
+
<div align="center">
|
315 |
+
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;font-family:arial,helvetica,sans-serif;"><tr><td style="font-family:arial,helvetica,sans-serif;" align="center"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" style="height:37px; v-text-anchor:middle; width:168px;" arcsize="11%" stroke="f" fillcolor="#20b2aa"><w:anchorlock/><center style="color:#ffffff;font-family:arial,helvetica,sans-serif;"><![endif]-->
|
316 |
+
<a href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" target="_blank" style="box-sizing: border-box;display: inline-block;font-family:arial,helvetica,sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #20b2aa; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;">
|
317 |
+
<span style="display:block;padding:10px 20px;line-height:120%;">More Feature details</span>
|
318 |
+
</a>
|
319 |
+
<!--[if mso]></center></v:roundrect></td></tr></table><![endif]-->
|
320 |
+
</div>
|
321 |
+
|
322 |
+
</td>
|
323 |
+
</tr>
|
324 |
+
</tbody>
|
325 |
+
</table>
|
326 |
+
|
327 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
328 |
+
</div>
|
329 |
+
</div>
|
330 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
331 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
332 |
+
</div>
|
333 |
+
</div>
|
334 |
+
</div>
|
335 |
+
|
336 |
+
|
337 |
+
|
338 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
339 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
340 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
341 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
342 |
+
|
343 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
344 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
345 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
346 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
347 |
+
|
348 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
349 |
+
<tbody>
|
350 |
+
<tr>
|
351 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px 10px 10px 26px;font-family:arial,helvetica,sans-serif;" align="left">
|
352 |
+
|
353 |
+
<div>
|
354 |
+
<div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
|
355 |
+
<i class="fa fa-globe mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
|
356 |
+
<div style="min-height: 150px;">
|
357 |
+
<h2 style="color: black;margin: 2%;">Website</h2>
|
358 |
+
<p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange provides easy to use 2 Factor authentication for secure login to your WordPress site
|
359 |
+
<br><a class="mo_2fa_ef_read_more" href="https://plugins.miniorange.com/" style="color: black;">...Know More</a></p>
|
360 |
+
</div>
|
361 |
+
</div>
|
362 |
+
</div>
|
363 |
+
|
364 |
+
</td>
|
365 |
+
</tr>
|
366 |
+
</tbody>
|
367 |
+
</table>
|
368 |
+
|
369 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
370 |
+
</div>
|
371 |
+
</div>
|
372 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
373 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
374 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
375 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
376 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
377 |
+
|
378 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
379 |
+
<tbody>
|
380 |
+
<tr>
|
381 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px 26px 10px 10px;font-family:arial,helvetica,sans-serif;" align="left">
|
382 |
+
|
383 |
+
<div>
|
384 |
+
<div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
|
385 |
+
<i class="fa fa-headphones mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
|
386 |
+
<div style="min-height: 150px;">
|
387 |
+
<h2 style="color: black;margin: 2%;">Documentation</h2>
|
388 |
+
<p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange Two-Factor Authentication in which you have to provide two factors to gain the access <br>
|
389 |
+
<br><a class="mo_2fa_ef_read_more" href="https://developers.miniorange.com/docs/security/wordpress/wp-security" style="color: black;">...Know More</a></p>
|
390 |
+
</div>
|
391 |
+
</div>
|
392 |
+
</div>
|
393 |
+
|
394 |
+
</td>
|
395 |
+
</tr>
|
396 |
+
</tbody>
|
397 |
+
</table>
|
398 |
+
|
399 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
400 |
+
</div>
|
401 |
</div>
|
402 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
403 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
404 |
+
</div>
|
405 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
406 |
</div>
|
407 |
|
408 |
+
|
409 |
+
|
410 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
411 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
412 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
413 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
414 |
+
|
415 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
416 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
417 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
418 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
419 |
+
|
420 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
421 |
+
<tbody>
|
422 |
+
<tr>
|
423 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px 10px 10px 26px;font-family:arial,helvetica,sans-serif;" align="left">
|
424 |
+
|
425 |
+
<div>
|
426 |
+
<div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
|
427 |
+
<i class="fa fa-file-text mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
|
428 |
+
<div style="min-height: 120px;">
|
429 |
+
<h2 style="color: black;margin: 2%;">Support</h2>
|
430 |
+
<p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">You are not going to hit a ridiculously long phone menu when you call us or contact us.<br>
|
431 |
+
<br><a class="mo_2fa_ef_read_more" href="https://www.miniorange.com/contact" style="color: black;">...Know More</a></p>
|
432 |
+
</div>
|
433 |
+
</div>
|
434 |
+
</div>
|
435 |
+
|
436 |
+
</td>
|
437 |
+
</tr>
|
438 |
+
</tbody>
|
439 |
+
</table>
|
440 |
+
|
441 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
442 |
+
</div>
|
443 |
+
</div>
|
444 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
445 |
+
<!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
446 |
+
<div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
|
447 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
448 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
449 |
+
|
450 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
451 |
+
<tbody>
|
452 |
+
<tr>
|
453 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px 26px 10px 10px;font-family:arial,helvetica,sans-serif;" align="left">
|
454 |
+
|
455 |
+
<div>
|
456 |
+
<div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
|
457 |
+
<i class="fa fa-shield mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
|
458 |
+
<div style="min-height: 110px;">
|
459 |
+
<h2 style="color: black;margin: 2%;">Security site</h2>
|
460 |
+
<p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange combines Web Application Firewall (WAF), Malware Scanner, Encrypted Database and File backup<br>
|
461 |
+
<a class="mo_2fa_ef_read_more" href="https://security.miniorange.com/" style="color: black;">...Know More</a></p>
|
462 |
+
</div>
|
463 |
+
</div>
|
464 |
+
</div>
|
465 |
+
|
466 |
+
</td>
|
467 |
+
</tr>
|
468 |
+
</tbody>
|
469 |
+
</table>
|
470 |
+
|
471 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
472 |
+
</div>
|
473 |
+
</div>
|
474 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
475 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
476 |
+
</div>
|
477 |
+
</div>
|
478 |
+
</div>
|
479 |
+
|
480 |
+
|
481 |
+
|
482 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
483 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #20b2aa;">
|
484 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
485 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #20b2aa;"><![endif]-->
|
486 |
+
|
487 |
+
<!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
488 |
+
<div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
|
489 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
490 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
491 |
+
|
492 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
493 |
+
<tbody>
|
494 |
+
<tr>
|
495 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
496 |
+
|
497 |
+
<div style="line-height: 140%; text-align: center; word-wrap: break-word;">
|
498 |
+
<p style="font-size: 14px; line-height: 140%;"><span style="color: #ffffff; font-size: 14px; line-height: 19.6px;">You are welcome to use our New Features</span></p>
|
499 |
+
<p style="font-size: 14px; line-height: 140%;"> </p>
|
500 |
+
<p style="font-size: 14px; line-height: 140%;"><span style="color: #ffffff; font-size: 14px; line-height: 19.6px;">If you need any help we are just a mail away</span></p>
|
501 |
+
</div>
|
502 |
+
|
503 |
+
</td>
|
504 |
+
</tr>
|
505 |
+
</tbody>
|
506 |
+
</table>
|
507 |
+
|
508 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
509 |
+
</div>
|
510 |
+
</div>
|
511 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
512 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
513 |
+
</div>
|
514 |
+
</div>
|
515 |
+
</div>
|
516 |
+
|
517 |
+
|
518 |
+
|
519 |
+
<div class="u-row-container" style="padding: 0px;background-color: #ffffff">
|
520 |
+
<div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
|
521 |
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
|
522 |
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
|
523 |
+
|
524 |
+
<!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
|
525 |
+
<div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
|
526 |
+
<div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
|
527 |
+
<!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
|
528 |
+
|
529 |
+
<table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
|
530 |
+
<tbody>
|
531 |
+
<tr>
|
532 |
+
<td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
|
533 |
+
|
534 |
+
<div style="line-height: 140%; text-align: center; word-wrap: break-word;">
|
535 |
+
<p style="font-size: 14px; line-height: 140%;">Contact us at :- <strong>info@xecurify.com / 2fasupport@xecurify.com</strong></p>
|
536 |
+
</div>
|
537 |
+
|
538 |
+
</td>
|
539 |
+
</tr>
|
540 |
+
</tbody>
|
541 |
+
</table>
|
542 |
+
|
543 |
+
<!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
|
544 |
+
</div>
|
545 |
+
</div>
|
546 |
+
<!--[if (mso)|(IE)]></td><![endif]-->
|
547 |
+
<!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
|
548 |
+
</div>
|
549 |
+
</div>
|
550 |
+
</div>
|
551 |
+
|
552 |
+
|
553 |
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
554 |
+
</td>
|
555 |
+
</tr>
|
556 |
+
</tbody>
|
557 |
+
</table>
|
558 |
+
<!--[if mso]></div><![endif]-->
|
559 |
+
<!--[if IE]></div><![endif]-->
|
560 |
</body>
|
561 |
+
|
562 |
+
</html>
|
563 |
+
|
564 |
+
|
565 |
+
';
|
566 |
}
|
567 |
?>
|
includes/images/2fa-on-login-page.png
ADDED
Binary file
|
includes/images/authmethods/miniOrangeAuthenticator.png
ADDED
Binary file
|
includes/images/firebase.png
ADDED
Binary file
|
includes/images/{hide_login_form.png → hide_login_form.PNG}
RENAMED
File without changes
|
includes/images/{login-with-password-and-2fa.png → login-with-password-and-2fa.PNG}
RENAMED
File without changes
|
includes/js/login_with_ajax.js
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(window).bind('load', function()
|
2 |
+
|
3 |
+
{
|
4 |
+
var list, index;
|
5 |
+
jQuery('form[class="lwa-form"]').prepend( "<div id='mo2f_msg'></div>" );
|
6 |
+
|
7 |
+
login = document.getElementById("lwa_wp-submit");
|
8 |
+
if(login===null)
|
9 |
+
return;
|
10 |
+
password = document.getElementsByName('pwd')[0];
|
11 |
+
mo2f_name = document.getElementsByName('log')[0];
|
12 |
+
login.setAttribute('type', 'button');
|
13 |
+
login.setAttribute('id','mo2f_lwa_login');
|
14 |
+
password.setAttribute('id','mo2f_lwa_user_pass');
|
15 |
+
mo2f_name.setAttribute('id','mo2f_lwa_user_name');
|
16 |
+
password.setAttribute('name','mo2f_lwa_user_pass');
|
17 |
+
mo2f_name.setAttribute('name','mo2f_lwa_user_name');
|
18 |
+
|
19 |
+
jQuery('#mo2f_lwa_login').click(function(){
|
20 |
+
mo2f_lwa_login();
|
21 |
+
})
|
22 |
+
|
23 |
+
jQuery('#mo2f_lwa_user_pass').keypress(function (e) {
|
24 |
+
if (e.which == 13) {//Enter key pressed
|
25 |
+
e.preventDefault();
|
26 |
+
mo2f_lwa_login();
|
27 |
+
}
|
28 |
+
});
|
29 |
+
|
30 |
+
jQuery('#mo2f_2fa_code').keypress(function (e) {
|
31 |
+
if (e.which == 13) {//Enter key pressed
|
32 |
+
e.preventDefault();
|
33 |
+
mo2f_lwa_login();
|
34 |
+
}
|
35 |
+
});
|
36 |
+
|
37 |
+
function mo2f_lwa_login()
|
38 |
+
{
|
39 |
+
var data;
|
40 |
+
jQuery("#mo2f_msg").empty();
|
41 |
+
data = {
|
42 |
+
'action' : 'mo_two_factor_ajax',
|
43 |
+
'mo_2f_two_factor_ajax' : 'mo2f_ajax_login_redirect',
|
44 |
+
'username' : jQuery('#mo2f_lwa_user_name').val(),
|
45 |
+
'nonce' : jQuery("input[name=miniorange_login_nonce]").val(),
|
46 |
+
'password' : jQuery('#mo2f_lwa_user_pass').val(),
|
47 |
+
'mo_softtoken' : jQuery('#mo2f_2fa_code').val(),
|
48 |
+
};
|
49 |
+
jQuery.post(my_ajax_object.ajax_url, data, function(response) {
|
50 |
+
if ( typeof response.data === "undefined") {
|
51 |
+
|
52 |
+
jQuery("html").html(response);
|
53 |
+
}
|
54 |
+
else if ( response.data.notice ) {
|
55 |
+
jQuery("#mo2f_msg").empty();
|
56 |
+
jQuery("#mo2f_msg").append( response.data.notice ).fadeIn();
|
57 |
+
}
|
58 |
+
else if(response.data.reload)
|
59 |
+
location.reload( true );
|
60 |
+
else
|
61 |
+
location.href = response.data.redirect;
|
62 |
+
});
|
63 |
+
jQuery('#mo2f_select_2fa_methods_form').submit();
|
64 |
+
}
|
65 |
+
});
|
includes/js/mo2fa_elementor.js
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(window).bind('load', function()
|
2 |
+
{
|
3 |
+
mo2fa_has_elementor_class = jQuery('.htmega-login-form-wrapper');
|
4 |
+
|
5 |
+
if(mo2fa_has_elementor_class.length){
|
6 |
+
|
7 |
+
var mo2fa_input = document.getElementsByTagName('input');
|
8 |
+
var mo2fa_on_submit = mo2fa_input[3].getAttribute('id');
|
9 |
+
mo2fa_on_submit = '#' +mo2fa_on_submit;
|
10 |
+
|
11 |
+
var mo2fa_form_id = jQuery('form').attr('id');
|
12 |
+
mo2fa_form_id = '#'+mo2fa_form_id ;
|
13 |
+
jQuery(mo2fa_form_id).removeAttr('action');
|
14 |
+
var mo2fa_log_user = document.getElementsByName('login_username');
|
15 |
+
var mo2fa_log_pass = document.getElementsByName('login_password');
|
16 |
+
mo2fa_log_user[0].setAttribute("name","mo2fa_user_name");
|
17 |
+
mo2fa_log_pass[0].setAttribute("name","mo2fa_user_password");
|
18 |
+
|
19 |
+
var mo2fa_pwd = document.getElementsByName("mo2fa_user_password");
|
20 |
+
mo2fa_pwd = mo2fa_pwd[0];
|
21 |
+
var mo2fa_pwd = document.getElementById(mo2fa_pwd.id);
|
22 |
+
mo2fa_pwd.setAttribute("id","mo2fa_user_password");
|
23 |
+
|
24 |
+
var mo2fa_user = document.getElementsByName("mo2fa_user_name");
|
25 |
+
mo2fa_user = mo2fa_user[0];
|
26 |
+
var element = document.getElementById(mo2fa_user.id);
|
27 |
+
element.setAttribute("id","mo2fa_user_name");
|
28 |
+
|
29 |
+
if(my_ajax_object.mo2f_login_option == '0'){
|
30 |
+
|
31 |
+
jQuery(mo2fa_form_id).after('<form name="f" id="mo2f_show_loginform" method="post" action="" hidden>'+
|
32 |
+
'<input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>'+
|
33 |
+
'<input type="hidden" name="miniorange_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>'+
|
34 |
+
'<form name="f" id="mo2f_loginform" method="post" action="" hidden>'+
|
35 |
+
'<input type="text" name="mo2fa_elementor_user_name" id="mo2fa_elementor_user_name" hidden/>'+
|
36 |
+
'<input type="text" name="mo2fa_elementor_user_password" id="mo2fa_elementor_user_password" hidden/>'+
|
37 |
+
'<input type="hidden" name="miniorange_elementor_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>');
|
38 |
+
|
39 |
+
if(my_ajax_object.mo2f_enable_login_with_2nd_factor == '0'){
|
40 |
+
jQuery(mo2fa_pwd).after('<h2 style="text-align: center;">or</h2><input type="text" name="mo2fa_usernamekey" id="mo2fa_usernamekey" autofocus="true" placeholder="Username"/>'+
|
41 |
+
'<button style="padding:1px 4px 1px 4px; width:100%" name="miniorange_login_submit" id="miniorange_login_submit">Login with 2nd factor </button>');
|
42 |
+
}else{
|
43 |
+
jQuery("label[for='Password']").hide();
|
44 |
+
jQuery("#mo2fa_user_password").hide();
|
45 |
+
mo2fa_user = document.getElementsByName("mo2fa_user_name");
|
46 |
+
mo2fa_user[0].setAttribute("name","mo2fa_usernamekey");
|
47 |
+
mo2fa_log_user = document.getElementsByName("mo2fa_usernamekey");
|
48 |
+
mo2fa_log_user[0].setAttribute("id","mo2fa_usernamekey");
|
49 |
+
}
|
50 |
+
}
|
51 |
+
else{
|
52 |
+
jQuery(mo2fa_form_id).after('<form name="f" id="mo2f_loginform" method="post" action="" hidden>'+
|
53 |
+
'<input type="text" name="mo2fa_elementor_user_name" id="mo2fa_elementor_user_name" hidden/>'+
|
54 |
+
'<input type="text" name="mo2fa_elementor_user_password" id="mo2fa_elementor_user_password" hidden/>'+
|
55 |
+
'<input type="hidden" name="miniorange_elementor_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>');
|
56 |
+
}
|
57 |
+
|
58 |
+
jQuery('#mo2fa_user_password').keypress(function (e) {
|
59 |
+
if (e.which == 13) {//Enter key pressed
|
60 |
+
e.preventDefault();
|
61 |
+
mo2fa_elementor();
|
62 |
+
}
|
63 |
+
});
|
64 |
+
jQuery(mo2fa_on_submit).click(function(e){
|
65 |
+
if (e.which == 1) {//Enter key pressed
|
66 |
+
e.preventDefault();
|
67 |
+
mo2fa_elementor();
|
68 |
+
}
|
69 |
+
});
|
70 |
+
jQuery('#mo2fa_user_name').keypress(function (e){
|
71 |
+
if (e.which == 13) {//Enter key pressed
|
72 |
+
e.preventDefault();
|
73 |
+
mo2fa_elementor();
|
74 |
+
}
|
75 |
+
});
|
76 |
+
jQuery('#mo2fa_usernamekey').keypress(function (e) {
|
77 |
+
if (e.which == 13) {//Enter key pressed
|
78 |
+
e.preventDefault();
|
79 |
+
var username = jQuery('#mo2fa_usernamekey').val();
|
80 |
+
document.getElementById("mo2f_show_loginform").elements[0].value = username;
|
81 |
+
jQuery('#mo2f_show_loginform').submit();
|
82 |
+
}
|
83 |
+
|
84 |
+
});
|
85 |
+
jQuery('.htmega-login-form-wrapper' ).on( 'submit', mo2fa_form_id, function(e) {
|
86 |
+
e.preventDefault();
|
87 |
+
mo2f_login();
|
88 |
+
|
89 |
+
});
|
90 |
+
function mo2fa_elementor(){
|
91 |
+
if(my_ajax_object.mo2f_login_option == '1' || (my_ajax_object.mo2f_login_option == '0' && my_ajax_object.mo2f_enable_login_with_2nd_factor == '0' )){
|
92 |
+
mo2f_login();
|
93 |
+
}
|
94 |
+
else{
|
95 |
+
var username = jQuery('#mo2fa_usernamekey').val();
|
96 |
+
document.getElementById("mo2f_show_loginform").elements[0].value = username;
|
97 |
+
jQuery('#mo2f_show_loginform').submit();
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
jQuery('#miniorange_login_submit').click(function(e){
|
102 |
+
e.preventDefault();
|
103 |
+
var username = jQuery('#mo2fa_usernamekey').val();
|
104 |
+
|
105 |
+
document.getElementById("mo2f_show_loginform").elements[0].value = username;
|
106 |
+
|
107 |
+
jQuery('#mo2f_show_loginform').submit();
|
108 |
+
});
|
109 |
+
|
110 |
+
function mo2f_login(){
|
111 |
+
var username = jQuery('#mo2fa_user_name').val();
|
112 |
+
var password = jQuery('#mo2fa_user_password').val();
|
113 |
+
|
114 |
+
document.getElementById("mo2f_loginform").elements[0].value = username;
|
115 |
+
document.getElementById("mo2f_loginform").elements[1].value = password;
|
116 |
+
|
117 |
+
jQuery('#mo2f_loginform').submit();
|
118 |
+
}
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
});
|
includes/js/pointers.js
CHANGED
@@ -399,13 +399,13 @@
|
|
399 |
jQuery(data.anchor_id).css('position','');
|
400 |
switch(data.anchor_id){
|
401 |
case '#scan_status_table':
|
402 |
-
document.getElementById("
|
403 |
break;
|
404 |
case '#mo2f_select_scanning_files':
|
405 |
-
document.getElementById("
|
406 |
break;
|
407 |
case '#scan_report_table':
|
408 |
-
document.getElementById("
|
409 |
break;
|
410 |
case '#mo2f_scan_dash':
|
411 |
jQuery('#mo_2fa_upgrade_tour').css('z-index',1);
|
399 |
jQuery(data.anchor_id).css('position','');
|
400 |
switch(data.anchor_id){
|
401 |
case '#scan_status_table':
|
402 |
+
document.getElementById("mo2f_scan_set").click();
|
403 |
break;
|
404 |
case '#mo2f_select_scanning_files':
|
405 |
+
document.getElementById("mo2f_report_scan").click();
|
406 |
break;
|
407 |
case '#scan_report_table':
|
408 |
+
document.getElementById("mo2f_malware_view").click();
|
409 |
break;
|
410 |
case '#mo2f_scan_dash':
|
411 |
jQuery('#mo_2fa_upgrade_tour').css('z-index',1);
|
includes/js/settings_page.js
CHANGED
@@ -100,7 +100,8 @@ jQuery(document).ready(function () {
|
|
100 |
$(".new_plugin_dismiss").click(function(){
|
101 |
ajaxCall("dismissplugin",".plugin_warning_hide-notice",true);
|
102 |
});
|
103 |
-
|
|
|
104 |
|
105 |
$(".dismiss_website_backup_notice").click(function(){
|
106 |
ajaxCall("dismissbackup",".plugin_warning_hide-notice",true);
|
@@ -122,6 +123,10 @@ jQuery(document).ready(function () {
|
|
122 |
ajaxCall("plugin_warning_never_show_again",".plugin_warning_hide-notice",true);
|
123 |
});
|
124 |
|
|
|
|
|
|
|
|
|
125 |
$(".wpns_premium_option :input").attr("disabled",true);
|
126 |
|
127 |
$("#setuptwofa_redirect").click(function(e){
|
@@ -160,6 +165,34 @@ window.onload = nav_popup();
|
|
160 |
}
|
161 |
|
162 |
function nav_popup() {
|
163 |
-
document.getElementById("notice_div")
|
164 |
-
|
165 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
$(".new_plugin_dismiss").click(function(){
|
101 |
ajaxCall("dismissplugin",".plugin_warning_hide-notice",true);
|
102 |
});
|
103 |
+
|
104 |
+
|
105 |
|
106 |
$(".dismiss_website_backup_notice").click(function(){
|
107 |
ajaxCall("dismissbackup",".plugin_warning_hide-notice",true);
|
123 |
ajaxCall("plugin_warning_never_show_again",".plugin_warning_hide-notice",true);
|
124 |
});
|
125 |
|
126 |
+
$(".mo2f_banner_never_show_again").click(function(){
|
127 |
+
ajaxCall("mo2f_banner_never_show_again",".mo2f_offer_main_div",true);
|
128 |
+
});
|
129 |
+
|
130 |
$(".wpns_premium_option :input").attr("disabled",true);
|
131 |
|
132 |
$("#setuptwofa_redirect").click(function(e){
|
165 |
}
|
166 |
|
167 |
function nav_popup() {
|
168 |
+
if(document.getElementById("notice_div") !== null){
|
169 |
+
document.getElementById("notice_div").style.width = "40%";
|
170 |
+
setTimeout(function(){ jQuery('#notice_div').fadeOut('slow'); }, 3000);
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
// OFFER TIMER
|
175 |
+
var countDownDate = new Date("Jan 15, 2022 23:59:59").getTime();
|
176 |
+
|
177 |
+
var x = setInterval(function() {
|
178 |
+
|
179 |
+
var now = new Date().getTime();
|
180 |
+
var distance = countDownDate - now;
|
181 |
+
|
182 |
+
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
|
183 |
+
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
184 |
+
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
|
185 |
+
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
|
186 |
+
if(document.getElementById("mo2f_offer_timer")!= null){
|
187 |
+
document.getElementById("mo2f_offer_timer").innerHTML = days + "d " + hours + "h "
|
188 |
+
+ minutes + "m " + seconds + "s ";
|
189 |
+
}
|
190 |
+
|
191 |
+
if (distance < 0) {
|
192 |
+
clearInterval(x);
|
193 |
+
if(document.getElementById("mo2f_offer_timer")!= null){
|
194 |
+
document.getElementById("mo2f_offer_timer").innerHTML = "EXPIRED";
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}, 1000);
|
198 |
+
// -----OFFER TIMER
|
includes/js/setup-wizard-2fa.js
ADDED
@@ -0,0 +1,6572 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function(t) {
|
2 |
+
|
3 |
+
for (var s, o, r = e[0], l = e[1], c = e[2], m = 0, u = []; m < r.length; m++) o = r[m], Object.prototype.hasOwnProperty.call(a, o) && a[o] && u.push(a[o][0]), a[o] = 0;
|
4 |
+
for (s in l) Object.prototype.hasOwnProperty.call(l, s) && (t[s] = l[s]);
|
5 |
+
p && p(e);
|
6 |
+
while (u.length) u.shift()();
|
7 |
+
return n.push.apply(n, c || []), i()
|
8 |
+
}
|
9 |
+
|
10 |
+
function i() {
|
11 |
+
for (var t, e = 0; e < n.length; e++) {
|
12 |
+
for (var i = n[e], s = !0, r = 1; r < i.length; r++) {
|
13 |
+
var l = i[r];
|
14 |
+
0 !== a[l] && (s = !1)
|
15 |
+
}
|
16 |
+
s && (n.splice(e--, 1), t = o(o.s = i[0]))
|
17 |
+
}
|
18 |
+
return t
|
19 |
+
}
|
20 |
+
var s = {},
|
21 |
+
a = {
|
22 |
+
wizard: 0
|
23 |
+
},
|
24 |
+
n = [];
|
25 |
+
|
26 |
+
function o(e) {
|
27 |
+
if (s[e]) return s[e].exports;
|
28 |
+
var i = s[e] = {
|
29 |
+
i: e,
|
30 |
+
l: !1,
|
31 |
+
exports: {}
|
32 |
+
};
|
33 |
+
return t[e].call(i.exports, i, i.exports, o), i.l = !0, i.exports
|
34 |
+
}
|
35 |
+
o.m = t, o.c = s, o.d = function(t, e, i) {
|
36 |
+
o.o(t, e) || Object.defineProperty(t, e, {
|
37 |
+
enumerable: !0,
|
38 |
+
get: i
|
39 |
+
})
|
40 |
+
}, o.r = function(t) {
|
41 |
+
"undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
|
42 |
+
value: "Module"
|
43 |
+
}), Object.defineProperty(t, "__esModule", {
|
44 |
+
value: !0
|
45 |
+
})
|
46 |
+
}, o.t = function(t, e) {
|
47 |
+
if (1 & e && (t = o(t)), 8 & e) return t;
|
48 |
+
if (4 & e && "object" === typeof t && t && t.__esModule) return t;
|
49 |
+
var i = Object.create(null);
|
50 |
+
if (o.r(i), Object.defineProperty(i, "default", {
|
51 |
+
enumerable: !0,
|
52 |
+
value: t
|
53 |
+
}), 2 & e && "string" != typeof t)
|
54 |
+
for (var s in t) o.d(i, s, function(e) {
|
55 |
+
return t[e]
|
56 |
+
}.bind(null, s));
|
57 |
+
return i
|
58 |
+
}, o.n = function(t) {
|
59 |
+
var e = t && t.__esModule ? function() {
|
60 |
+
return t["default"]
|
61 |
+
} : function() {
|
62 |
+
return t
|
63 |
+
};
|
64 |
+
return o.d(e, "a", e), e
|
65 |
+
}, o.o = function(t, e) {
|
66 |
+
return Object.prototype.hasOwnProperty.call(t, e)
|
67 |
+
}, o.p = "http://localhost:8080/";
|
68 |
+
var r = window["mo2fjsonp"] = window["mo2fjsonp"] || [],
|
69 |
+
l = r.push.bind(r);
|
70 |
+
r.push = e, r = r.slice();
|
71 |
+
for (var c = 0; c < r.length; c++) e(r[c]);
|
72 |
+
var p = l;
|
73 |
+
n.push([0, "chunk-vendors"]), i()
|
74 |
+
})({
|
75 |
+
0: function(t, e, i) {
|
76 |
+
t.exports = i("9f7c")
|
77 |
+
},
|
78 |
+
"107e": function(t, e, i) {
|
79 |
+
t.exports = i.p + "img/long-arrow-alt-right-regular.svg"
|
80 |
+
},
|
81 |
+
1532: function(t, e) {
|
82 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABlmWCKAAAHYklEQVR4AeVbeVBVVRj/7n1sIqsICIKhIAIKkjCJmgJlKiYuTU4wWZqWMzWauYzmMsVUmk0Gf5SmGU1qizMq2mSbo40RmMjmioiC+JQdHijw4PGW2/kecxF9PO7yFq68M3Pn3nfOd77z/X733HPO953zKDCSgr+YEUjTtJeR4icqW6vTKCvO55TDEdA+bjj1SMbKGPuQcLfVNMWsAqBGP1L2pP9gQKGj4AAoNZ/e2vJvAwunh4CQHdO9KWe7X0nGZLZwcN6ZWo0OkivWnS1AfLQe5GKQUc6yrMEPHtFSI2QU9du4L6f54y89AcHT4pdTQD2LGbaQKAp8GK39Z4hV/wmEZiTkA0XF2gL4hxgZdVcL+FBBaQlO9u5UO2Gl+3N4KDH4nyiYSctcdd42CZ68XtL9XWgtTcsG/6s2jtCs3Z4MpDDaMxBGuo0w3qLESuxMscfJzhEifcfBJL8JEOM/AaL9xoO7kyvoGB2k52bC/sKfTVFvlbqCCPAa4kGARsIkAhavCO+xYC8zVEFTNLw7ZRlklfwBTR0tVgEithFD641oWhmbCmunrgAExyc5yOwhJXI+7L5wkI/4gMnwQuPqMBTWTFnOGzyLJiUqGexp3hyz1ax650WAm6ML2ImYLHyGesHskBlWBSS0MV4EqLRdQvX2yL8W/VLPsxQfeBHQ3qUUbXu0X4R+phCtwMIVeRHQoVGBSmNCL5i4yMIwxKvnRQCqr2vriSEIbi0pNBFwCpVi4k1A1YM60fazU6JoBRasyJuAima5SWbglCjjuYYwqSGBlXkTUNZ4W6DqR8VxSkQ/QWqJNwFX68tMsr2urRHk96tN0mGJyrwJuN5wE9q7OkTZIG+phjeOb4AurVpUfUtW4k2Alnh4hdWXBdtyTl4ELx9+G8oVcsF1rVGBNwFoTHZlviCbDhYfgzdPbIT7qlZB9awpLIiA0+U5wDAMp33Y1bee3gXbs3cD9hwpJ0EE1LTVQ3HNNU48W09/Dkev/c4pJwUBQQSgwcdL/uK0OyEojlNGKgKCCThZ9je0qdr7tT8pNAHCvUP6lZFKoWAClOoOOMLRvTFqtC1+tVQw9muHYAJQ24Hio5xzeuzISFg8fm6/jUuhUBQBNcQz5DPIvT/jHQh085MCTqM2iCIAte3JO8S5MnRxcIaMuR8AeoNSTaIJaFAq4OsLhzhx4b7Bx8+v45QbKAHRBKDB35Ox4FZTJaftC8Nnw+rJSznlBkLAJALUOg1sIYsejc7g6I0BllVxS+GtmFSDfL4ZjjIHvqKC5GQec4I8yImJ9wTV6iWMbi4GOp4JiO6V2/fj1FEx+m2z/Cr+TpWzvRPsSf4Eds7aBElj48neBAW3FHcAyTc1EVWHTSYAjSiovgKxZMsswJ17xI8LfBowOJJzJ19PBheI9KRt8NyYqXqxYc4eEB80GZZELYThzsMA3WxTHC2zEcAAA/9U5pE3lAC4icKVJviGAhKRI88nM4nxkDuOG6lRCwzUOdg5kI3YCHh14kKI8g2Dls4HooItZiMALewkofNceQHMD5sJjsRAruTn6gOLImZDLVlTlDUZhttmBU+HDxPXkJM7+lM8farDsiDPAFgQ9gK8SCLPKCrk8yDy5vkEWOsUHfehqPoqzCXG9LVrzMqxd9xex62zKDJVXqkrJW+yO24wbvgY2Ldgh6D1g+cQ957PQ0sGZT5eq9kJQGDVrd0u8xwyYPEhAevgW3wlMhl8hw4HXF98Ne8j8HL2xCLBCT+PaU/Fkk/yPNS3N/VbHwkwaRo0pj3v3kVY+ctmaFW1GRMxyMfVYmrUfMhK3QsBZjhhMsLF26CNvjIsQgA2dKHqEiw5uhZqSI8YiHSp9jqvZi1GALZe2liuD4gWVl3hZYy5hKoe1HJ2f7YtixKAjTQqm+H1rHWwv+Awr3mfNcyUe1E1d9iO1W9xArAhXCrvyv0Glh5bD3etsDlSSBZmfJNVCGCNwXFh3g8rYF/+T9BlwnY7q8/YvajmqrEig3yrEoCt44Ip/dy3kHRoGZy8ccbsn0UriVfe5OGhskxYnQC24XtkoFr/53bSI5bDieunOENsbD2u+8XaEkGkDhgBLBDcMtt0aickfpcCGecyobL5Hlsk6o4rUSFJMmfYcLbYm/+j/sIDmLhERs8vzDu4X3/gcbBCBkCsKxkCegMpITvReGX8lwm4xsejuBhaCyU+QrDnKPB38+3TTzh/txgKBMQaJEtAbzKaiYN1piJXf7H5eCh7GCEGyXEl7jcexsSjfJdrS4ljzr13yep5IgjobSz7jCDxDLI5ziHTtIr8h8qGE63rtKsnO942SQI51q+kK9POdgLFXLK9TsCoVR3aAnYdsM/WCCBD5TH55pxmPQE3WyCTZOTZDAn4N1qtbiPi7e4BaWc1jFKTTEgoGuwkkBmkQc1oksrXZ99FrD3/GFOckSvd4oIOyhwZJVl6hZMy10FGRhsZ7DPVakip3JB9g8VmLOZMBacnBNO0zp+hZcZkWB2Sv2tVmubb7YpSSLtmcOT9f3LyV1v6G8m6AAAAAElFTkSuQmCC"
|
83 |
+
},
|
84 |
+
"1f7f": function(t, e, i) {
|
85 |
+
"use strict";
|
86 |
+
i("e8f2")
|
87 |
+
},
|
88 |
+
"1fa5": function(t, e, i) {
|
89 |
+
t.exports = i.p + "img/long-arrow-alt-left-regular.svg"
|
90 |
+
},
|
91 |
+
"29b8": function(t, e) {
|
92 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABlmWCKAAALjklEQVR4Ad1ba2wU1xU+M7uzfmAMpODFCQ8H8IMCogpKGrVSZKlpEqQQF8jKNmlTaByaJuRHErUhIT+o8iNNU9oqTZSSKkU0kbEzsgNOIiW/CmklmkqOEI2KxdMYiL2AAdevxbsz0+/c2bter3dt78yujX2l2fs+93znnnPvuXdmFcpwsIgUSfL0+vWzZxcWLiFFWWYZxjqyrDJUVqB+IdIFsp2IFaXftKwu1LeRx3NSUZTWsKqeG4pEzi/T9f/JtqjHEJkLMWbdkpTAmcELmzeX+jRtF8q2gK4WpW0gZuZ5TPlEq0TEdfLhek+0MoxYN8PhV29vampDA67jH27rOghibqgwQ8xM+6ZNxbma9gxyP0K+DOUqZllF3kKsIE5vLMuy4vqaCvKgeQrPxxHTfHOxrl+SY7vhPz2m4kbiwTnbVVOzFMz9HMlf4CkE02YUuGPaTHdUsAVi0ybqx/h7VaJ3ihobz3JbDIai9IMjJhl867p13ttLS59QLetPAO0BaNYFR/TSZjuqHRC8Cbv65TenT7+9rrU14kQIaTPMMDs3by73aFo90qsB3DtpwBMlZQsiguKTEct67I7GxuPpCgFaNPEgwFdXb/d4vUeRXjul4Jlt1jieAKKVmqIcCVZX72AeJ45ogo0F0UBA61LVP2DMp6IDpCW8dJhy2NYU/Sxr/2Aw+HTJ4cM3J6IN40qLwbdXVubk+f1NkPgPp3zWx5KO2CjIwCT9fcgwqhbpOgvBFkyKfmPOIoOHM+PL9fs/APgHb2nwDNBehD3g+weax6O3b93qE9qbArzokqpOgocn1wzCD6HdmMJKRWcKy9nx+qffMNaTrodSmcNYoJTZc+b8Lqr245rKFAJNPjQ7YUTfC6rqm4hT8p9UADz7wZqabej49C2v9snh2+Zgb9E/A5aUu8MoyTD4K1u2rDAN49+Y/ULQTyqkVOPeguW8CPbhoHVvcWNjGwAD4nAYAY7BU2WlxzDNAwA/G81G1A93m1YpxlCgKkrzxUAgV2CMY38UwCt+/08gpTVQ/VF1cf2mV5IPY0TLNVWtS2Q8ZgIsmW+qqhZ58vJOoxF7VzNHADZqNoWIEg6vLGpqOidNYQRIT27u41HwMcHYfWfEL2P1ml6v9GQFKAGUZ//Sxo23eXNy2lB6G54RghEtZ8KP7Slet0yzYqGuX2UtiAHVNG3HjAbPE8ieoqLMxZXbrzjHRSrPPkvCUtWNXOA2gB5ZfEjLxuOWuWh/zHoVBQJexs6LHXVv2rRoyLIqIAiWkONhcPFJSn4+acuWgbIg7ZhWYkdraIjCZ8+SdfMmKWpMcRObjZ/HjoDJWdphmqVLiP7LXCoRn28nYIv0+BSSt4BdUf6DD1JBbS2peXnJG7ksNXt7qff992nwyBFSPPLONE2i0QNTjqY9j551yoVAIA8npyswgnxhI2nSE82hNb7Vq2nezp22QUkaLrRJkgBfsaRIg2Y3xglfuEC4EhuuSydlL4aDqmn61Tyvdyn6zgJ4h9Rg81DPvPvvHwmeGWIGnTIp+3MsQ1T18x/C4RQa5zLkRVS1TA2b5p2CkO0tOaMJZtRZs6JkLBr47DPq3rWLQl99BfwOhYB+bFaDX3xB3S+/LGLOc1ALcfnsRrCCCugoSinf3a9B3nSs/lFiImKmsBD2HTpEkY4OuvHaaxQ6fJisMN5tTFQQ3A5AebHrP3iQet56iyJQ974PPxS0XWmU5NXeDvl9xRoVDK8WApCVbmK2eSxOnvnzbRXVNOrZu5euv/46mYODNuXoLCYdJloXCQap+5VXqE/XsTRjbY5EyFtcLGi72aUSxjTZIVLBcmlChfMsBAB6VPDoo6TwTgDGebUe+vpruvrss2IWjatXh7VBakU0Dp8/Tz3vvkvdL75IkYsX7e2OaUDlC2pqbM/FOXeJPZnVO9kZmIMUZzITsFDlrF1L8/fsod4DB+jml1+SFQqRNTBAfU1N1N/SQr677qJcPJ6iImLfwbh0iUJHj9LQiRP29iZ3D2hQ3n330WyAV+fOtfljYWUoYB2Zy3v/YjyZE0CUOXXOHCp8CueObdto4PPPqb+5mawbN+B8qzR07BgNtbYK8DywBTUXZonYgqkoWFALqqoo/5FHSPH5MrI8RdkajuzjfpE3ijyzAojOoFipc3Jo1oYNlPfAAxSBiodPnRIzbXR2ktnfL8xBzc0l78KFpJWXk1ZRQVpJCanwKGP2LjVimH33KZum7Qq7p5aCgmQcMYP0lZWRDyBnPfyw6CC3yKSureybgnSmitkEJicwIAkqutrHgEu7lvWTwxGPYvEieAGslSHj0LlOk1uANeDTD3zyCYXPnRPbpVZaKsxEOFOTJwTck1pB/oDhBksiTRjOmgP8zePHqfuFF8RpsXD7diqsqxO7xNXnnqOh07iNG8tPcDZqql4WqWqPFwdL/uri7lStMl2uYC2YB9eWFzoZCrdupdx77hm5BcrKbMaKcsZrqiq/U/9xNseJ0YZ680Io3FlWdanu0AzfypV2XpbFOmUtwdp/wosDwX+gAXwm4G9ywFWWQzxwOVSyMlmXjVhsP/B9gJ0PmO1iDBfHYdgSmX199sxmg+F4mpgns6dHXLnFFztJ4/OeU2pfMNiBaQdF8fLACR3hrfERWIRsLmJwm3ny+j/9dNh8HHEsOvUZAwOnPH9sbzf7V636FtThuyh2fNlm4ARnXL9O2ooVwulxzlfynrxNmdeuUe9774nDVcyHSN587FJ8yQZ6+4qbm1v4GkjpCwTm93s8HRBvjpt1gC8smDHvokX20XVsNtKrxeyHccfAwRV4e60Lq4axaoGunxECgAlYndXVrVgDvwP6jrWAmeOZymbIwCrN10onuw1j7bd1Pcz3AbAqLGOW1ZgJxpnBbD6Z4BF4dYAX3xXK2bbUUOgdEL+Cx/VtYyaYzBINxnYtFAr9HrFQViEA1oL5LS19OL7uiVZkW5OzhG9MshLTn0sOHuxhzNxaaoDoqYbDH8Ag+PJONhblM+SHMQ3iy5e/xOOJCUBoQXNzF14bbUODsNhw41tO57Tt+UUggR3Fus6n39gExwTA+LjiH4bxEZLHsB3OnLUAXi4Qn7lmGPWJ8wjMIwMaKp1btizBa6N/oaYIzwghjWw9LXL8iX03bqfvLaqvj30ZIjkfBY61oLi+vgMa8Dw68sfIMXWRnaZNLHlXlJeSgWccowTAhSwE/4EDjYh3QxCRaSkE2+Nju3/D39CwjzExtsSQVADcCB3MItP8DeL6abkeYA1TTPNQxDB+zVgSgct8SgEIIej60BHDeALpRmiBfRSTPW/VmGcevGLZO3jEsmrwxXhoLFYhnLEDL4pooVyurd0H2rUgPnX/EBmbVSg5wLPJEn3kr6iopd27+YyfVPUlqTE1gBsxATxmUSTyJOJXox1TqpQkPAWxzZNl/XYwN/enyu7d5njgmUe0mXhgbcCHx7Xo8Qakjde1CJNxjSYGSvFjzzrPfhDXey8taGjYPxHgklpaAuBOLIQrgYDf9Hg+xqD8bQG/vOOqtGlxJxeBbZ2vxsJQ4zbDMDYkenkToT2uCSQSYekW6XoXztPfx8XEYxAIv1fgMJlmwc4NK98NPFuvGsbdTsAz065mjbUBi2MRXmY8jpl4BvT4TTOrI9+4uqIt6MT/2KqOIREsqxP3F2+HVHX/4oaGTp6U+KbppF0zyUJgBi4HAgUwiyfB3DaULQf+HDDCnqQ9RnpmItRbALFvqzmPDwSVc7h2+5sXdxcLWlp65djpAE5s61oA8QTBkEqVlerFBQv8PkWpwz1THSbujlgb+4CFZjHNk+NzGQe7Lu5TfQiyE4V/jXg8e7va2oL4h6iBThkzN8mAPXwGfsGs0AiO+e+1S8rLS/CvzuU4XJVDGBUwl6VoUcJDwVmZJyJFucZ5hPMAfB7fGbXxwgZP7uxl02znuzswCqu3adtNM/P7fzVZgkVauHi3AAAAAElFTkSuQmCC"
|
93 |
+
},
|
94 |
+
"2adc": function(t, e) {
|
95 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAADyklEQVRYCbVXa0hTURz/nW0+Ssc0zdIQDR+RFoGGFFkolYkUZCJYIfSgiB4U1Kc+mN8qUnp8KAjC3g+KRZRlKZSlZUGZZaa23maumWXTzW262zkrL9vuPdPpdi6Xc87/8fv/7rn3f87/EvxrJPFwVgEBWQQiBPyX+aUjEOxDdvLsfavxIk4+txEWJelI1iUavMgvETmggiDUBvYackhSedZyoiQ3OXZ+FdsFYbuCKJDp1ygewOnyz1cIBEEebESVJkgtjn01IARKlRyYSqFCalQS0qJnIS2G3tGpiJgYjr01h6BtqZJzGbNMQkBJ38nt4grEhU2TgG6euxrXW+5CoJevmsIdKFgVLBuc2U0Pj0Vm3Fx3l3HNJQTMg2bYBTsXtHhOPlc3FoWEAE0NdPf3cLEWxmcgTiN9PVyHERQSAsz+46+vXDeWt/kpy7h6bxWyBF7r27k4A4MWPPvWxNV7q5Al8LSjURany2jA2qs78fjLc1n9WISSNGQgDZSA0dIHdVCoiPnu5yes1+6BwcT/PkRjLwayK2AdsqGy7b4LTPgEDfptZheZLyayBBjwuSatSzpG0p1wa0axL2K6YHAJ6Ho+4057rYvxhrRCpMfMdpGNd8IlwIDL6k/CbBsQYygVShzL24dp6imibLwDjwQ6jXoHCecgkSGTcKagHDEcEjMnJ2JTehGi1VHObtyxMiI3PpdWQ/N4Fq/0rUiOmI7EiDjRRBOsRl5SNhq/v0FXn0GUs5W5UHgUixMWgG3ZMyIT0E2zhj0IpzWPSIA5Pvj4BPNj0zBVPVnECQmcSHfEHATQE72pq4X2AajIL0OsJsZhw3ZMRnpVSi6WJmTCZDWj7ecH0f//oJnQevAwXYFd7hr3OdsTTq08iDlTZ7qrwDaob/Qp02nt4KktrliDjj9dTibCZY/fgJOlY2Nap92Nal2ds9gxZiszUnDLoBX6vm6J76gJME8TzYgdlSXY//A42JngTXutb4PNPihx8YoA82a10OnGa1hxfiNq3teBltcSUDnBi+/NcmJ4TWAY5UtvJ7bdKkHB5S248fYeBmyeV+RFpzyBUWXBcFC53kCLl2q6EmdfavH2hw69FiMILXdDaZawzGDtz4ARBx6dgGXI6g7RLHsauluNZm6iB1WVrtZxD9urA0MQGhTi+ID7rKZhsUuvIgIscPyguch9MjFa+8FuXqP/JEMKWgPW8wz8LbcLaGDPTpKPZF+hfaG/Azrj0+ypE5QdS/4tfikUyWFZhTSjsunrGNWvmjOYN2MBxEaT+anut+EcSt9Y/wKYPTFLjUA+DAAAAABJRU5ErkJggg=="
|
96 |
+
},
|
97 |
+
"2bc2": function(t, e, i) {
|
98 |
+
t.exports = i.p + "img/zoho.svg"
|
99 |
+
},
|
100 |
+
"2cf42": function(t, e) {
|
101 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAACT5JREFUeJzNm39wVNUVxz/n7W6I/FDkpwpmd/mRwUIdrfijKNZBOq11xmJhC7tRpKCpta3tWNGx1hoc2yIFrDJOK79FskHiFOSPSmvr4LT4C1qhVgVi2N3EURAoShJIstl3+scmwLK/3r73Qv3+tXvvOd977tn77t57znlCb2NW00VI6ipErgTGAqOA4cBAoH+3VDtwGDiIEkP4ANhFUl+nPnigN82TXmGdFbsaQ2YA3wK+5JBtL8IWUmxmg/8NEHXBwpNwzwFz9wygvc+diNyFcolrvJnYh7KSPrqCtcHP3CB07oBQ43n4PA8APwTOc8xnDccQlqGyhKj/qBMi+w6oUYO9ibsRFgBDnBjhAIcRfYTOwArqJWWHwJ4DwrFxiKwErrWl7z62Y3jmsP7iD0tVNEoeKpy4DZGdfHEmD3AtZmoXkXhVqYrWV0BIPfjiS0HuLXWQs4wnSfrnW30krDlgTqycTqkFvuPEsrOIepJtt1E/vrOYYHEH3NTQh0G+zSjfdMW0s4eXSbZNK+aEwntASD2c79vgwuTbbOgcdjjmTfj6rSeknkJChR3gS/wWmGbTgBPAKtDLiQb6ozITMC3odQJTiAaGojIBYRn2HAgQwpdYVEgg/yMQScwGfc7euNKMeCZRO/KjjOaq+NMoPy6iW0PUvyCjaXZjBV2eHcAwe+ZQRW0gmqsr9wq4rXkM6DO2BgNAX8qaPIBR/hCwv4DeuyRbf5PVvG50E/CKfXN4lplNo3N1ZTugRg3M1DpO3dTsDDgiZ/vzF7ShejPwKrAfZTfwb2A/wlZMbsm7aeXjtIb+GKk11GjWfL1Zog3xapCvOhgMhCvy9tUF9wA3lkaogiQud2aTTKahaR6wIqM5Q2hObCCd0ggMcjQYQNIzmPqL/+uYB2BWLIAhMReYDlGmlaffJDOXRFLux43Jg0lZe5cLPGmkaAfciAMMpVPuO73hlAPmxAaiuHPMFX2c2rHHXOECqA8eQPi1S2w/oqrh3J4vpxzQIXOBAY7pRR+jNvioY54zURv4BeiC4oJFcT545/Z86XaACsI9jqlVftcrk+9BNFgDLHXMo3JXz8f0JpiO4b1pUf1zROZjmocQLkNkIspwYAuV/l9RI1ZOew6gQiTxM5SbMfgIlZ2QegeRC1H5PXC+JRpTr2FD8K3036Ah37VugDxKrb/nr2Rzaca7AVGiLAYWZ3VFEsNBn7JEY3Ar8FbPHmD1stNC+YnVFmUzUb3TRzj+MOH49LwyMxsrqYovyndqK4oycx1w3JKsyC0ABrObR2A5dK2bWD2uxZZxbUO/gfA4Qh3VO305ZTzex1Dm4zHt7SNrg5+BvmhJVhnH7R8OM+hKXW15ACFuyzAAk77dn3ycGFmWR6hHpp/tcUQOWpUk5b3OAC6zTG7KPCKNY20ZdjZQ1XQlyjzrCnqpQSmZG2EEeN4hHL8HtHeySnZwg3oJJ36Jmtsp6SRrjPOCVpQYHe+H8AzhxFS6NGQ3Hu8aqnf6aE1sBabY0A56QexdM4VbKYvdCPwlr0xVw7nguwsVL+ilJ9tT7fcRSWRfe0XHoIBSSSTxIACGvsL6wL/yjtE2ZCr2Jg/oMC9O7v0YRTJCZdejujjHPeaxnHebniZhAujC7rYJwO15hzB1IGL7aRxsAOfY1UaM1sL9Unri5UxoseeziA2F4TNwcs1Us2DE9azA0OygjnV4DMDewSYN+6vHLZha7kD7uAHYX0JqlpyMdB3pahKbFzA5ZmAvAZFC9SGio94uKKVd7bbsykRhjmhwF8gPisrlhHnAQNhXotY+RK+jLriwOD/O63vEAkfUv5wUXwEp/INkwdhvoLLXsryym2TfK6gNWosdfBJ8H3AWGlNetyT3QuADkq2Tge0lkO8zUP2PZXlhC/XDrO8Z26QL2GjdoCwcpExftSxdP74TxHoCxTB2Gni7/o71v8JJlslPIrUIW88ngD7B2mCputZt7Ei9bfD8mE/B8iqYUvJtMDq6AZUHStJJ4zWSgadL0pgVC4BaTLrou9QHD3Sf1OSvFocQ8GSHzkPNhc8Ddf5lIDVYX2nbSaa+nfeiVaMGodgFWYEVj8wHrB3OlJfhZFC0aSKGucOicSYqz2PwCehlKFcCg4HX8Hqns27kkbyas+I3Y+iTIPlWUSuiS+l35HGWT0zmlAh/PASj8yWUSUAHyG4wd4EMo5RUvhhXUVux49Q5OxJ/D6dVncLrdHqmUn/xibwyN6iXC+NTMWQNygXdrZ8CPyfp2VQwnVb9cV9aO/8GXOPITnifaGA8ZKbG1jgkBWUSvtTLhBrzF0xuky7qglvRjP/3ZqKBVQUnH2o8j5aOrTifPKArez6dckB5+7OAo6rLbnwNn+ePuVLR9qGCz/MiIpNdIDtKeUcOB6we1wJa2q6bH1NoTPhd4oJwbBgw1RUu0WWnR7bP+JWMp4BDrgzUnnRyT8/EgPIWwI1s80H6dGQkVDIdEPUfRfVBFwb6iPqxxRx5WiJWz80vBiy/6DjKHsdWiTxyZl4j+zmtC6ylpPN0Lug7BbvTmZ9Rp1k2Jl2XVABCYc6iJrGN2oqVZzbn2KhESRl3AJ/bH0w68vaFmgfhSdWRGYoWzNRGQg1DC5A6KZBowTTuzPWyRaEyuRCo3YtMEvgelf66jGxxeP+liLGJjF8/w5xmSM3IiDOE1IOvKQK6AuhjyxqVmdT5c86lcMAxEl8C3FdQpjD2ASsQeQP0JpSfUjzt1QH6B1S2YOjVqNwNVNi2QFlCXeD+fN1FIq4qRJpWg86xbcD/FfIClRWRQjULRQ4rovQ/VA38yWXLeh+qW0i2zi5WsFH8tLZ8YpL+h6cBtW7Z1usQ3ciAIzPcKZc/CRUiiUVA3ufpCwGRhYyteNhqqU7pOaVwfDrCKs7eG2JWcQz0+0SDG0pRspdUiyRGoeZaly4nbuAfIHcQ9RcoxM4NBzl+Faris1FZhN0yduc4BDxE1L/a7hulzosc5sQG0mHci+hPcKfM1go+R2Up55x40nbNUjfcq/IIfdof7/FqhLnAeNd4M7EHeIby9uecTrwHvfTydPxyDCIoX0f4MnbeT0xD0xFr+TPIBqL+f7ppJvSWA05H+OMhSOf1pOONlwCVpB+VntfnvaQvXieAJqAZ5D0wd6H6JnWjrFZ92cL/AEdm6o5wcBoEAAAAAElFTkSuQmCC"
|
102 |
+
},
|
103 |
+
"2db4": function(t, e, i) {
|
104 |
+
t.exports = i.p + "img/outlook.svg"
|
105 |
+
},
|
106 |
+
"31f1": function(t, e, i) {
|
107 |
+
var s = {
|
108 |
+
"./googleAuthenticator.svg": "7de8",
|
109 |
+
"./AuthyAuthenticator.svg": "ddc9",
|
110 |
+
"./OTPOverSMS.svg": "776b",
|
111 |
+
"./OTPOverEmail.svg": "2db4",
|
112 |
+
"./KBA.svg": "b1c2",
|
113 |
+
"./DuoPush.svg": "7f3e",
|
114 |
+
"./OTPOverTelegram.svg": "5f30",
|
115 |
+
};
|
116 |
+
|
117 |
+
function a(t) {
|
118 |
+
var e = n(t);
|
119 |
+
return i(e)
|
120 |
+
}
|
121 |
+
|
122 |
+
function n(t) {
|
123 |
+
if (!i.o(s, t)) {
|
124 |
+
var e = new Error("Cannot find module '" + t + "'");
|
125 |
+
throw e.code = "MODULE_NOT_FOUND", e
|
126 |
+
}
|
127 |
+
return s[t]
|
128 |
+
}
|
129 |
+
a.keys = function() {
|
130 |
+
return Object.keys(s)
|
131 |
+
}, a.resolve = n, t.exports = a, a.id = "31f1"
|
132 |
+
},
|
133 |
+
"3af1": function(t, e, i) {
|
134 |
+
t.exports = i.p + "img/check-solid.svg"
|
135 |
+
},
|
136 |
+
"3dce": function(t, e, i) {
|
137 |
+
t.exports = i.p + "img/loading-white.svg"
|
138 |
+
},
|
139 |
+
"4bd8": function(t, e, i) {
|
140 |
+
t.exports = i.p + "img/logo.svg"
|
141 |
+
},
|
142 |
+
"4e2d": function(t, e, i) {
|
143 |
+
t.exports = i.p + "img/times-solid.svg"
|
144 |
+
},
|
145 |
+
"50bf": function(t, e, i) {
|
146 |
+
t.exports = i.p + "img/arrow.svg"
|
147 |
+
},
|
148 |
+
5711: function(t, e, i) {
|
149 |
+
var s = {
|
150 |
+
"./loading-blue.svg": "8e56",
|
151 |
+
"./loading-white.svg": "3dce",
|
152 |
+
"./loading.svg": "8e57"
|
153 |
+
};
|
154 |
+
|
155 |
+
function a(t) {
|
156 |
+
var e = n(t);
|
157 |
+
return i(e)
|
158 |
+
}
|
159 |
+
|
160 |
+
function n(t) {
|
161 |
+
if (!i.o(s, t)) {
|
162 |
+
var e = new Error("Cannot find module '" + t + "'");
|
163 |
+
throw e.code = "MODULE_NOT_FOUND", e
|
164 |
+
}
|
165 |
+
return s[t]
|
166 |
+
}
|
167 |
+
a.keys = function() {
|
168 |
+
return Object.keys(s)
|
169 |
+
}, a.resolve = n, t.exports = a, a.id = "5711"
|
170 |
+
},
|
171 |
+
"5f30": function(t, e, i) {
|
172 |
+
t.exports = i.p + "img/smtp.svg"
|
173 |
+
},
|
174 |
+
"6f43": function(t, e, i) {
|
175 |
+
t.exports = i.p + "img/star-solid.svg"
|
176 |
+
},
|
177 |
+
"776b": function(t, e, i) {
|
178 |
+
t.exports = i.p + "img/mailgun.svg"
|
179 |
+
},
|
180 |
+
"78cb": function(t, e, i) {
|
181 |
+
t.exports = i.p + "img/smtpcom.svg"
|
182 |
+
},
|
183 |
+
"7c9b": function(t, e, i) {
|
184 |
+
var s = {
|
185 |
+
"./all-in-one-seo-pack@2x.png": "2cf42",
|
186 |
+
"./coming-soon@2x.png": "9f86",
|
187 |
+
"./google-analytics-for-wordpress@2x.png": "82f2",
|
188 |
+
"./instagram-feed@2x.png": "877f",
|
189 |
+
"./rafflepress@2x.png": "a1c2",
|
190 |
+
"./wp-call-button@2x.png": "1532"
|
191 |
+
};
|
192 |
+
|
193 |
+
function a(t) {
|
194 |
+
var e = n(t);
|
195 |
+
return i(e)
|
196 |
+
}
|
197 |
+
|
198 |
+
function n(t) {
|
199 |
+
if (!i.o(s, t)) {
|
200 |
+
var e = new Error("Cannot find module '" + t + "'");
|
201 |
+
throw e.code = "MODULE_NOT_FOUND", e
|
202 |
+
}
|
203 |
+
return s[t]
|
204 |
+
}
|
205 |
+
a.keys = function() {
|
206 |
+
return Object.keys(s)
|
207 |
+
}, a.resolve = n, t.exports = a, a.id = "7c9b"
|
208 |
+
},
|
209 |
+
"7de8": function(t, e, i) {
|
210 |
+
t.exports = i.p + "img/amazonses.svg"
|
211 |
+
},
|
212 |
+
"7f3e": function(t, e, i) {
|
213 |
+
t.exports = i.p + "img/sendinblue.svg"
|
214 |
+
},
|
215 |
+
"827a": function(t, e, i) {
|
216 |
+
t.exports = i.p + "img/exclamation-circle-solid.svg"
|
217 |
+
},
|
218 |
+
"82f2": function(t, e, i) {
|
219 |
+
t.exports = i.p + "img/google-analytics-for-wordpress@2x.png"
|
220 |
+
},
|
221 |
+
8398: function(t, e, i) {
|
222 |
+
t.exports = i.p + "img/working.svg"
|
223 |
+
},
|
224 |
+
8475: function(t, e, i) {
|
225 |
+
t.exports = i.p + "img/question-circle-solid.svg"
|
226 |
+
},
|
227 |
+
"84d7": function(t, e, i) {
|
228 |
+
t.exports = i.p + "img/info-circle-solid.svg"
|
229 |
+
},
|
230 |
+
"877f": function(t, e, i) {
|
231 |
+
t.exports = i.p + "img/instagram-feed@2x.png"
|
232 |
+
},
|
233 |
+
"87eb": function(t, e, i) {
|
234 |
+
t.exports = i.p + "img/pro-badge.svg"
|
235 |
+
},
|
236 |
+
8888: function(t, e, i) {
|
237 |
+
t.exports = i.p + "img/post-smtp-mailer.png"
|
238 |
+
},
|
239 |
+
"8cbb": function(t, e, i) {
|
240 |
+
"use strict";
|
241 |
+
i("da18")
|
242 |
+
},
|
243 |
+
"8d41": function(t, e) {
|
244 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABlmWCKAAAJsUlEQVR4AeVbC3ATxxn+93SS/JAtY8DYGDuAbd4QQoEkTRlCmzakEyYhAxRCYAjT6QBJWxIIr5Kp2yktj5KQJiSUPGoKmNSTQEmaZ6e0CQwpBUJJKClYro2NH2DLtmTJ1kl3u/1XVKqEJetOPoFtdjRze//++z++2+e/KwKJToyR775emS8BGU3AMJgwmssI5DEGOW6JWRrbFQUIOAXGGhjAZUJYvcxIreD1fFWxcdxlAILkxCWSCNH3/bbCKpqMIwhlj/ooXUaIkBRJj0ui0NSuRCry0ygDD2ZeAgXeJBIrtxUXOaMyx1mgKwAryq5aqpwd+3wAD6mxJxYAnWQo5O3yWroQXiySOpXFSdAFgMWlVyY0tLlKqcEwggAxqrVFMwB+wcwHlH3FDGSBbXXRebW6ovF1C4AFpXWjmju8zykMZqLjmmXFB8A1VxgQCgzeYwp7umJ9oS2ag7Homo3mAsvKmGGPs2q1F0gxDlIR+3csxby8OwAE5ONg2g7ANtrWFD0foGl5agZg4b7LQ5ol5YjMoEiLoki8egAQlEvhgtckzrj01ND6IE1FRlDBE2SZu79+6lWPUqOH80GhemUEGGmS5bqhWy9O1CJSNQCz99QubW2XPtUi/GbwisRwvHBb+WNqdasCYFZJ9WqXT34FxzmzWsE3i48AS8Z+/VrBVtsP1dgQEwD+5SWZbUJhJjUCewYPMQsEthVuLp8Xy54uB8H5B2rutLuUTxL15XUdBCN6ynxeGe68tL7oTMRiJEZtAY//sTbP7qZ/T5Tz0QzSl06MJpGdGrq1Mjua3IgA/JUxscEu/yVapd5FFwQRlHej2RwRgB046PXIqS6aFzHouEadXLi54ulIbJ3GgMfL6sdcdkqnu7PCi6QoEi3xY0CYVieVYFzFxsKaUGqnFnClTdp+I5wPNeIG5dOFJPby9brCAHji7bpJXgb3X8/UV94pJQ8UbLflhfoTBoCtqWNvPLu6UIE9OY9rAwPI8FGojUEA9n/R2k8xGLq9wQkV3hPzGHIryCwuTw/YJgYyb55y7NESzOD15o5LhUGWoIiAqOue0UN6Pox5dWCf60666lJg10n1kTJCiCkjhf2yGeBJrtc/Cyw51JJRa3e2aDUkK9UAC263wN15SXGEQwADOwzwF3c6fskDO084oLJF1iiD0Va31dpYnOXyd4F2t3OsRgkwor8RUowEXjjugJ8daYb6Nhmd6YY3Kg3gOriudR/ZYfWHdj+AE7K1blOIkJHa6vfZD4DChPkq9QfZ+JffMrM//GBKGtjsPlj5nh3+8KUbfBgfS1SSUfZb59wwp/QKfFbtgeVT06H0e4Ng5det2lUy8du8ksCXvQ6P8n3tEq7V+ObwFHjloYFwV54ZDp13w7LDjXDyMo9m65v+WS/B7P0N8Dy2uCm5Zji4MBsem2jxK+m0mlOhmhK6nLOJew9W5+PAEHdcj4dC08wCPHVPBlxo9MKrJ9tg+zEHjMnqgGVT0yAr5iDZtbUtHQps/qQVjuMXH4hjzm8eHACTBptA0B6DDVOETX/woG22LNHuZqP+NxaGMcTzMnKgCX51fyZ8eLEdDmJr+DF2iwdHpsDDY1Ih1RSccVWJ9uBmpOxLF5R87sR+TmDxHWn+L55s1CanK2WpVBkvMhDyMaraFZ+mMqOBwKzRqTBtaBLs+ocT/nShHY5WdcDSyenwtcFmMOBqpKuEMyN8XuuBX2MrqnbIcEeOCTZMz4Bcq7GranGVEcEwXBQFyI2rdoxKGckGWDe9H5Q3eWEH9lveLQoyRVgzLQOsSQJOm52BcHgobPpbMxy7JEG/ZAG2zcyEe25LjqEp/mI8ussVgcKQ+EXErlk0wAQvYL/9AFvCvrMuWPFOE3yrIBmWTEoLrh34Vy892wavnXKCF48K5+ECa8VdVjBha0pkwo+QI8oUokZL9FIuYrPn3WIqLph+f6YNPrZ1wOk6CeaPt0CySGDL0RaocSgwfpDJ30KGZxqD4OhlQyQ5uAzLFnE1FlwXR2LSkzbIYoBV37DC6VoJgXCh461gdyuQjl1i470Z8J3CFBAT/NVD/cGlvxUX8nxUpaH0hOb59DVlSBJMzDHDHhzh69sU+NHd6WAxGxKqN5JwbAEUx0DWFqkw0TQ+W/CZ4QasnqO7QkijIAjQEJ2jj5fwmyiCQQiLkfVxl8PdI3BFkH20Npx667zhGNAsEAOpvnVcDvcUL1lUCv1TTf8OJ986b5LPe0ZY9EgWbwG6XTrqLfDh7FNdu2G0XZhBiJxmJm/0FsP1s5OVcFn+vWWyybBfP8G9RBKDD4IAMFnWfN3Mi/v1npLafdpswXWvYrZYz3H7g9utWW/UvO+h9AG1TvEt7dxxFty2chFBMWqr+/l4jE/C3Vi8ibvd3E5hN+4iWzrUy2GUPGdbW7CK6w1azg9GSk44riIlVqA/Xns71bvBh6N+/Qiax+GWBjYWj3Vxgn8M4JmFEzJaQKAXeb4vJ6KwswHnuZ9BAPjLMGvyUoy7a+tQvGJvSdjjfB7vw6HmhgGwe072CVEkfw5l6Et5jH0crioeG7b5CwOAO5trNePgwPQP7N90JFkzUa6dB4aa0gmA1x/JPpdigl+EMvWFvEKFZ20bihqv96UTAJxhZd5tWzBecel65t76jk3/yH/WFnS6HcL9iQjAjBlEzk4x3dtbHQ63m3ncMswPp/3/LSIAvLhkQU7VgBTjNMz23o0SAy9TYHJDhKYfgCAqAJzhwKODj1lEtgpXS95Ahd7yxLm8gxE2z7au6F9d2dwlALzioSVDd+LF25/jzIB/Beodye88oyttzxQdjmVxTAC4gHeX5m9KFcmTeISo9SpGLP2JKPcSmS6qWDNitxrhwb2AGuY5e6unOST2qRpeNTz67wUo3o0Wp1Q+M/wLNfo5j6oWEBD21qL8oxkmNhzP1MoDtJ7yxADnZ7JRzNfiPLddUwsIOMv/NFXirnrWR4U12C3iPr7VowWg406gwk9xe7sjYJ+WZ1wABBTM3Vc/ptUj7cTT3el45KVZVrcAYIyHZN6XmLK8Zu2ouoBNWp+ajY6kYHFpzYS6dvkdwoRcLfGEuABgzIsb1osyNc6qWj+sKpI9Wmi6AOBXiPdYFhyozGqVxF0Y6QnbckYzSAsAlBEFzzFfbmmSf9K0dZRu55n6ARDi5dyymkxnm3I7Hj/PphSW4hWf1JDiYDYWADx0zYC+imv5j10W+XzjE9eiOEEBOmQSAkCYXdgy7vtd9TCBkgkKY/kKIwPxH+U5isKyPApLc3soRgZxqwqkgRFSiyfWjVilEiM35yLt3sJk6/DyX5qvt56zCsMvAAAAAElFTkSuQmCC"
|
245 |
+
},
|
246 |
+
"8e56": function(t, e, i) {
|
247 |
+
t.exports = i.p + "img/loading-blue.svg"
|
248 |
+
},
|
249 |
+
"8e57": function(t, e, i) {
|
250 |
+
t.exports = i.p + "img/loading.svg"
|
251 |
+
},
|
252 |
+
"9a1d": function(t, e, i) {
|
253 |
+
t.exports = i.p + "img/check-circle-solid.svg"
|
254 |
+
},
|
255 |
+
"9da7": function(t, e) {
|
256 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAABKdJREFUWIWtl11sFFUUx39ndqf0C0EhiKVluy01ARuoxMRo1CBBIqKRqNV2C4Sg8cGowQcViUFtFOmDCSYaE9SEqN0tluiDIRBBosYHQlBDowbSwu62fNTKh/JRSnd3jg9TdruzMzsN8H+79/zP+f/vzZ17zwgTRfNAGSWZh1FZCtoI3A6YwBRgECGBcghhD6R+oLPh/ETKii9j9dHZpAPrgVVA5QTtXgS2kTG2sH320Wsz0PxnCWZ5O8grQMkEhZ24gmgHZ9Ob2NVwZeIGVg7Mwcp8Ddx5jcJO9GClH6VrzoC/gdbkHRi6F2XmDRK/ipOotYxYXc/4SSOPsioRRvRHT3HlBOiHwBGXaA8q7wP9HgaqEGMXLX017gbWxEvJsAOY7lGgn3SggWh4HYb1ODAyLnaJACuIhTZQWTIXYdDbRPA7lvVOKjSQMt4CFnok2tzumssAfFV3BGUxIq+jvAbWYr6sjQOwtWoYJehZRVjAzcE3ckOASLIO9C9gklceoJRoOdvCI0U40NZ7E2r+V5QDV0DmEQ0ds3dAdb2POKhs9hUH6Gw4j8hmH9YkRNcBCKsGK8iMnAImOxR7QXqBeajEiIU2+IqPR1viXZSngB6ERpS5DsYFSkdmCa3JpxHd7ghmwKonWpd0L368mlEdprvmLGAf4FGrhmh9ryu/JV6LIX1AwLHIFQaG3ueS8runOICmOzDTL2fHo8ZjENjhye8KJ4CegnmRpQYqd7ukNNGWWOtZEEwQM1dITQTTnapCJPEisKAwxIIgaJVLVhDlc1qT1cRC7dnZRRqkKnk/yK2IpokklwBg0YhoBZHkElJl++mecTGbE0m2A296LCQUBKZ5rlM0/y2ojtdjGftAQQG01eZll7QHc/hJ4JtxWY2e9WGaQcHBuE6o431R26oHUgbg1Tgowt58ejDtayBgpPLGhuwCLA/2ZQPkmFsA1UforP04b3bKUD+QcuHnoNqXN+4MfYrqYuwmxQE5YqB6qLAIR4mFdxfMb70rBXQXkf+VhtmHC2Zj4Z9QCjsj0T8MRPcVBmgkEm9ylbCMV4FCERgCfY63Jbfda+KlAETiTQjzCzJUvxfWHp7MSOkgUO4InwZOAnMR/ZaKMyvHdgCaB27BtF4C3YD9DXxEMLOFL+rtXuD5gyYXpkcRngD6gBnAVEf9i6QCM8Zew8RnwLOuK86hi2goApI71W2JUygW0dpZecxIIga0+NT7hGjtC2P9QKYDv8MFLbT1Tfbh2O07POPDGkGCm+BqQxKt70XY4pN0Mq/Xbx4oQ5kCTB0TtWE3LfGilYQP6Kw+njMAYOpGYH+RtFJa+u1ru3mokmCmEygDyjGtGGsP27tjc4rt1EEqTr+T8zIeKxO3YXEAqPZIHgZ2Y7frYUesH/vFewiv5kY5gcgDREPZu8elLT82HzF2FjFxrfgb1UXEwnmfsFFAi9X1kEotBPn5Bor/RoB7nOLuBgC6G/7h3OhSRNuBS9chfBnhPc6l7s12zQ74/5w2x2diykZgNVAxQeF/EaIEMh3Zy8kD/gayRoYqKbm0HIwHQZtQwti3WxrkDOhx0AOI8Qujxs7sP4QP/gdLfYuNd8XCxgAAAABJRU5ErkJggg=="
|
257 |
+
},
|
258 |
+
"9f7c": function(t, e, i) {
|
259 |
+
"use strict";
|
260 |
+
i.r(e);
|
261 |
+
i("e260"), i("e6cf"), i("cca6"), i("a79d");
|
262 |
+
var s = function() {
|
263 |
+
var t = this,
|
264 |
+
e = t.$createElement,
|
265 |
+
s = t._self._c || e;
|
266 |
+
return s("div", {
|
267 |
+
staticClass: "mo2f-setup-admin-page"
|
268 |
+
}, [s("router-view"), t.blocked ? s("div", {
|
269 |
+
staticClass: "mo2f-setup-blocked"
|
270 |
+
}) : t.loading ? s("div", {
|
271 |
+
staticClass: "mo2f-setup-loading"
|
272 |
+
}, [s("inline-svg", {
|
273 |
+
staticClass: "icon",
|
274 |
+
attrs: {
|
275 |
+
src: i("c869"),
|
276 |
+
width: "195"
|
277 |
+
}
|
278 |
+
})], 1) : t._e()], 1)
|
279 |
+
},
|
280 |
+
a = [],
|
281 |
+
n = i("5530"),
|
282 |
+
o = i("8c4f"),
|
283 |
+
r = function() {
|
284 |
+
var t = this,
|
285 |
+
e = t.$createElement,
|
286 |
+
s = t._self._c || e;
|
287 |
+
return s("div", {
|
288 |
+
staticClass: "mo2f-setup-welcome"
|
289 |
+
}, [s("the-wizard-header"), s("div", {
|
290 |
+
staticClass: "mo2f-setup-setup-wizard-container"
|
291 |
+
}, [s("main", {
|
292 |
+
staticClass: "mo2f-setup-setup-wizard-content"
|
293 |
+
}, [s("div", {
|
294 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
295 |
+
}, [s("content-header", {
|
296 |
+
attrs: {
|
297 |
+
title: t.text_header_title,
|
298 |
+
subtitle: t.text_header_subtitle
|
299 |
+
}
|
300 |
+
}), s("button", {
|
301 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-large",
|
302 |
+
attrs: {
|
303 |
+
type: "button"
|
304 |
+
},
|
305 |
+
on: {
|
306 |
+
click: function(e) {
|
307 |
+
return e.preventDefault(), t.nextStep(e)
|
308 |
+
}
|
309 |
+
}
|
310 |
+
}, [s("span", {
|
311 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
312 |
+
}, [t._v(" " + t._s(t.text_button) + " "), s("inline-svg", {
|
313 |
+
staticClass: "icon",
|
314 |
+
attrs: {
|
315 |
+
src: i("107e"),
|
316 |
+
width: "16",
|
317 |
+
height: "22"
|
318 |
+
}
|
319 |
+
})], 1)])], 1)]), s("footer", [s("p", {
|
320 |
+
staticClass: "mo2f-setup-exit-link"
|
321 |
+
}, [s("a", {
|
322 |
+
attrs: {
|
323 |
+
href: t.exit_href
|
324 |
+
}
|
325 |
+
}, [t._v(t._s(t.text_exit_link))])])])])], 1)
|
326 |
+
},
|
327 |
+
l = [],
|
328 |
+
c = (i("cc99"), i("561c")),
|
329 |
+
p = function() {
|
330 |
+
var t = this,
|
331 |
+
e = t.$createElement,
|
332 |
+
i = t._self._c || e;
|
333 |
+
return i("div", {
|
334 |
+
staticClass: "mo2f-setup-content-header"
|
335 |
+
}, [i("h2", {
|
336 |
+
domProps: {
|
337 |
+
innerHTML: t._s(t.title)
|
338 |
+
}
|
339 |
+
}), t.subtitle ? i("p", {
|
340 |
+
staticClass: "subtitle",
|
341 |
+
domProps: {
|
342 |
+
innerHTML: t._s(t.subtitle)
|
343 |
+
}
|
344 |
+
}) : t._e()])
|
345 |
+
},
|
346 |
+
m = [],
|
347 |
+
u = {
|
348 |
+
name: "ContentHeader",
|
349 |
+
props: {
|
350 |
+
title: String,
|
351 |
+
subtitle: String
|
352 |
+
}
|
353 |
+
},
|
354 |
+
d = u,
|
355 |
+
_ = i("2877"),
|
356 |
+
f = Object(_["a"])(d, p, m, !1, null, null, null),
|
357 |
+
h = f.exports,
|
358 |
+
g = function() {
|
359 |
+
var t = this,
|
360 |
+
e = t.$createElement,
|
361 |
+
s = t._self._c || e;
|
362 |
+
return s("header", {
|
363 |
+
staticClass: "mo2f-setup-wizard-header"
|
364 |
+
}, [s("h1", {
|
365 |
+
staticClass: "mo2f-setup-setup-wizard-logo"
|
366 |
+
}, [s("div", {
|
367 |
+
staticClass: "mo2f-setup-logo"
|
368 |
+
}, [s("img", {
|
369 |
+
staticClass: "mo2f-setup-logo-img",
|
370 |
+
attrs: {
|
371 |
+
src: i("4bd8"),
|
372 |
+
alt: t.text_logo_alt
|
373 |
+
}
|
374 |
+
})])])])
|
375 |
+
},
|
376 |
+
w = [],
|
377 |
+
b = {
|
378 |
+
name: "TheWizardHeader",
|
379 |
+
data: function() {
|
380 |
+
return {
|
381 |
+
text_logo_alt: Object(c["a"])("miniOrange 2-Factor Authentication LOGO", "mo2f-setup")
|
382 |
+
}
|
383 |
+
}
|
384 |
+
},
|
385 |
+
A = b,
|
386 |
+
v = Object(_["a"])(A, g, w, !1, null, null, null),
|
387 |
+
x = v.exports,
|
388 |
+
y = {
|
389 |
+
name: "SetupWizardWelcome",
|
390 |
+
components: {
|
391 |
+
ContentHeader: h,
|
392 |
+
TheWizardHeader: x
|
393 |
+
},
|
394 |
+
data: function() {
|
395 |
+
return {
|
396 |
+
text_header_title: Object(c["a"])("Welcome to the 2FA Setup Wizard!", "mo2f-setup"),
|
397 |
+
text_header_subtitle: Object(c["a"])("This setup guide will take you through all the steps you need to follow to enable the two-factor authentication for your website.", "mo2f-setup"),
|
398 |
+
text_button: Object(c["a"])("Let's Get Started", "mo2f-setup"),
|
399 |
+
text_exit_link: Object(c["a"])("Go back to the Dashboard", "mo2f-setup"),
|
400 |
+
exit_href: this.$wpms.exit_url
|
401 |
+
}
|
402 |
+
},
|
403 |
+
methods: {
|
404 |
+
nextStep: function() {
|
405 |
+
this.$router.push({
|
406 |
+
name: this.$wizard_steps[0]
|
407 |
+
})
|
408 |
+
}
|
409 |
+
}
|
410 |
+
},
|
411 |
+
C = y,
|
412 |
+
k = Object(_["a"])(C, r, l, !1, null, null, null),
|
413 |
+
O = k.exports,
|
414 |
+
j = function() {
|
415 |
+
var t = this,
|
416 |
+
e = t.$createElement,
|
417 |
+
i = t._self._c || e;
|
418 |
+
return i("div", {
|
419 |
+
staticClass: "mo2f-setup-step"
|
420 |
+
}, [i("the-wizard-header"), i("the-wizard-timeline"), i("div", {
|
421 |
+
staticClass: "mo2f-setup-setup-wizard-container"
|
422 |
+
}, [i("main", {
|
423 |
+
staticClass: "mo2f-setup-setup-wizard-content"
|
424 |
+
}, [i("router-view", {
|
425 |
+
on: {
|
426 |
+
displayContentBelow: t.displayContentBelow
|
427 |
+
}
|
428 |
+
})], 1), i("footer", [t.content_below.length > 0 ? i("div", {
|
429 |
+
staticClass: "mo2f-setup-step-below-content",
|
430 |
+
domProps: {
|
431 |
+
innerHTML: t._s(t.content_below)
|
432 |
+
}
|
433 |
+
}) : t._e(), t.display_exit_link ? i("p", {
|
434 |
+
staticClass: "mo2f-setup-exit-link"
|
435 |
+
}, [i("a", {
|
436 |
+
attrs: {
|
437 |
+
href: t.exit_href
|
438 |
+
}
|
439 |
+
}, [t._v(t._s(t.text_exit_link))])]) : t._e()])])], 1)
|
440 |
+
},
|
441 |
+
S = [],
|
442 |
+
P = (i("caad"), i("b0c0"), i("d3b7"), i("2532"), i("3ca3"), i("ddb0"), function() {
|
443 |
+
var t = this,
|
444 |
+
e = t.$createElement,
|
445 |
+
s = t._self._c || e;
|
446 |
+
return s("div", {
|
447 |
+
staticClass: "mo2f-setup-setup-wizard-container"
|
448 |
+
}, [s("div", {
|
449 |
+
staticClass: "mo2f-setup-setup-wizard-timeline"
|
450 |
+
}, [t._l(t.steps, (function(e, a) {
|
451 |
+
return [a > 0 ? s("div", {
|
452 |
+
key: a + "line",
|
453 |
+
class: t.lineClass(a)
|
454 |
+
}) : t._e(), s("div", {
|
455 |
+
key: a,
|
456 |
+
class: t.stepClass(a)
|
457 |
+
}, [s("inline-svg", {
|
458 |
+
staticClass: "icon icon-success",
|
459 |
+
attrs: {
|
460 |
+
src: i("3af1"),
|
461 |
+
width: "10",
|
462 |
+
height: "10"
|
463 |
+
}
|
464 |
+
}), s("inline-svg", {
|
465 |
+
staticClass: "icon icon-failed",
|
466 |
+
attrs: {
|
467 |
+
src: i("4e2d"),
|
468 |
+
width: "8",
|
469 |
+
height: "11"
|
470 |
+
}
|
471 |
+
})], 1)]
|
472 |
+
}))], 2)])
|
473 |
+
}),
|
474 |
+
E = [],
|
475 |
+
T = (i("c740"), {
|
476 |
+
name: "TheWizardTimeline",
|
477 |
+
data: function() {
|
478 |
+
return {
|
479 |
+
steps: this.$wizard_steps
|
480 |
+
}
|
481 |
+
},
|
482 |
+
methods: {
|
483 |
+
stepClass: function(t) {
|
484 |
+
var e = this,
|
485 |
+
i = "mo2f-setup-setup-wizard-timeline-step",
|
486 |
+
s = this.steps.findIndex((function(t) {
|
487 |
+
return e.$route.name.includes(t)
|
488 |
+
}));
|
489 |
+
return (t < s || parseInt(s) === this.steps.length - 1 && this.$route.name.includes("_success")) && (i += " mo2f-setup-setup-wizard-timeline-step-completed"), t === s && parseInt(s) === this.steps.length - 1 && this.$route.name.includes("_failure") && (i += " mo2f-setup-setup-wizard-timeline-step-failed"), parseInt(t) === parseInt(s) && (i += " mo2f-setup-setup-wizard-timeline-step-active"), i
|
490 |
+
},
|
491 |
+
lineClass: function(t) {
|
492 |
+
var e = this,
|
493 |
+
i = "mo2f-setup-setup-wizard-timeline-step-line",
|
494 |
+
s = this.steps.findIndex((function(t) {
|
495 |
+
return e.$route.name.includes(t)
|
496 |
+
}));
|
497 |
+
return t <= s && (i += " mo2f-setup-setup-wizard-timeline-line-active"), i
|
498 |
+
}
|
499 |
+
}
|
500 |
+
}),
|
501 |
+
z = T,
|
502 |
+
B = Object(_["a"])(z, P, E, !1, null, null, null),
|
503 |
+
I = B.exports,
|
504 |
+
M = {
|
505 |
+
name: "SetupWizardSteps",
|
506 |
+
components: {
|
507 |
+
TheWizardHeader: x,
|
508 |
+
TheWizardTimeline: I
|
509 |
+
},
|
510 |
+
data: function() {
|
511 |
+
return {
|
512 |
+
text_exit_link: Object(c["a"])("Close and exit the Setup Wizard", "mo2f-setup"),
|
513 |
+
exit_href: this.$wpms.exit_url,
|
514 |
+
content_below: ""
|
515 |
+
}
|
516 |
+
},
|
517 |
+
computed: {
|
518 |
+
display_exit_link: function() {
|
519 |
+
return !this.$route.name.includes("check_configuration_step")
|
520 |
+
}
|
521 |
+
},
|
522 |
+
methods: {
|
523 |
+
displayContentBelow: function(t) {
|
524 |
+
this.content_below = t
|
525 |
+
}
|
526 |
+
},
|
527 |
+
mounted: function() {
|
528 |
+
var t = this;
|
529 |
+
this.$store.dispatch("$_app/start_loading"), Promise.all([this.$store.dispatch("$_settings/getSettings"), this.$store.dispatch("$_plugins/getPlugins")]).finally((function() {
|
530 |
+
t.$store.dispatch("$_app/stop_loading")
|
531 |
+
}))
|
532 |
+
}
|
533 |
+
},
|
534 |
+
D = M,
|
535 |
+
F = Object(_["a"])(D, j, S, !1, null, null, null),
|
536 |
+
N = F.exports,
|
537 |
+
Q = function() {
|
538 |
+
var t = this,
|
539 |
+
e = t.$createElement,
|
540 |
+
s = t._self._c || e;
|
541 |
+
return s("div", {
|
542 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-import"
|
543 |
+
}, [s("div", {
|
544 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
545 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
546 |
+
attrs: {
|
547 |
+
title: t.text_header_title,
|
548 |
+
subtitle: t.text_header_subtitle
|
549 |
+
}
|
550 |
+
}), s("div", {
|
551 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
552 |
+
}, [s("form", [s("div", {
|
553 |
+
staticClass: "mo2f-setup-setup-wizard-form-row"
|
554 |
+
}, [s("settings-input-radios-with-icons", {
|
555 |
+
attrs: {
|
556 |
+
name: "import_from_plugin",
|
557 |
+
options: t.options
|
558 |
+
},
|
559 |
+
model: {
|
560 |
+
value: t.selectedImport,
|
561 |
+
callback: function(e) {
|
562 |
+
t.selectedImport = e
|
563 |
+
},
|
564 |
+
expression: "selectedImport"
|
565 |
+
}
|
566 |
+
})], 1)])])], 1), s("div", {
|
567 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
568 |
+
}), s("div", {
|
569 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
570 |
+
}, [s("a", {
|
571 |
+
attrs: {
|
572 |
+
href: "#"
|
573 |
+
},
|
574 |
+
on: {
|
575 |
+
click: function(e) {
|
576 |
+
return e.preventDefault(), t.previousStep(e)
|
577 |
+
}
|
578 |
+
}
|
579 |
+
}, [s("span", {
|
580 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
581 |
+
}, [s("inline-svg", {
|
582 |
+
staticClass: "icon",
|
583 |
+
attrs: {
|
584 |
+
src: i("1fa5"),
|
585 |
+
width: "16",
|
586 |
+
height: "18"
|
587 |
+
}
|
588 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
589 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
590 |
+
}, [s("button", {
|
591 |
+
staticClass: "mo2f-setup-button",
|
592 |
+
attrs: {
|
593 |
+
type: "button",
|
594 |
+
name: "skip_step"
|
595 |
+
},
|
596 |
+
domProps: {
|
597 |
+
textContent: t._s(t.text_skip)
|
598 |
+
},
|
599 |
+
on: {
|
600 |
+
click: function(e) {
|
601 |
+
return e.preventDefault(), t.nextStep(e)
|
602 |
+
}
|
603 |
+
}
|
604 |
+
}), s("button", {
|
605 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
606 |
+
attrs: {
|
607 |
+
type: "submit",
|
608 |
+
name: "next_step",
|
609 |
+
disabled: null === t.selectedImport
|
610 |
+
},
|
611 |
+
on: {
|
612 |
+
click: function(e) {
|
613 |
+
return e.preventDefault(), t.handleSubmit(e)
|
614 |
+
}
|
615 |
+
}
|
616 |
+
}, [s("span", {
|
617 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
618 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
619 |
+
staticClass: "icon",
|
620 |
+
attrs: {
|
621 |
+
src: i("107e"),
|
622 |
+
width: "16",
|
623 |
+
height: "19"
|
624 |
+
}
|
625 |
+
})], 1)])])])])
|
626 |
+
},
|
627 |
+
L = [],
|
628 |
+
W = function() {
|
629 |
+
var t = this,
|
630 |
+
e = t.$createElement,
|
631 |
+
s = t._self._c || e;
|
632 |
+
return s("div", {
|
633 |
+
staticClass: "mo2f-setup-input-radios-with-icons"
|
634 |
+
}, t._l(t.options, (function(e) {
|
635 |
+
return s("label", {
|
636 |
+
key: e.value,
|
637 |
+
class: t.labelClass(e),
|
638 |
+
attrs: {
|
639 |
+
for: "mo2f-setup-settings-radio-" + t.name + "[" + e.value + "]"
|
640 |
+
},
|
641 |
+
on: {
|
642 |
+
click: function(i) {
|
643 |
+
return t.clicked(e)
|
644 |
+
}
|
645 |
+
}
|
646 |
+
}, [s("span", {
|
647 |
+
class: t.titleClass(e.value)
|
648 |
+
}, [s("inline-svg", {
|
649 |
+
staticClass: "icon",
|
650 |
+
attrs: {
|
651 |
+
src: i("3af1"),
|
652 |
+
width: "16",
|
653 |
+
height: "16"
|
654 |
+
}
|
655 |
+
})], 1), e.logo.length ? s("img", {
|
656 |
+
staticClass: "mo2f-setup-logo-icon",
|
657 |
+
attrs: {
|
658 |
+
src: e.logo,
|
659 |
+
alt: e.label
|
660 |
+
}
|
661 |
+
}) : t._e(), s("input", {
|
662 |
+
directives: [{
|
663 |
+
name: "model",
|
664 |
+
rawName: "v-model",
|
665 |
+
value: t.selectedImport,
|
666 |
+
expression: "selectedImport"
|
667 |
+
}],
|
668 |
+
attrs: {
|
669 |
+
id: "mo2f-setup-settings-radio-" + t.name + "[" + e.value + "]",
|
670 |
+
type: "radio",
|
671 |
+
name: t.name,
|
672 |
+
autocomplete: "off",
|
673 |
+
disabled: e.disabled || !1
|
674 |
+
},
|
675 |
+
domProps: {
|
676 |
+
value: e.value,
|
677 |
+
checked: t.isChecked(e.value),
|
678 |
+
checked: t._q(t.selectedImport, e.value)
|
679 |
+
},
|
680 |
+
on: {
|
681 |
+
change: function(i) {
|
682 |
+
t.selectedImport = e.value
|
683 |
+
}
|
684 |
+
}
|
685 |
+
}), s("span", {
|
686 |
+
staticClass: "mo2f-setup-styled-radio-text",
|
687 |
+
domProps: {
|
688 |
+
innerHTML: t._s(e.label)
|
689 |
+
}
|
690 |
+
}), e.is_pro ? s("inline-svg", {
|
691 |
+
staticClass: "mo2f-setup-pro-badge",
|
692 |
+
attrs: {
|
693 |
+
src: i("87eb"),
|
694 |
+
width: "46",
|
695 |
+
height: "26"
|
696 |
+
}
|
697 |
+
}) : t._e()], 1)
|
698 |
+
})), 0)
|
699 |
+
},
|
700 |
+
U = [],
|
701 |
+
H = {
|
702 |
+
name: "SettingsInputRadiosWithIcons",
|
703 |
+
props: {
|
704 |
+
options: Array,
|
705 |
+
name: String,
|
706 |
+
value: String
|
707 |
+
},
|
708 |
+
data: function() {
|
709 |
+
return {
|
710 |
+
has_error: !1
|
711 |
+
}
|
712 |
+
},
|
713 |
+
computed: {
|
714 |
+
selectedImport: {
|
715 |
+
get: function() {
|
716 |
+
return this.value
|
717 |
+
},
|
718 |
+
set: function(t) {
|
719 |
+
this.$emit("input", t)
|
720 |
+
}
|
721 |
+
}
|
722 |
+
},
|
723 |
+
methods: {
|
724 |
+
titleClass: function(t) {
|
725 |
+
var e = "mo2f-setup-styled-radio";
|
726 |
+
return this.isChecked(t) && (e += " mo2f-setup-styled-radio-checked"), e
|
727 |
+
},
|
728 |
+
labelClass: function(t) {
|
729 |
+
var e = "";
|
730 |
+
return this.isChecked(t.value) && (e += " mo2f-setup-styled-radio-label-checked"), t.disabled && (e += " mo2f-setup-styled-radio-label-disabled"), t.readonly && (e += " mo2f-setup-styled-radio-label-readonly"), e
|
731 |
+
},
|
732 |
+
isChecked: function(t) {
|
733 |
+
return t === this.selectedImport
|
734 |
+
},
|
735 |
+
clicked: function(t) {
|
736 |
+
t.disabled && this.$emit("clicked-disabled", t)
|
737 |
+
}
|
738 |
+
}
|
739 |
+
},
|
740 |
+
R = H,
|
741 |
+
G = (i("8cbb"), Object(_["a"])(R, W, U, !1, null, "1652957d", null)),
|
742 |
+
V = G.exports,
|
743 |
+
Y = function() {
|
744 |
+
var t = this,
|
745 |
+
e = t.$createElement,
|
746 |
+
i = t._self._c || e;
|
747 |
+
return i("p", {
|
748 |
+
staticClass: "mo2f-setup-setup-wizard-step-count"
|
749 |
+
}, [t._v(" " + t._s(t.stepValue) + " ")])
|
750 |
+
},
|
751 |
+
J = [],
|
752 |
+
K = {
|
753 |
+
name: "TheWizardStepCounter",
|
754 |
+
computed: {
|
755 |
+
stepValue: function() {
|
756 |
+
var t = this,
|
757 |
+
e = this.$wizard_steps.findIndex((function(e) {
|
758 |
+
return t.$route.name.includes(e)
|
759 |
+
})) + 1;
|
760 |
+
return Object(c["c"])(Object(c["a"])("Step %1$s of %2$s", "mo2f-setup"), e, this.$wizard_steps.length)
|
761 |
+
}
|
762 |
+
}
|
763 |
+
},
|
764 |
+
q = K,
|
765 |
+
Z = (i("1f7f"), Object(_["a"])(q, Y, J, !1, null, "44fd4a93", null)),
|
766 |
+
X = Z.exports,
|
767 |
+
$ = {
|
768 |
+
name: "WizardStepImport",
|
769 |
+
components: {
|
770 |
+
SettingsInputRadiosWithIcons: V,
|
771 |
+
ContentHeader: h,
|
772 |
+
TheWizardStepCounter: X
|
773 |
+
},
|
774 |
+
data: function() {
|
775 |
+
return {
|
776 |
+
text_header_title: Object(c["a"])("Import data from your current plugins", "mo2f-setup"),
|
777 |
+
text_header_subtitle: Object(c["a"])("We have detected other 2FA plugins installed on your website. Select which plugin's data you would like to import to miniOrange 2-Factor authentication.", "mo2f-setup"),
|
778 |
+
text_save: Object(c["a"])("Import Data and Continue", "mo2f-setup"),
|
779 |
+
text_skip: Object(c["a"])("Skip this Step", "mo2f-setup"),
|
780 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup"),
|
781 |
+
options: [{
|
782 |
+
value: "easy-smtp",
|
783 |
+
label: Object(c["a"])("Wordfence", "mo2f-setup"),
|
784 |
+
// logo: i("8d41"),
|
785 |
+
// disabled: !this.$wpms.other_2FA_plugins.includes("easy-smtp"),
|
786 |
+
// readonly: !this.$wpms.other_2FA_plugins.includes("easy-smtp")
|
787 |
+
}, {
|
788 |
+
value: "post-smtp-mailer",
|
789 |
+
label: Object(c["a"])("WP 2FA", "mo2f-setup"),
|
790 |
+
//logo: i("8888"),
|
791 |
+
// disabled: !this.$wpms.other_2FA_plugins.includes("post-smtp-mailer"),
|
792 |
+
// readonly: !this.$wpms.other_2FA_plugins.includes("post-smtp-mailer")
|
793 |
+
}, {
|
794 |
+
value: "smtp-mailer",
|
795 |
+
label: Object(c["a"])("Two Factor authentication", "mo2f-setup"),
|
796 |
+
//logo: i("29b8"),
|
797 |
+
// disabled: !this.$wpms.other_2FA_plugins.includes("smtp-mailer"),
|
798 |
+
// readonly: !this.$wpms.other_2FA_plugins.includes("smtp-mailer")
|
799 |
+
}, {
|
800 |
+
value: "wp-smtp",
|
801 |
+
label: Object(c["a"])("Google Authenticator", "mo2f-setup"),
|
802 |
+
//logo: i("b98f"),
|
803 |
+
// disabled: !this.$wpms.other_2FA_plugins.includes("wp-smtp"),
|
804 |
+
// readonly: !this.$wpms.other_2FA_plugins.includes("wp-smtp")
|
805 |
+
}],
|
806 |
+
selectedImport: null
|
807 |
+
}
|
808 |
+
},
|
809 |
+
methods: {
|
810 |
+
handleSubmit: function() {
|
811 |
+
var t = this;
|
812 |
+
null !== this.selectedImport && (this.$store.dispatch("$_app/start_loading"), this.$store.dispatch("$_settings/importOtherPlugin", {
|
813 |
+
value: this.selectedImport
|
814 |
+
}).then((function(e) {
|
815 |
+
e ? t.nextStep() : t.$wpms_error_toast({})
|
816 |
+
})).finally((function() {
|
817 |
+
t.$store.dispatch("$_app/stop_loading")
|
818 |
+
})))
|
819 |
+
},
|
820 |
+
nextStep: function() {
|
821 |
+
this.$next_step()
|
822 |
+
},
|
823 |
+
previousStep: function() {
|
824 |
+
this.$previous_step()
|
825 |
+
}
|
826 |
+
}
|
827 |
+
},
|
828 |
+
tt = $,
|
829 |
+
et = Object(_["a"])(tt, Q, L, !1, null, null, null),
|
830 |
+
it = et.exports,
|
831 |
+
st = function() {
|
832 |
+
var t = this,
|
833 |
+
e = t.$createElement,
|
834 |
+
s = t._self._c || e;
|
835 |
+
return s("div", {
|
836 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-choose-mailer"
|
837 |
+
}, [s("div", {
|
838 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
839 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
840 |
+
attrs: {
|
841 |
+
title: t.text_header_title,
|
842 |
+
subtitle: t.text_header_subtitle
|
843 |
+
}
|
844 |
+
}), s("div", {
|
845 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
846 |
+
}, [s("form", [s("div", {
|
847 |
+
staticClass: "mo2f-setup-setup-wizard-form-row mo2f-setup-setup-wizard-form-row-highlight"
|
848 |
+
}, [s("h3", [t._v(t._s(t.text_recommended_mailers))]), s("settings-input-radios-with-icons", {
|
849 |
+
attrs: {
|
850 |
+
name: "choose_mailer",
|
851 |
+
options: t.recommended_options
|
852 |
+
},
|
853 |
+
model: {
|
854 |
+
value: t.selectedMailer,
|
855 |
+
callback: function(e) {
|
856 |
+
t.selectedMailer = e
|
857 |
+
},
|
858 |
+
expression: "selectedMailer"
|
859 |
+
}
|
860 |
+
})], 1), s("div", {
|
861 |
+
staticClass: "mo2f-setup-setup-wizard-form-row"
|
862 |
+
}, [s("settings-input-radios-with-icons", {
|
863 |
+
attrs: {
|
864 |
+
name: "choose_mailer",
|
865 |
+
options: t.options
|
866 |
+
},
|
867 |
+
on: {
|
868 |
+
"clicked-disabled": t.clickedDisabledOption
|
869 |
+
},
|
870 |
+
model: {
|
871 |
+
value: t.selectedMailer,
|
872 |
+
callback: function(e) {
|
873 |
+
t.selectedMailer = e
|
874 |
+
},
|
875 |
+
expression: "selectedMailer"
|
876 |
+
}
|
877 |
+
})], 1)])])], 1), s("div", {
|
878 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
879 |
+
}), s("div", {
|
880 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
881 |
+
}, [s("a", {
|
882 |
+
attrs: {
|
883 |
+
href: "#"
|
884 |
+
},
|
885 |
+
on: {
|
886 |
+
click: function(e) {
|
887 |
+
return e.preventDefault(), t.previousStep(e)
|
888 |
+
}
|
889 |
+
}
|
890 |
+
}, [s("span", {
|
891 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
892 |
+
}, [s("inline-svg", {
|
893 |
+
staticClass: "icon",
|
894 |
+
attrs: {
|
895 |
+
src: i("1fa5"),
|
896 |
+
width: "16",
|
897 |
+
height: "18"
|
898 |
+
}
|
899 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
900 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
901 |
+
}, [s("button", {
|
902 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
903 |
+
attrs: {
|
904 |
+
type: "submit",
|
905 |
+
name: "next_step",
|
906 |
+
disabled: null === t.selectedMailer
|
907 |
+
},
|
908 |
+
on: {
|
909 |
+
click: function(e) {
|
910 |
+
return e.preventDefault(), t.handleSubmit(e)
|
911 |
+
}
|
912 |
+
}
|
913 |
+
}, [s("span", {
|
914 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
915 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
916 |
+
staticClass: "icon",
|
917 |
+
attrs: {
|
918 |
+
src: i("107e"),
|
919 |
+
width: "16",
|
920 |
+
height: "19"
|
921 |
+
}
|
922 |
+
})], 1)])])])])
|
923 |
+
},
|
924 |
+
at = [],
|
925 |
+
nt = (i("99af"), i("7db0"), i("ac1f"), i("5319"), i("2f62")),
|
926 |
+
ot = {
|
927 |
+
name: "WizardStepChooseMailer",
|
928 |
+
components: {
|
929 |
+
SettingsInputRadiosWithIcons: V,
|
930 |
+
ContentHeader: h,
|
931 |
+
TheWizardStepCounter: X
|
932 |
+
},
|
933 |
+
data: function() {
|
934 |
+
return {
|
935 |
+
text_header_title: Object(c["a"])("Choose Your 2FA method", "mo2f-setup"),
|
936 |
+
text_header_subtitle: Object(c["c"])(Object(c["a"])("Which method would you like to use for 2-factor authentication? Not sure which method to choose? Reach out to us", "mo2f-setup"), '<a href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" target="_blank" rel="noopener noreferrer">', "</a>"),
|
937 |
+
text_save: Object(c["a"])("Save and Continue", "mo2f-setup"),
|
938 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup"),
|
939 |
+
text_recommended_mailers: Object(c["a"])("Recommended Methods", "mo2f-setup"),
|
940 |
+
// recommended_options: [{
|
941 |
+
// value: "smtpcom",
|
942 |
+
// label: this.$wpms.mailer_options["smtpcom"].title,
|
943 |
+
// logo: i("78cb")
|
944 |
+
// }, {
|
945 |
+
// value: "sendinblue",
|
946 |
+
// label: this.$wpms.mailer_options["sendinblue"].title,
|
947 |
+
// logo: i("7f3e")
|
948 |
+
// }],
|
949 |
+
// options: [{
|
950 |
+
// value: "mailgun",
|
951 |
+
// label: this.$wpms.mailer_options["mailgun"].title,
|
952 |
+
// logo: i("776b")
|
953 |
+
// }, {
|
954 |
+
// value: "sendgrid",
|
955 |
+
// label: this.$wpms.mailer_options["sendgrid"].title,
|
956 |
+
// logo: i("b1c2")
|
957 |
+
// }, {
|
958 |
+
// value: "gmail",
|
959 |
+
// label: this.$wpms.mailer_options["gmail"].title,
|
960 |
+
// logo: i("ddc9"),
|
961 |
+
// notice: this.$wpms.mailer_options["gmail"].edu_notice
|
962 |
+
// }, {
|
963 |
+
// value: "amazonses",
|
964 |
+
// label: this.$wpms.mailer_options["amazonses"].title,
|
965 |
+
// logo: i("7de8"),
|
966 |
+
// disabled: !this.$wpms.is_pro,
|
967 |
+
// is_pro: !this.$wpms.is_pro,
|
968 |
+
// notice: this.$wpms.mailer_options["amazonses"].edu_notice
|
969 |
+
// }, {
|
970 |
+
// value: "outlook",
|
971 |
+
// label: this.$wpms.mailer_options["outlook"].title,
|
972 |
+
// logo: i("2db4"),
|
973 |
+
// disabled: !this.$wpms.is_pro,
|
974 |
+
// is_pro: !this.$wpms.is_pro,
|
975 |
+
// notice: this.$wpms.mailer_options["outlook"].edu_notice
|
976 |
+
// }, {
|
977 |
+
// value: "zoho",
|
978 |
+
// label: this.$wpms.mailer_options["zoho"].title,
|
979 |
+
// logo: i("2bc2"),
|
980 |
+
// disabled: !this.$wpms.is_pro,
|
981 |
+
// is_pro: !this.$wpms.is_pro
|
982 |
+
// }, {
|
983 |
+
// value: "smtp",
|
984 |
+
// label: this.$wpms.mailer_options["smtp"].title,
|
985 |
+
// logo: i("5f30")
|
986 |
+
// }],
|
987 |
+
// selectedMailer: this.currentMailer
|
988 |
+
}
|
989 |
+
},
|
990 |
+
watch: {
|
991 |
+
currentMailer: function(t) {
|
992 |
+
this.selectedMailer = t
|
993 |
+
}
|
994 |
+
},
|
995 |
+
computed: Object(n["a"])(Object(n["a"])({}, Object(nt["b"])({
|
996 |
+
currentMailer: "$_settings/mailer"
|
997 |
+
})), {}, {
|
998 |
+
selectedMailerOptions: function() {
|
999 |
+
var t = this;
|
1000 |
+
return this.recommended_options.concat(this.options).find((function(e) {
|
1001 |
+
return e.value === t.selectedMailer
|
1002 |
+
}))
|
1003 |
+
}
|
1004 |
+
}),
|
1005 |
+
methods: {
|
1006 |
+
handleSubmit: function(t) {
|
1007 |
+
var e = this,
|
1008 |
+
i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
|
1009 |
+
null !== this.selectedMailer && (void 0 === this.selectedMailerOptions.notice || i ? (this.$store.dispatch("$_app/start_loading"), this.$store.dispatch("$_settings/updateSettings", {
|
1010 |
+
value: {
|
1011 |
+
mail: {
|
1012 |
+
mailer: this.selectedMailer
|
1013 |
+
}
|
1014 |
+
}
|
1015 |
+
}).then((function(t) {
|
1016 |
+
t.success ? (e.$store.dispatch("$_settings/setMailer", e.selectedMailer), e.nextStep()) : e.$wpms_error_toast({})
|
1017 |
+
})).finally((function() {
|
1018 |
+
e.$store.dispatch("$_app/stop_loading")
|
1019 |
+
}))) : this.$swal({
|
1020 |
+
title: this.selectedMailerOptions.label + " " + Object(c["a"])("Mailer", "mo2f-setup"),
|
1021 |
+
html: this.selectedMailerOptions.notice,
|
1022 |
+
width: 650,
|
1023 |
+
showCloseButton: !0,
|
1024 |
+
allowOutsideClick: !1,
|
1025 |
+
allowEscapeKey: !1,
|
1026 |
+
allowEnterKey: !1,
|
1027 |
+
customClass: {
|
1028 |
+
container: "mo2f-setup-swal"
|
1029 |
+
},
|
1030 |
+
confirmButtonText: Object(c["a"])("I Understand, Continue", "mo2f-setup"),
|
1031 |
+
cancelButtonText: Object(c["a"])("Choose a Different Mailer", "mo2f-setup"),
|
1032 |
+
showCancelButton: !0,
|
1033 |
+
reverseButtons: !0
|
1034 |
+
}).then((function(t) {
|
1035 |
+
t.value ? e.handleSubmit(null, !0) : void 0 !== t.dismiss && "cancel" === t.dismiss && (e.selectedMailer = null)
|
1036 |
+
})))
|
1037 |
+
},
|
1038 |
+
nextStep: function() {
|
1039 |
+
var t = this,
|
1040 |
+
e = this.$wizard_steps.findIndex((function(e) {
|
1041 |
+
return t.$route.name.includes(e)
|
1042 |
+
})) + 1;
|
1043 |
+
this.$router.push({
|
1044 |
+
name: "".concat(this.$wizard_steps[e], "_").concat(this.selectedMailer)
|
1045 |
+
})
|
1046 |
+
},
|
1047 |
+
previousStep: function() {
|
1048 |
+
this.$previous_step()
|
1049 |
+
},
|
1050 |
+
clickedDisabledOption: function(t) {
|
1051 |
+
this.$swal({
|
1052 |
+
title: t.label + " " + Object(c["a"])("is a PRO Feature", "mo2f-setup"),
|
1053 |
+
html: "<p>".concat(this.$wpms.education.upgrade_text.replace("%mailer%", t.label), '</p>\n\t\t\t\t\t\t<p><a href="').concat(this.$wpms.education.upgrade_url + "&utm_content=" + t.value, '" class="mo2f-setup-button mo2f-setup-button-small mo2f-setup-button-main" target="_blank" rel="noopener noreferrer">').concat(this.$wpms.education.upgrade_button, '</a></p>\n\t\t\t\t\t\t<p class="upgrade-bonus"><span class="icon-container"><svg data-v-6d7a07a8="" viewBox="0 0 512 512" role="img" class="icon" data-icon="check" data-prefix="fas" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span>').concat(this.$wpms.education.upgrade_bonus, "</p>\n\t\t\t\t\t\t<p>").concat(this.$wpms.education.upgrade_doc, "</p>"),
|
1054 |
+
width: 550,
|
1055 |
+
imageUrl: i("b32f"),
|
1056 |
+
imageWidth: 31,
|
1057 |
+
imageHeight: 35,
|
1058 |
+
showCloseButton: !0,
|
1059 |
+
customClass: {
|
1060 |
+
container: "mo2f-setup-swal mo2f-setup-upgrade-popup"
|
1061 |
+
},
|
1062 |
+
showConfirmButton: !1
|
1063 |
+
})
|
1064 |
+
}
|
1065 |
+
},
|
1066 |
+
mounted: function() {
|
1067 |
+
this.selectedMailer = this.currentMailer
|
1068 |
+
}
|
1069 |
+
},
|
1070 |
+
rt = ot,
|
1071 |
+
lt = Object(_["a"])(rt, st, at, !1, null, null, null),
|
1072 |
+
ct = lt.exports,
|
1073 |
+
pt = function() {
|
1074 |
+
var t = this,
|
1075 |
+
e = t.$createElement,
|
1076 |
+
s = t._self._c || e;
|
1077 |
+
return s("div", {
|
1078 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-configure-mailer"
|
1079 |
+
}, [s("div", {
|
1080 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
1081 |
+
}, [s("div", {
|
1082 |
+
staticClass: "mo2f-setup-configure-mailer-header"
|
1083 |
+
}, [s("div", {
|
1084 |
+
staticClass: "mo2f-setup-configure-mailer-header-container"
|
1085 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
1086 |
+
attrs: {
|
1087 |
+
title: t.text_header_title,
|
1088 |
+
subtitle: t.text_header_subtitle
|
1089 |
+
}
|
1090 |
+
})], 1), s("span", {
|
1091 |
+
staticClass: "mo2f-setup-configure-mailer-logo"
|
1092 |
+
}, [s("inline-svg", {
|
1093 |
+
attrs: {
|
1094 |
+
src: t.logo(t.mailer),
|
1095 |
+
height: "40"
|
1096 |
+
}
|
1097 |
+
})], 1)]), s("div", {
|
1098 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
1099 |
+
}), s("router-view", {
|
1100 |
+
ref: "mailerConfiguration"
|
1101 |
+
})], 1), s("div", {
|
1102 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
1103 |
+
}), s("div", {
|
1104 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
1105 |
+
}, [s("a", {
|
1106 |
+
attrs: {
|
1107 |
+
href: "#"
|
1108 |
+
},
|
1109 |
+
on: {
|
1110 |
+
click: function(e) {
|
1111 |
+
return e.preventDefault(), t.previousStep(e)
|
1112 |
+
}
|
1113 |
+
}
|
1114 |
+
}, [s("span", {
|
1115 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
1116 |
+
}, [s("inline-svg", {
|
1117 |
+
staticClass: "icon",
|
1118 |
+
attrs: {
|
1119 |
+
src: i("1fa5"),
|
1120 |
+
width: "16",
|
1121 |
+
height: "18"
|
1122 |
+
}
|
1123 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
1124 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
1125 |
+
}, [s("button", {
|
1126 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
1127 |
+
attrs: {
|
1128 |
+
type: "submit",
|
1129 |
+
name: "next_step",
|
1130 |
+
disabled: null === t.mailer || !0 === t.blocked_step
|
1131 |
+
},
|
1132 |
+
on: {
|
1133 |
+
click: function(e) {
|
1134 |
+
return e.preventDefault(), t.handleSubmit(e)
|
1135 |
+
}
|
1136 |
+
}
|
1137 |
+
}, [s("span", {
|
1138 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
1139 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
1140 |
+
staticClass: "icon",
|
1141 |
+
attrs: {
|
1142 |
+
src: i("107e"),
|
1143 |
+
width: "16",
|
1144 |
+
height: "19"
|
1145 |
+
}
|
1146 |
+
})], 1)])])])])
|
1147 |
+
},
|
1148 |
+
mt = [],
|
1149 |
+
ut = i("5935"),
|
1150 |
+
dt = {
|
1151 |
+
name: "WizardStepConfigureMailer",
|
1152 |
+
components: {
|
1153 |
+
ContentHeader: h,
|
1154 |
+
TheWizardStepCounter: X
|
1155 |
+
},
|
1156 |
+
data: function() {
|
1157 |
+
return {
|
1158 |
+
text_header_title: Object(c["a"])("Configure Mailer Settings", "mo2f-setup"),
|
1159 |
+
text_header_subtitle: Object(c["a"])("Below, we'll show you all of the settings required to set up this mailer.", "mo2f-setup"),
|
1160 |
+
text_save: Object(c["a"])("Save and Continue", "mo2f-setup"),
|
1161 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup")
|
1162 |
+
}
|
1163 |
+
},
|
1164 |
+
computed: Object(n["a"])(Object(n["a"])({}, Object(nt["b"])({
|
1165 |
+
mailer: "$_settings/mailer"
|
1166 |
+
})), Object(ut["b"])("$_wizard", ["blocked_step"])),
|
1167 |
+
methods: {
|
1168 |
+
handleSubmit: function() {
|
1169 |
+
var t = this;
|
1170 |
+
return !this.blocked_step && (this.$refs.mailerConfiguration.areRequiredFieldsValid() ? (this.$store.dispatch("$_app/start_loading"), void this.$store.dispatch("$_settings/saveCurrentSettings").then((function(e) {
|
1171 |
+
e.success ? t.$next_step() : t.$wpms_error_toast({})
|
1172 |
+
})).finally((function() {
|
1173 |
+
t.$store.dispatch("$_app/stop_loading")
|
1174 |
+
}))) : (this.$required_fields_modal(), !1))
|
1175 |
+
},
|
1176 |
+
previousStep: function() {
|
1177 |
+
this.blocked_step = !1, this.$previous_step()
|
1178 |
+
},
|
1179 |
+
logo: function(t) {
|
1180 |
+
return t = "mail" === t ? "smtp" : t, i("31f1")("./".concat(t, ".svg"))
|
1181 |
+
}
|
1182 |
+
}
|
1183 |
+
},
|
1184 |
+
_t = dt,
|
1185 |
+
ft = Object(_["a"])(_t, pt, mt, !1, null, null, null),
|
1186 |
+
ht = ft.exports,
|
1187 |
+
gt = function() {
|
1188 |
+
var t = this,
|
1189 |
+
e = t.$createElement,
|
1190 |
+
s = t._self._c || e;
|
1191 |
+
return s("div", {
|
1192 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-plugin-features"
|
1193 |
+
}, [s("div", {
|
1194 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
1195 |
+
}, [s("div", {
|
1196 |
+
staticClass: "mo2f-setup-plugin-features-header"
|
1197 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
1198 |
+
attrs: {
|
1199 |
+
title: t.text_header_title,
|
1200 |
+
subtitle: t.text_header_subtitle
|
1201 |
+
}
|
1202 |
+
})], 1), s("div", {
|
1203 |
+
staticClass: "mo2f-setup-plugin-features-list"
|
1204 |
+
}, [s("settings-input-long-checkbox", {
|
1205 |
+
attrs: {
|
1206 |
+
value: !0,
|
1207 |
+
name: "improved_deliverability",
|
1208 |
+
label: t.text_improved_email_deliverability,
|
1209 |
+
description: t.text_improved_email_deliverability_desc,
|
1210 |
+
disabled: ""
|
1211 |
+
}
|
1212 |
+
}), s("settings-input-long-checkbox", {
|
1213 |
+
attrs: {
|
1214 |
+
value: !0,
|
1215 |
+
name: "error_tracking",
|
1216 |
+
label: t.text_error_tracking,
|
1217 |
+
description: t.text_error_tracking_desc,
|
1218 |
+
disabled: ""
|
1219 |
+
}
|
1220 |
+
}), t.contact_form_already_installed ? t._e() : s("settings-input-long-checkbox", {
|
1221 |
+
attrs: {
|
1222 |
+
name: "smart_contact_form",
|
1223 |
+
label: t.text_smart_contact_form,
|
1224 |
+
description: t.text_smart_contact_form_desc
|
1225 |
+
},
|
1226 |
+
model: {
|
1227 |
+
value: t.smart_contact_form,
|
1228 |
+
callback: function(e) {
|
1229 |
+
t.smart_contact_form = e
|
1230 |
+
},
|
1231 |
+
expression: "smart_contact_form"
|
1232 |
+
}
|
1233 |
+
}), s("settings-input-long-checkbox", {
|
1234 |
+
attrs: {
|
1235 |
+
name: "email_log",
|
1236 |
+
label: t.text_email_log,
|
1237 |
+
description: t.text_email_log_desc,
|
1238 |
+
show_pro: !t.is_pro
|
1239 |
+
},
|
1240 |
+
model: {
|
1241 |
+
value: t.email_log,
|
1242 |
+
callback: function(e) {
|
1243 |
+
t.email_log = e
|
1244 |
+
},
|
1245 |
+
expression: "email_log"
|
1246 |
+
}
|
1247 |
+
}), t.is_pro ? t._e() : s("settings-input-long-checkbox", {
|
1248 |
+
attrs: {
|
1249 |
+
name: "manage_notifications",
|
1250 |
+
label: t.text_manage_notifications,
|
1251 |
+
description: t.text_manage_notifications_desc,
|
1252 |
+
show_pro: !t.is_pro
|
1253 |
+
},
|
1254 |
+
model: {
|
1255 |
+
value: t.manage_notifications,
|
1256 |
+
callback: function(e) {
|
1257 |
+
t.manage_notifications = e
|
1258 |
+
},
|
1259 |
+
expression: "manage_notifications"
|
1260 |
+
}
|
1261 |
+
}), t.is_multisite && !t.is_pro ? s("settings-input-long-checkbox", {
|
1262 |
+
attrs: {
|
1263 |
+
name: "network_settings",
|
1264 |
+
label: t.text_network_settings,
|
1265 |
+
description: t.text_network_settings_desc,
|
1266 |
+
show_pro: !t.is_pro
|
1267 |
+
},
|
1268 |
+
model: {
|
1269 |
+
value: t.network_settings,
|
1270 |
+
callback: function(e) {
|
1271 |
+
t.network_settings = e
|
1272 |
+
},
|
1273 |
+
expression: "network_settings"
|
1274 |
+
}
|
1275 |
+
}) : t._e()], 1)]), s("div", {
|
1276 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
1277 |
+
}), s("div", {
|
1278 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
1279 |
+
}, [s("a", {
|
1280 |
+
attrs: {
|
1281 |
+
href: "#"
|
1282 |
+
},
|
1283 |
+
on: {
|
1284 |
+
click: function(e) {
|
1285 |
+
return e.preventDefault(), t.previousStep(e)
|
1286 |
+
}
|
1287 |
+
}
|
1288 |
+
}, [s("span", {
|
1289 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
1290 |
+
}, [s("inline-svg", {
|
1291 |
+
staticClass: "icon",
|
1292 |
+
attrs: {
|
1293 |
+
src: i("1fa5"),
|
1294 |
+
width: "16",
|
1295 |
+
height: "18"
|
1296 |
+
}
|
1297 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
1298 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
1299 |
+
}, [s("button", {
|
1300 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
1301 |
+
attrs: {
|
1302 |
+
type: "submit",
|
1303 |
+
name: "next_step"
|
1304 |
+
},
|
1305 |
+
on: {
|
1306 |
+
click: function(e) {
|
1307 |
+
return e.preventDefault(), t.handleSubmit(e)
|
1308 |
+
}
|
1309 |
+
}
|
1310 |
+
}, [s("span", {
|
1311 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
1312 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
1313 |
+
staticClass: "icon",
|
1314 |
+
attrs: {
|
1315 |
+
src: i("107e"),
|
1316 |
+
width: "16",
|
1317 |
+
height: "19"
|
1318 |
+
}
|
1319 |
+
})], 1)])])])])
|
1320 |
+
},
|
1321 |
+
wt = [],
|
1322 |
+
bt = (i("4de4"), function() {
|
1323 |
+
var t = this,
|
1324 |
+
e = t.$createElement,
|
1325 |
+
s = t._self._c || e;
|
1326 |
+
return s("label", {
|
1327 |
+
staticClass: "settings-input-long-checkbox",
|
1328 |
+
class: {
|
1329 |
+
"settings-input-long-checkbox-checked": t.value, "settings-input-long-checkbox-disabled": t.disabled
|
1330 |
+
},
|
1331 |
+
attrs: {
|
1332 |
+
for: "mo2f-setup-settings-long-checkbox-" + t.name
|
1333 |
+
}
|
1334 |
+
}, [s("div", {
|
1335 |
+
staticClass: "settings-input-long-checkbox-header"
|
1336 |
+
}, [s("span", {
|
1337 |
+
staticClass: "title-container"
|
1338 |
+
}, [s("span", {
|
1339 |
+
staticClass: "label",
|
1340 |
+
domProps: {
|
1341 |
+
innerHTML: t._s(t.label)
|
1342 |
+
}
|
1343 |
+
}), t.show_pro ? s("inline-svg", {
|
1344 |
+
staticClass: "mo2f-setup-pro-badge",
|
1345 |
+
attrs: {
|
1346 |
+
src: i("87eb"),
|
1347 |
+
width: "46",
|
1348 |
+
height: "24"
|
1349 |
+
}
|
1350 |
+
}) : t._e()], 1), t.description ? s("p", {
|
1351 |
+
staticClass: "description",
|
1352 |
+
domProps: {
|
1353 |
+
innerHTML: t._s(t.description)
|
1354 |
+
}
|
1355 |
+
}) : t._e()]), s("span", {
|
1356 |
+
staticClass: "settings-input-long-checkbox-container"
|
1357 |
+
}, [s("span", {
|
1358 |
+
staticClass: "checkbox",
|
1359 |
+
class: {
|
1360 |
+
"checkbox-checked": t.value, "checkbox-disabled": t.disabled
|
1361 |
+
}
|
1362 |
+
}, [s("inline-svg", {
|
1363 |
+
staticClass: "icon",
|
1364 |
+
attrs: {
|
1365 |
+
src: i("3af1"),
|
1366 |
+
width: "16",
|
1367 |
+
height: "16"
|
1368 |
+
}
|
1369 |
+
})], 1), s("input", {
|
1370 |
+
attrs: {
|
1371 |
+
id: "mo2f-setup-settings-long-checkbox-" + t.name,
|
1372 |
+
type: "checkbox",
|
1373 |
+
name: t.name,
|
1374 |
+
disabled: t.disabled
|
1375 |
+
},
|
1376 |
+
domProps: {
|
1377 |
+
checked: t.value
|
1378 |
+
},
|
1379 |
+
on: {
|
1380 |
+
input: function(e) {
|
1381 |
+
return t.$emit("input", e.target.checked)
|
1382 |
+
}
|
1383 |
+
}
|
1384 |
+
})])])
|
1385 |
+
}),
|
1386 |
+
At = [],
|
1387 |
+
vt = {
|
1388 |
+
name: "SettingsInputLongCheckbox",
|
1389 |
+
props: {
|
1390 |
+
label: String,
|
1391 |
+
name: String,
|
1392 |
+
value: Boolean,
|
1393 |
+
description: String,
|
1394 |
+
disabled: Boolean,
|
1395 |
+
show_pro: Boolean
|
1396 |
+
}
|
1397 |
+
},
|
1398 |
+
xt = vt,
|
1399 |
+
yt = Object(_["a"])(xt, bt, At, !1, null, null, null),
|
1400 |
+
Ct = yt.exports,
|
1401 |
+
kt = {
|
1402 |
+
name: "WizardStepPluginFeatures",
|
1403 |
+
components: {
|
1404 |
+
ContentHeader: h,
|
1405 |
+
TheWizardStepCounter: X,
|
1406 |
+
SettingsInputLongCheckbox: Ct
|
1407 |
+
},
|
1408 |
+
data: function() {
|
1409 |
+
return {
|
1410 |
+
text_header_title: Object(c["a"])("Which email features do you want to enable?", "mo2f-setup"),
|
1411 |
+
text_header_subtitle: Object(c["a"])("Make sure you're getting the most out of WP Mail SMTP. Just check all of the features you'd like to use, and we'll go ahead and enable those for you.", "mo2f-setup"),
|
1412 |
+
text_save: Object(c["a"])("Save and Continue", "mo2f-setup"),
|
1413 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup"),
|
1414 |
+
text_improved_email_deliverability: Object(c["a"])("Improved Email Deliverability", "mo2f-setup"),
|
1415 |
+
text_improved_email_deliverability_desc: Object(c["a"])("Ensure your emails are sent successfully and reliably.", "mo2f-setup"),
|
1416 |
+
text_error_tracking: Object(c["a"])("Email Error Tracking", "mo2f-setup"),
|
1417 |
+
text_error_tracking_desc: Object(c["a"])("Easily spot errors causing delivery issues.", "mo2f-setup"),
|
1418 |
+
text_smart_contact_form: Object(c["a"])("Smart Contact Form", "mo2f-setup"),
|
1419 |
+
text_smart_contact_form_desc: Object(c["a"])("Create beautiful contact forms with just a few clicks.", "mo2f-setup"),
|
1420 |
+
text_email_log: Object(c["a"])("Detailed Email Logs", "mo2f-setup"),
|
1421 |
+
text_email_log_desc: Object(c["a"])("Keep records of every email that's sent out from your website.", "mo2f-setup"),
|
1422 |
+
text_manage_notifications: Object(c["a"])("Manage Default Notifications", "mo2f-setup"),
|
1423 |
+
text_manage_notifications_desc: Object(c["a"])("Control which email notifications your WordPress site sends.", "mo2f-setup"),
|
1424 |
+
text_network_settings: Object(c["a"])("Multisite Network Settings", "mo2f-setup"),
|
1425 |
+
text_network_settings_desc: Object(c["a"])("Save time with powerful WordPress Multisite controls.", "mo2f-setup"),
|
1426 |
+
is_pro: this.$wpms.is_pro,
|
1427 |
+
is_multisite: this.$wpms.is_multisite,
|
1428 |
+
email_log: !1,
|
1429 |
+
manage_notifications: !1,
|
1430 |
+
network_settings: !1
|
1431 |
+
}
|
1432 |
+
},
|
1433 |
+
computed: Object(n["a"])(Object(n["a"])({}, Object(nt["b"])({
|
1434 |
+
contact_form_already_installed: "$_plugins/contact_form_plugin_already_installed",
|
1435 |
+
email_log_setting: "$_settings/email_log_enabled"
|
1436 |
+
})), Object(ut["b"])("$_plugins", {
|
1437 |
+
smart_contact_form: "smart_contact_form_setting"
|
1438 |
+
})),
|
1439 |
+
watch: {
|
1440 |
+
smart_contact_form: function(t) {
|
1441 |
+
if (this.contact_form_already_installed) return !1;
|
1442 |
+
this.showWPFormsPluginInstallFooterNotice(t)
|
1443 |
+
},
|
1444 |
+
contact_form_already_installed: function(t) {
|
1445 |
+
t && this.$emit("displayContentBelow", "")
|
1446 |
+
},
|
1447 |
+
email_log_setting: function(t) {
|
1448 |
+
this.email_log = t
|
1449 |
+
}
|
1450 |
+
},
|
1451 |
+
methods: {
|
1452 |
+
handleSubmit: function() {
|
1453 |
+
var t = this;
|
1454 |
+
this.$store.dispatch("$_app/start_loading");
|
1455 |
+
var e = [];
|
1456 |
+
if (this.is_pro) {
|
1457 |
+
var i = {
|
1458 |
+
value: {
|
1459 |
+
logs: {
|
1460 |
+
enabled: this.email_log
|
1461 |
+
}
|
1462 |
+
}
|
1463 |
+
};
|
1464 |
+
e.push(this.$store.dispatch("$_settings/updateSettings", i)), e.push(this.$store.dispatch("$_settings/setLogs", this.email_log))
|
1465 |
+
}
|
1466 |
+
if (this.smart_contact_form && !this.contact_form_already_installed && e.push(this.$store.dispatch("$_plugins/installPlugin", "wpforms-lite")), !this.is_pro) {
|
1467 |
+
var s = [];
|
1468 |
+
this.email_log && s.push("email_log"), this.manage_notifications && s.push("manage_notifications"), this.network_settings && s.push("network_settings"), e.push(this.$store.dispatch("$_settings/savePluginFeatures", s))
|
1469 |
+
}
|
1470 |
+
Promise.all(e).then((function(e) {
|
1471 |
+
var i = e.filter((function(t) {
|
1472 |
+
return t.success
|
1473 |
+
}));
|
1474 |
+
i.length === e.length && (t.$emit("displayContentBelow", ""), t.$next_step())
|
1475 |
+
})).finally((function() {
|
1476 |
+
t.$store.dispatch("$_app/stop_loading")
|
1477 |
+
}))
|
1478 |
+
},
|
1479 |
+
previousStep: function() {
|
1480 |
+
var t = this;
|
1481 |
+
this.$emit("displayContentBelow", "");
|
1482 |
+
var e = this.$wizard_steps.findIndex((function(e) {
|
1483 |
+
return t.$route.name.includes(e)
|
1484 |
+
})) - 1;
|
1485 |
+
this.$router.push({
|
1486 |
+
name: "".concat(this.$wizard_steps[e], "_").concat(this.$store.getters["$_settings/mailer"])
|
1487 |
+
})
|
1488 |
+
},
|
1489 |
+
showWPFormsPluginInstallFooterNotice: function(t) {
|
1490 |
+
var e = t ? "<p> ".concat(Object(c["a"])("The following plugin will be installed for free: WPForms", "mo2f-setup"), "</p>") : "";
|
1491 |
+
this.$emit("displayContentBelow", e)
|
1492 |
+
}
|
1493 |
+
},
|
1494 |
+
mounted: function() {
|
1495 |
+
if (this.showWPFormsPluginInstallFooterNotice(this.smart_contact_form && !this.contact_form_already_installed), this.email_log = this.$store.getters["$_settings/email_log_enabled"], !this.$wpms.is_pro) {
|
1496 |
+
var t = this.$store.getters["$_settings/plugin_features"];
|
1497 |
+
t.includes("email_log") && (this.email_log = !0), t.includes("manage_notifications") && (this.manage_notifications = !0), t.includes("network_settings") && (this.network_settings = !0)
|
1498 |
+
}
|
1499 |
+
}
|
1500 |
+
},
|
1501 |
+
Ot = kt,
|
1502 |
+
jt = Object(_["a"])(Ot, gt, wt, !1, null, null, null),
|
1503 |
+
St = jt.exports,
|
1504 |
+
Pt = function() {
|
1505 |
+
var t = this,
|
1506 |
+
e = t.$createElement,
|
1507 |
+
s = t._self._c || e;
|
1508 |
+
return s("div", {
|
1509 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-help-improve"
|
1510 |
+
}, [s("div", {
|
1511 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
1512 |
+
}, [s("div", {
|
1513 |
+
staticClass: "mo2f-setup-help-improve-header"
|
1514 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
1515 |
+
attrs: {
|
1516 |
+
title: t.text_header_title,
|
1517 |
+
subtitle: t.text_header_subtitle
|
1518 |
+
}
|
1519 |
+
})], 1), s("settings-input-text", {
|
1520 |
+
attrs: {
|
1521 |
+
name: "email",
|
1522 |
+
type: "email",
|
1523 |
+
label: t.text_email_label,
|
1524 |
+
description: t.text_email_description
|
1525 |
+
},
|
1526 |
+
model: {
|
1527 |
+
value: t.email,
|
1528 |
+
callback: function(e) {
|
1529 |
+
t.email = e
|
1530 |
+
},
|
1531 |
+
expression: "email"
|
1532 |
+
}
|
1533 |
+
}), s("settings-input-checkbox", {
|
1534 |
+
attrs: {
|
1535 |
+
name: "usage_tracking",
|
1536 |
+
label: t.text_usage_tracking_label,
|
1537 |
+
description: t.text_usage_tracking_description,
|
1538 |
+
tooltip: t.text_usage_tracking_tooltip
|
1539 |
+
},
|
1540 |
+
model: {
|
1541 |
+
value: t.usage_tracking,
|
1542 |
+
callback: function(e) {
|
1543 |
+
t.usage_tracking = e
|
1544 |
+
},
|
1545 |
+
expression: "usage_tracking"
|
1546 |
+
}
|
1547 |
+
})], 1), s("div", {
|
1548 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
1549 |
+
}), s("div", {
|
1550 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
1551 |
+
}, [s("a", {
|
1552 |
+
attrs: {
|
1553 |
+
href: "#"
|
1554 |
+
},
|
1555 |
+
on: {
|
1556 |
+
click: function(e) {
|
1557 |
+
return e.preventDefault(), t.previousStep(e)
|
1558 |
+
}
|
1559 |
+
}
|
1560 |
+
}, [s("span", {
|
1561 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
1562 |
+
}, [s("inline-svg", {
|
1563 |
+
staticClass: "icon",
|
1564 |
+
attrs: {
|
1565 |
+
src: i("1fa5"),
|
1566 |
+
width: "16",
|
1567 |
+
height: "18"
|
1568 |
+
}
|
1569 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
1570 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
1571 |
+
}, [s("button", {
|
1572 |
+
staticClass: "mo2f-setup-button",
|
1573 |
+
attrs: {
|
1574 |
+
type: "button",
|
1575 |
+
name: "skip_step"
|
1576 |
+
},
|
1577 |
+
domProps: {
|
1578 |
+
textContent: t._s(t.text_skip)
|
1579 |
+
},
|
1580 |
+
on: {
|
1581 |
+
click: function(e) {
|
1582 |
+
return e.preventDefault(), t.nextStep(e)
|
1583 |
+
}
|
1584 |
+
}
|
1585 |
+
}), s("button", {
|
1586 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
1587 |
+
attrs: {
|
1588 |
+
type: "submit",
|
1589 |
+
name: "next_step"
|
1590 |
+
},
|
1591 |
+
on: {
|
1592 |
+
click: function(e) {
|
1593 |
+
return e.preventDefault(), t.handleSubmit(e)
|
1594 |
+
}
|
1595 |
+
}
|
1596 |
+
}, [s("span", {
|
1597 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
1598 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
1599 |
+
staticClass: "icon",
|
1600 |
+
attrs: {
|
1601 |
+
src: i("107e"),
|
1602 |
+
width: "16",
|
1603 |
+
height: "19"
|
1604 |
+
}
|
1605 |
+
})], 1)])])])])
|
1606 |
+
},
|
1607 |
+
Et = [],
|
1608 |
+
Tt = function() {
|
1609 |
+
var t = this,
|
1610 |
+
e = t.$createElement,
|
1611 |
+
s = t._self._c || e;
|
1612 |
+
return s("div", {
|
1613 |
+
staticClass: "settings-input-text",
|
1614 |
+
class: {
|
1615 |
+
"settings-input-text-with-copy": t.copy, "input-error": t.has_errors || t.field_error
|
1616 |
+
}
|
1617 |
+
}, [s("label", {
|
1618 |
+
staticClass: "settings-input-label-container",
|
1619 |
+
attrs: {
|
1620 |
+
for: t.id
|
1621 |
+
}
|
1622 |
+
}, [t.label ? s("span", {
|
1623 |
+
staticClass: "label",
|
1624 |
+
domProps: {
|
1625 |
+
innerHTML: t._s(t.label)
|
1626 |
+
}
|
1627 |
+
}) : t._e(), t.tooltip ? s("settings-info-tooltip", {
|
1628 |
+
attrs: {
|
1629 |
+
content: t.tooltip
|
1630 |
+
}
|
1631 |
+
}) : t._e()], 1), s("span", {
|
1632 |
+
staticClass: "settings-input-container"
|
1633 |
+
}, ["checkbox" === t.type ? s("input", {
|
1634 |
+
directives: [{
|
1635 |
+
name: "model",
|
1636 |
+
rawName: "v-model",
|
1637 |
+
value: t.currentValue,
|
1638 |
+
expression: "currentValue"
|
1639 |
+
}],
|
1640 |
+
ref: "input",
|
1641 |
+
attrs: {
|
1642 |
+
id: t.id,
|
1643 |
+
name: t.name,
|
1644 |
+
placeholder: t.placeholder,
|
1645 |
+
readonly: t.readonly,
|
1646 |
+
disabled: t.disabled,
|
1647 |
+
type: "checkbox"
|
1648 |
+
},
|
1649 |
+
domProps: {
|
1650 |
+
checked: Array.isArray(t.currentValue) ? t._i(t.currentValue, null) > -1 : t.currentValue
|
1651 |
+
},
|
1652 |
+
on: {
|
1653 |
+
change: [function(e) {
|
1654 |
+
var i = t.currentValue,
|
1655 |
+
s = e.target,
|
1656 |
+
a = !!s.checked;
|
1657 |
+
if (Array.isArray(i)) {
|
1658 |
+
var n = null,
|
1659 |
+
o = t._i(i, n);
|
1660 |
+
s.checked ? o < 0 && (t.currentValue = i.concat([n])) : o > -1 && (t.currentValue = i.slice(0, o).concat(i.slice(o + 1)))
|
1661 |
+
} else t.currentValue = a
|
1662 |
+
}, t.inputUpdate]
|
1663 |
+
}
|
1664 |
+
}) : "radio" === t.type ? s("input", {
|
1665 |
+
directives: [{
|
1666 |
+
name: "model",
|
1667 |
+
rawName: "v-model",
|
1668 |
+
value: t.currentValue,
|
1669 |
+
expression: "currentValue"
|
1670 |
+
}],
|
1671 |
+
ref: "input",
|
1672 |
+
attrs: {
|
1673 |
+
id: t.id,
|
1674 |
+
name: t.name,
|
1675 |
+
placeholder: t.placeholder,
|
1676 |
+
readonly: t.readonly,
|
1677 |
+
disabled: t.disabled,
|
1678 |
+
type: "radio"
|
1679 |
+
},
|
1680 |
+
domProps: {
|
1681 |
+
checked: t._q(t.currentValue, null)
|
1682 |
+
},
|
1683 |
+
on: {
|
1684 |
+
change: [function(e) {
|
1685 |
+
t.currentValue = null
|
1686 |
+
}, t.inputUpdate]
|
1687 |
+
}
|
1688 |
+
}) : s("input", {
|
1689 |
+
directives: [{
|
1690 |
+
name: "model",
|
1691 |
+
rawName: "v-model",
|
1692 |
+
value: t.currentValue,
|
1693 |
+
expression: "currentValue"
|
1694 |
+
}],
|
1695 |
+
ref: "input",
|
1696 |
+
attrs: {
|
1697 |
+
id: t.id,
|
1698 |
+
name: t.name,
|
1699 |
+
placeholder: t.placeholder,
|
1700 |
+
readonly: t.readonly,
|
1701 |
+
disabled: t.disabled,
|
1702 |
+
type: t.type
|
1703 |
+
},
|
1704 |
+
domProps: {
|
1705 |
+
value: t.currentValue
|
1706 |
+
},
|
1707 |
+
on: {
|
1708 |
+
change: t.inputUpdate,
|
1709 |
+
input: function(e) {
|
1710 |
+
e.target.composing || (t.currentValue = e.target.value)
|
1711 |
+
}
|
1712 |
+
}
|
1713 |
+
}), t.copy ? s("button", {
|
1714 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-small",
|
1715 |
+
class: {
|
1716 |
+
"mo2f-setup-button-copied": t.show_copied
|
1717 |
+
},
|
1718 |
+
attrs: {
|
1719 |
+
title: t.text_copy_button
|
1720 |
+
},
|
1721 |
+
on: {
|
1722 |
+
click: function(e) {
|
1723 |
+
return e.preventDefault(), t.copyValue(e)
|
1724 |
+
}
|
1725 |
+
}
|
1726 |
+
}, [s("span", {
|
1727 |
+
staticClass: "copy-button-container"
|
1728 |
+
}, [s("inline-svg", {
|
1729 |
+
staticClass: "icon",
|
1730 |
+
class: {
|
1731 |
+
active: !t.show_copied
|
1732 |
+
},
|
1733 |
+
attrs: {
|
1734 |
+
src: i("d51e"),
|
1735 |
+
width: "16",
|
1736 |
+
height: "16"
|
1737 |
+
}
|
1738 |
+
}), s("inline-svg", {
|
1739 |
+
staticClass: "icon copied",
|
1740 |
+
class: {
|
1741 |
+
active: t.show_copied
|
1742 |
+
},
|
1743 |
+
attrs: {
|
1744 |
+
src: i("e108"),
|
1745 |
+
width: "16",
|
1746 |
+
height: "16"
|
1747 |
+
}
|
1748 |
+
})], 1)]) : t._e()]), t.has_errors ? s("p", {
|
1749 |
+
staticClass: "error"
|
1750 |
+
}, [s("inline-svg", {
|
1751 |
+
staticClass: "icon",
|
1752 |
+
attrs: {
|
1753 |
+
src: i("827a"),
|
1754 |
+
width: "16"
|
1755 |
+
}
|
1756 |
+
}), s("span", {
|
1757 |
+
domProps: {
|
1758 |
+
innerHTML: t._s(t.text_error)
|
1759 |
+
}
|
1760 |
+
})], 1) : t._e(), t.description ? s("p", {
|
1761 |
+
staticClass: "description",
|
1762 |
+
domProps: {
|
1763 |
+
innerHTML: t._s(t.description)
|
1764 |
+
}
|
1765 |
+
}) : t._e()])
|
1766 |
+
},
|
1767 |
+
zt = [],
|
1768 |
+
Bt = (i("4d63"), i("25f0"), i("4795"), function() {
|
1769 |
+
var t = this,
|
1770 |
+
e = t.$createElement,
|
1771 |
+
s = t._self._c || e;
|
1772 |
+
return s("span", {
|
1773 |
+
directives: [{
|
1774 |
+
name: "tooltip",
|
1775 |
+
rawName: "v-tooltip",
|
1776 |
+
value: t.tooltip_data,
|
1777 |
+
expression: "tooltip_data"
|
1778 |
+
}],
|
1779 |
+
staticClass: "mo2f-setup-info",
|
1780 |
+
attrs: {
|
1781 |
+
tabindex: "0"
|
1782 |
+
}
|
1783 |
+
}, [s("inline-svg", {
|
1784 |
+
staticClass: "icon",
|
1785 |
+
attrs: {
|
1786 |
+
src: i("8475"),
|
1787 |
+
width: "14",
|
1788 |
+
height: "14"
|
1789 |
+
}
|
1790 |
+
})], 1)
|
1791 |
+
}),
|
1792 |
+
It = [],
|
1793 |
+
Mt = {
|
1794 |
+
name: "SettingsInfoTooltip",
|
1795 |
+
props: {
|
1796 |
+
content: String
|
1797 |
+
},
|
1798 |
+
data: function() {
|
1799 |
+
return {
|
1800 |
+
tooltip_data: {
|
1801 |
+
content: this.content,
|
1802 |
+
autoHide: !1,
|
1803 |
+
trigger: "hover focus click"
|
1804 |
+
}
|
1805 |
+
}
|
1806 |
+
}
|
1807 |
+
},
|
1808 |
+
Dt = Mt,
|
1809 |
+
Ft = (i("ba75"), Object(_["a"])(Dt, Bt, It, !1, null, "74a4d2ae", null)),
|
1810 |
+
Nt = Ft.exports,
|
1811 |
+
Qt = {
|
1812 |
+
name: "SettingsInputText",
|
1813 |
+
components: {
|
1814 |
+
SettingsInfoTooltip: Nt
|
1815 |
+
},
|
1816 |
+
props: {
|
1817 |
+
name: String,
|
1818 |
+
value: String,
|
1819 |
+
label: String,
|
1820 |
+
description: String,
|
1821 |
+
placeholder: String,
|
1822 |
+
type: {
|
1823 |
+
type: String,
|
1824 |
+
default: "text"
|
1825 |
+
},
|
1826 |
+
tooltip: String,
|
1827 |
+
readonly: Boolean,
|
1828 |
+
disabled: Boolean,
|
1829 |
+
format: RegExp,
|
1830 |
+
error: {
|
1831 |
+
type: String,
|
1832 |
+
default: ""
|
1833 |
+
},
|
1834 |
+
copy: {
|
1835 |
+
type: Boolean,
|
1836 |
+
default: !1
|
1837 |
+
},
|
1838 |
+
is_error: Boolean
|
1839 |
+
},
|
1840 |
+
data: function() {
|
1841 |
+
return {
|
1842 |
+
has_error: !1,
|
1843 |
+
id: "input-" + this.name,
|
1844 |
+
text_copy_button: Object(c["a"])("Copy input value", "mo2f-setup"),
|
1845 |
+
text_copied: Object(c["a"])("Copied!", "mo2f-setup"),
|
1846 |
+
show_copied: !1
|
1847 |
+
}
|
1848 |
+
},
|
1849 |
+
computed: {
|
1850 |
+
currentValue: {
|
1851 |
+
get: function() {
|
1852 |
+
return this.value
|
1853 |
+
},
|
1854 |
+
set: function(t) {
|
1855 |
+
this.$emit("is_error_update", !1), this.$emit("input", t)
|
1856 |
+
}
|
1857 |
+
},
|
1858 |
+
field_error: {
|
1859 |
+
get: function() {
|
1860 |
+
return this.is_error
|
1861 |
+
},
|
1862 |
+
set: function(t) {
|
1863 |
+
this.$emit("is_error_update", t)
|
1864 |
+
}
|
1865 |
+
},
|
1866 |
+
has_errors: function() {
|
1867 |
+
return this.error.length > 0 || this.has_error
|
1868 |
+
},
|
1869 |
+
text_error: function() {
|
1870 |
+
return this.error.length > 0 ? this.error : Object(c["a"])("The value entered does not match the required format", "mo2f-setup")
|
1871 |
+
}
|
1872 |
+
},
|
1873 |
+
methods: {
|
1874 |
+
inputUpdate: function(t) {
|
1875 |
+
return !this.disabled && (this.has_error = !1, this.format && !this.format.test(t.target.value) ? (this.has_error = !0, !1) : void 0)
|
1876 |
+
},
|
1877 |
+
copyValue: function() {
|
1878 |
+
var t = this.$refs.input;
|
1879 |
+
t.select(), document.execCommand("copy"), this.show_copied = !0;
|
1880 |
+
var e = this;
|
1881 |
+
setTimeout((function() {
|
1882 |
+
e.show_copied = !1
|
1883 |
+
}), 1e3)
|
1884 |
+
}
|
1885 |
+
}
|
1886 |
+
},
|
1887 |
+
Lt = Qt,
|
1888 |
+
Wt = Object(_["a"])(Lt, Tt, zt, !1, null, null, null),
|
1889 |
+
Ut = Wt.exports,
|
1890 |
+
Ht = function() {
|
1891 |
+
var t = this,
|
1892 |
+
e = t.$createElement,
|
1893 |
+
s = t._self._c || e;
|
1894 |
+
return s("div", {
|
1895 |
+
staticClass: "settings-input-checkbox",
|
1896 |
+
class: {
|
1897 |
+
"settings-input-checkbox-checked": t.value, "settings-input-checkbox-disabled": t.disabled
|
1898 |
+
}
|
1899 |
+
}, [s("span", {
|
1900 |
+
staticClass: "settings-input-label-container"
|
1901 |
+
}, [s("span", {
|
1902 |
+
staticClass: "label",
|
1903 |
+
domProps: {
|
1904 |
+
innerHTML: t._s(t.label)
|
1905 |
+
}
|
1906 |
+
}), t.tooltip ? s("settings-info-tooltip", {
|
1907 |
+
attrs: {
|
1908 |
+
content: t.tooltip
|
1909 |
+
}
|
1910 |
+
}) : t._e()], 1), s("label", {
|
1911 |
+
staticClass: "settings-input-checkbox-container",
|
1912 |
+
attrs: {
|
1913 |
+
for: "mo2f-setup-settings-checkbox-" + t.name
|
1914 |
+
}
|
1915 |
+
}, [s("span", {
|
1916 |
+
staticClass: "checkbox",
|
1917 |
+
class: {
|
1918 |
+
"checkbox-checked": t.value, "checkbox-disabled": t.disabled
|
1919 |
+
}
|
1920 |
+
}, [s("inline-svg", {
|
1921 |
+
staticClass: "icon",
|
1922 |
+
attrs: {
|
1923 |
+
src: i("3af1"),
|
1924 |
+
width: "14",
|
1925 |
+
height: "14"
|
1926 |
+
}
|
1927 |
+
})], 1), s("input", {
|
1928 |
+
attrs: {
|
1929 |
+
id: "mo2f-setup-settings-checkbox-" + t.name,
|
1930 |
+
type: "checkbox",
|
1931 |
+
name: t.name,
|
1932 |
+
disabled: t.disabled
|
1933 |
+
},
|
1934 |
+
domProps: {
|
1935 |
+
checked: t.value
|
1936 |
+
},
|
1937 |
+
on: {
|
1938 |
+
input: function(e) {
|
1939 |
+
return t.$emit("input", e.target.checked)
|
1940 |
+
}
|
1941 |
+
}
|
1942 |
+
}), t.description ? s("span", {
|
1943 |
+
staticClass: "input-label",
|
1944 |
+
domProps: {
|
1945 |
+
innerHTML: t._s(t.description)
|
1946 |
+
}
|
1947 |
+
}) : t._e()])])
|
1948 |
+
},
|
1949 |
+
Rt = [],
|
1950 |
+
Gt = {
|
1951 |
+
name: "SettingsInputCheckbox",
|
1952 |
+
components: {
|
1953 |
+
SettingsInfoTooltip: Nt
|
1954 |
+
},
|
1955 |
+
props: {
|
1956 |
+
label: String,
|
1957 |
+
name: String,
|
1958 |
+
value: Boolean,
|
1959 |
+
description: String,
|
1960 |
+
tooltip: String,
|
1961 |
+
disabled: Boolean
|
1962 |
+
}
|
1963 |
+
},
|
1964 |
+
Vt = Gt,
|
1965 |
+
Yt = Object(_["a"])(Vt, Ht, Rt, !1, null, null, null),
|
1966 |
+
Jt = Yt.exports,
|
1967 |
+
Kt = {
|
1968 |
+
name: "WizardStepHelpImprove",
|
1969 |
+
components: {
|
1970 |
+
ContentHeader: h,
|
1971 |
+
TheWizardStepCounter: X,
|
1972 |
+
SettingsInputText: Ut,
|
1973 |
+
SettingsInputCheckbox: Jt
|
1974 |
+
},
|
1975 |
+
data: function() {
|
1976 |
+
return {
|
1977 |
+
text_header_title: Object(c["a"])("Help Improve WP Mail SMTP + Smart Recommendations", "mo2f-setup"),
|
1978 |
+
text_header_subtitle: Object(c["a"])("Get helpful suggestions from WP Mail SMTP on how to optimize your email deliverability and grow your business.", "mo2f-setup"),
|
1979 |
+
text_save: Object(c["a"])("Save and Continue", "mo2f-setup"),
|
1980 |
+
text_skip: Object(c["a"])("Skip this Step", "mo2f-setup"),
|
1981 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup"),
|
1982 |
+
text_email_label: Object(c["a"])("Your Email Address", "mo2f-setup"),
|
1983 |
+
text_email_description: Object(c["a"])("Your email is needed, so you can receive recommendations.", "mo2f-setup"),
|
1984 |
+
text_usage_tracking_label: Object(c["a"])("Help make WP Mail SMTP better for everyone", "mo2f-setup"),
|
1985 |
+
text_usage_tracking_description: Object(c["a"])("Yes, count me in", "mo2f-setup"),
|
1986 |
+
text_usage_tracking_tooltip: Object(c["a"])("By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test.", "mo2f-setup"),
|
1987 |
+
is_pro: this.$wpms.is_pro,
|
1988 |
+
email: "",
|
1989 |
+
usage_tracking: !1
|
1990 |
+
}
|
1991 |
+
},
|
1992 |
+
methods: {
|
1993 |
+
handleSubmit: function() {
|
1994 |
+
var t = this;
|
1995 |
+
this.$store.dispatch("$_app/start_loading");
|
1996 |
+
var e = [];
|
1997 |
+
if (this.email && e.push(this.$store.dispatch("$_settings/subscribeToNewsletter", this.email)), this.usage_tracking) {
|
1998 |
+
var i = {
|
1999 |
+
value: {
|
2000 |
+
general: {
|
2001 |
+
"usage-tracking-enabled": !0
|
2002 |
+
}
|
2003 |
+
}
|
2004 |
+
};
|
2005 |
+
e.push(this.$store.dispatch("$_settings/updateSettings", i))
|
2006 |
+
}
|
2007 |
+
Promise.all(e).then((function() {
|
2008 |
+
t.nextStep()
|
2009 |
+
})).finally((function() {
|
2010 |
+
t.$store.dispatch("$_app/stop_loading")
|
2011 |
+
}))
|
2012 |
+
},
|
2013 |
+
nextStep: function() {
|
2014 |
+
this.$next_step()
|
2015 |
+
},
|
2016 |
+
previousStep: function() {
|
2017 |
+
this.$previous_step()
|
2018 |
+
}
|
2019 |
+
}
|
2020 |
+
},
|
2021 |
+
qt = Kt,
|
2022 |
+
Zt = Object(_["a"])(qt, Pt, Et, !1, null, null, null),
|
2023 |
+
Xt = Zt.exports,
|
2024 |
+
$t = function() {
|
2025 |
+
var t = this,
|
2026 |
+
e = t.$createElement,
|
2027 |
+
s = t._self._c || e;
|
2028 |
+
return s("div", {
|
2029 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-step-license"
|
2030 |
+
}, [s("div", {
|
2031 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
2032 |
+
}, [s("div", {
|
2033 |
+
staticClass: "mo2f-setup-license-header"
|
2034 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
2035 |
+
attrs: {
|
2036 |
+
title: t.text_header_title,
|
2037 |
+
subtitle: t.text_header_subtitle
|
2038 |
+
}
|
2039 |
+
})], 1), t.is_pro ? t._e() : s("div", {
|
2040 |
+
staticClass: "upgrade-content"
|
2041 |
+
}, [s("p", {
|
2042 |
+
staticClass: "medium-bold",
|
2043 |
+
domProps: {
|
2044 |
+
innerHTML: t._s(t.text_upgrade_paragraph)
|
2045 |
+
}
|
2046 |
+
}), s("div", {
|
2047 |
+
staticClass: "checked-item-list"
|
2048 |
+
}, [s("span", {
|
2049 |
+
staticClass: "checked-item"
|
2050 |
+
}, [s("inline-svg", {
|
2051 |
+
staticClass: "icon",
|
2052 |
+
attrs: {
|
2053 |
+
src: i("3af1"),
|
2054 |
+
width: "16",
|
2055 |
+
height: "16"
|
2056 |
+
}
|
2057 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_email_log))])], 1), s("span", {
|
2058 |
+
staticClass: "checked-item"
|
2059 |
+
}, [s("inline-svg", {
|
2060 |
+
staticClass: "icon",
|
2061 |
+
attrs: {
|
2062 |
+
src: i("3af1"),
|
2063 |
+
width: "16",
|
2064 |
+
height: "16"
|
2065 |
+
}
|
2066 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_manage_notifications))])], 1), s("span", {
|
2067 |
+
staticClass: "checked-item"
|
2068 |
+
}, [s("inline-svg", {
|
2069 |
+
staticClass: "icon",
|
2070 |
+
attrs: {
|
2071 |
+
src: i("3af1"),
|
2072 |
+
width: "16",
|
2073 |
+
height: "16"
|
2074 |
+
}
|
2075 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_network_settings))])], 1)])]), t.verified ? s("div", {
|
2076 |
+
staticClass: "verified-license"
|
2077 |
+
}, [s("p", {
|
2078 |
+
domProps: {
|
2079 |
+
innerHTML: t._s(t.text_verified_license)
|
2080 |
+
}
|
2081 |
+
})]) : s("div", {
|
2082 |
+
staticClass: "license-form",
|
2083 |
+
class: {
|
2084 |
+
"license-form-error": t.license_error
|
2085 |
+
}
|
2086 |
+
}, [s("p", {
|
2087 |
+
domProps: {
|
2088 |
+
innerHTML: t._s(t.text_license_form)
|
2089 |
+
}
|
2090 |
+
}), s("div", {
|
2091 |
+
staticClass: "license-control"
|
2092 |
+
}, [s("input", {
|
2093 |
+
directives: [{
|
2094 |
+
name: "model",
|
2095 |
+
rawName: "v-model",
|
2096 |
+
value: t.license,
|
2097 |
+
expression: "license"
|
2098 |
+
}],
|
2099 |
+
attrs: {
|
2100 |
+
name: "license",
|
2101 |
+
type: "password",
|
2102 |
+
placeholder: t.text_license_input_placeholder,
|
2103 |
+
"aria-label": t.text_aria_label_for_license_input
|
2104 |
+
},
|
2105 |
+
domProps: {
|
2106 |
+
value: t.license
|
2107 |
+
},
|
2108 |
+
on: {
|
2109 |
+
input: function(e) {
|
2110 |
+
e.target.composing || (t.license = e.target.value)
|
2111 |
+
}
|
2112 |
+
}
|
2113 |
+
}), s("button", {
|
2114 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-success mo2f-setup-button-small",
|
2115 |
+
attrs: {
|
2116 |
+
type: "button"
|
2117 |
+
},
|
2118 |
+
on: {
|
2119 |
+
click: function(e) {
|
2120 |
+
return e.preventDefault(), t.handleLicenseSubmit(e)
|
2121 |
+
}
|
2122 |
+
}
|
2123 |
+
}, [t._v(" " + t._s(t.text_license_button) + " ")])]), t.license_error ? s("p", {
|
2124 |
+
staticClass: "error-message",
|
2125 |
+
domProps: {
|
2126 |
+
textContent: t._s(t.text_license_error)
|
2127 |
+
}
|
2128 |
+
}) : t._e()])]), s("div", {
|
2129 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
2130 |
+
}), s("div", {
|
2131 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
2132 |
+
}, [s("a", {
|
2133 |
+
attrs: {
|
2134 |
+
href: "#"
|
2135 |
+
},
|
2136 |
+
on: {
|
2137 |
+
click: function(e) {
|
2138 |
+
return e.preventDefault(), t.previousStep(e)
|
2139 |
+
}
|
2140 |
+
}
|
2141 |
+
}, [s("span", {
|
2142 |
+
staticClass: "text-with-arrow text-with-arrow-left"
|
2143 |
+
}, [s("inline-svg", {
|
2144 |
+
staticClass: "icon",
|
2145 |
+
attrs: {
|
2146 |
+
src: i("1fa5"),
|
2147 |
+
width: "16",
|
2148 |
+
height: "18"
|
2149 |
+
}
|
2150 |
+
}), t._v(t._s(t.text_previous_step) + " ")], 1)]), s("div", {
|
2151 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer-buttons"
|
2152 |
+
}, [t.verified ? s("button", {
|
2153 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
2154 |
+
attrs: {
|
2155 |
+
type: "submit",
|
2156 |
+
name: "next_step"
|
2157 |
+
},
|
2158 |
+
on: {
|
2159 |
+
click: function(e) {
|
2160 |
+
return e.preventDefault(), t.handleSubmit(e)
|
2161 |
+
}
|
2162 |
+
}
|
2163 |
+
}, [s("span", {
|
2164 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
2165 |
+
}, [t._v(" " + t._s(t.text_save) + " "), s("inline-svg", {
|
2166 |
+
staticClass: "icon",
|
2167 |
+
attrs: {
|
2168 |
+
src: i("107e"),
|
2169 |
+
width: "16",
|
2170 |
+
height: "19"
|
2171 |
+
}
|
2172 |
+
})], 1)]) : s("button", {
|
2173 |
+
staticClass: "mo2f-setup-button",
|
2174 |
+
attrs: {
|
2175 |
+
type: "button",
|
2176 |
+
name: "skip_step"
|
2177 |
+
},
|
2178 |
+
domProps: {
|
2179 |
+
textContent: t._s(t.text_skip)
|
2180 |
+
},
|
2181 |
+
on: {
|
2182 |
+
click: function(e) {
|
2183 |
+
return e.preventDefault(), t.nextStep(e)
|
2184 |
+
}
|
2185 |
+
}
|
2186 |
+
})])])])
|
2187 |
+
},
|
2188 |
+
te = [],
|
2189 |
+
ee = (i("841c"), i("2b3d"), i("6341")),
|
2190 |
+
ie = i.n(ee),
|
2191 |
+
se = {
|
2192 |
+
name: "WizardStepLicense",
|
2193 |
+
components: {
|
2194 |
+
ContentHeader: h,
|
2195 |
+
TheWizardStepCounter: X
|
2196 |
+
},
|
2197 |
+
data: function() {
|
2198 |
+
return {
|
2199 |
+
text_header_title: Object(c["a"])("Enter your WP Mail SMTP License Key", "mo2f-setup"),
|
2200 |
+
text_header_subtitle: this.$wpms.is_pro ? "" : Object(c["c"])(Object(c["a"])("You're currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!", "mo2f-setup"), '<span class="medium-bold">', "</span>") + " 🙂",
|
2201 |
+
text_save: Object(c["a"])("Continue", "mo2f-setup"),
|
2202 |
+
text_skip: Object(c["a"])("Skip this Step", "mo2f-setup"),
|
2203 |
+
text_previous_step: Object(c["a"])("Previous Step", "mo2f-setup"),
|
2204 |
+
text_upgrade_paragraph: Object(c["c"])(Object(c["a"])("To unlock selected features, %1$sUpgrade to Pro%2$s and enter your license key below.", "mo2f-setup"), '<a href="' + this.$wpms.upgrade_link + '" target="_blank" rel="noopener noreferrer">', "</a>"),
|
2205 |
+
text_network_settings: Object(c["a"])("Multisite Network Settings", "mo2f-setup"),
|
2206 |
+
text_manage_notifications: Object(c["a"])("Manage Default Notifications", "mo2f-setup"),
|
2207 |
+
text_email_log: Object(c["a"])("Detailed Email Logs", "mo2f-setup"),
|
2208 |
+
text_license_form_lite: Object(c["c"])(Object(c["a"])("Already purchased? Enter your license key below to connect with %1$sWP Mail SMTP Pro%2$s!", "mo2f-setup"), "<b>", "</b>"),
|
2209 |
+
text_license_form_pro: Object(c["a"])("Enter your license key below to unlock plugin updates!", "mo2f-setup"),
|
2210 |
+
text_license_button: this.$wpms.is_pro ? Object(c["a"])("Verify License Key", "mo2f-setup") : Object(c["a"])("Connect", "mo2f-setup"),
|
2211 |
+
text_license_error: Object(c["a"])("The License Key format is incorrect. Please enter a valid key and try again.", "mo2f-setup"),
|
2212 |
+
text_verified_license: Object(c["a"])("Your license was successfully verified! You are ready for the next step.", "mo2f-setup"),
|
2213 |
+
text_email_log_desc: Object(c["a"])("Keep records of every email that's sent out from your website.", "mo2f-setup"),
|
2214 |
+
text_manage_notifications_desc: Object(c["a"])("Control which email notifications your WordPress site sends.", "mo2f-setup"),
|
2215 |
+
text_network_settings_desc: Object(c["a"])("Save time with powerful WordPress Multisite controls.", "mo2f-setup"),
|
2216 |
+
text_pro_badge: Object(c["a"])("Pro badge", "mo2f-setup"),
|
2217 |
+
text_aria_label_for_license_input: Object(c["a"])("License key input", "mo2f-setup"),
|
2218 |
+
text_license_input_placeholder: Object(c["a"])("Paste your license key here", "mo2f-setup"),
|
2219 |
+
pro_badge: i("87eb"),
|
2220 |
+
is_pro: this.$wpms.is_pro,
|
2221 |
+
verified: !1,
|
2222 |
+
license: "",
|
2223 |
+
license_error: !1
|
2224 |
+
}
|
2225 |
+
},
|
2226 |
+
computed: Object(n["a"])({
|
2227 |
+
text_license_form: function() {
|
2228 |
+
return this.is_pro ? this.text_license_form_pro : this.text_license_form_lite
|
2229 |
+
}
|
2230 |
+
}, Object(nt["b"])({
|
2231 |
+
selectedProFeatures: "$_settings/plugin_features"
|
2232 |
+
})),
|
2233 |
+
methods: {
|
2234 |
+
handleLicenseSubmit: function() {
|
2235 |
+
var t = this;
|
2236 |
+
return this.license_error = !1, !(!this.is_pro && 0 === this.license.length) && (this.is_pro && this.license.length < 16 ? (this.license_error = !0, !1) : (this.$store.dispatch("$_app/start_loading"), void(this.is_pro ? this.$store.dispatch("$_settings/verifyLicense", this.license).then((function(e) {
|
2237 |
+
e.success ? (t.verified = !0, t.$swal({
|
2238 |
+
title: Object(c["a"])("Successful Verification!", "mo2f-setup"),
|
2239 |
+
html: e.data.message,
|
2240 |
+
width: 450,
|
2241 |
+
showCloseButton: !0,
|
2242 |
+
customClass: {
|
2243 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
2244 |
+
}
|
2245 |
+
})) : t.$swal({
|
2246 |
+
title: Object(c["a"])("Verification Error!", "mo2f-setup"),
|
2247 |
+
html: e.data,
|
2248 |
+
width: 450,
|
2249 |
+
showCloseButton: !0,
|
2250 |
+
customClass: {
|
2251 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
2252 |
+
}
|
2253 |
+
})
|
2254 |
+
})).finally((function() {
|
2255 |
+
t.$store.dispatch("$_app/stop_loading")
|
2256 |
+
})) : this.$store.dispatch("$_settings/upgradePlugin", this.license).then((function(e) {
|
2257 |
+
if (e.success && ie()(e, "data.redirect_url")) return window.location = e.data.redirect_url;
|
2258 |
+
t.$store.dispatch("$_app/stop_loading"), t.$swal({
|
2259 |
+
title: e.success ? Object(c["a"])("Successful Upgrade!", "mo2f-setup") : Object(c["a"])("Upgrade Failed!", "mo2f-setup"),
|
2260 |
+
html: e.data,
|
2261 |
+
width: 450,
|
2262 |
+
showCloseButton: !0,
|
2263 |
+
customClass: {
|
2264 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
2265 |
+
}
|
2266 |
+
})
|
2267 |
+
})))))
|
2268 |
+
},
|
2269 |
+
handleSubmit: function() {
|
2270 |
+
this.nextStep()
|
2271 |
+
},
|
2272 |
+
nextStep: function() {
|
2273 |
+
this.$next_step()
|
2274 |
+
},
|
2275 |
+
previousStep: function() {
|
2276 |
+
this.$previous_step()
|
2277 |
+
},
|
2278 |
+
prepareLongCheckbox: function(t, e) {
|
2279 |
+
return '<label for="email_log" class="settings-input-long-checkbox settings-input-long-checkbox-checked settings-input-long-checkbox-disabled">\n\t\t\t\t\t\t<div class="settings-input-long-checkbox-header">\n\t\t\t\t\t\t\t<span class="title-container">\n\t\t\t\t\t\t\t\t<span class="label">\n\t\t\t\t\t\t\t\t\t'.concat(t, '\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<img src="').concat(this.pro_badge, '" alt="').concat(this.text_pro_badge, '" class="mo2f-setup-pro-badge">\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<p class="description">\n\t\t\t\t\t\t\t\t').concat(e, '\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class="settings-input-long-checkbox-container">\n\t\t\t\t\t\t\t<span class="checkbox checkbox-checked checkbox-disabled">\n\t\t\t\t\t\t\t\t<svg viewBox="0 0 512 512" role="img" class="icon" data-icon="check" data-prefix="fas" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<input id="email_log" type="checkbox" name="email_log" disabled="disabled">\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>')
|
2280 |
+
},
|
2281 |
+
prepareProFeaturesHtml: function() {
|
2282 |
+
var t = "<div>";
|
2283 |
+
return this.selectedProFeatures.includes("email_log") && (t += this.prepareLongCheckbox(this.text_email_log, this.text_email_log_desc)), this.selectedProFeatures.includes("manage_notifications") && (t += this.prepareLongCheckbox(this.text_manage_notifications, this.text_manage_notifications_desc)), this.selectedProFeatures.includes("network_settings") && (t += this.prepareLongCheckbox(this.text_network_settings, this.text_network_settings_desc)), t + "</div>"
|
2284 |
+
}
|
2285 |
+
},
|
2286 |
+
mounted: function() {
|
2287 |
+
var t = this;
|
2288 |
+
if (!this.is_pro && this.selectedProFeatures.length > 0) {
|
2289 |
+
var e = this.prepareProFeaturesHtml();
|
2290 |
+
this.$swal({
|
2291 |
+
title: Object(c["a"])("Would you like to purchase the following features now?", "mo2f-setup"),
|
2292 |
+
html: '<p class="subtitle">'.concat(Object(c["a"])("These features are available as part of WP Mail SMTP Pro plan.", "mo2f-setup"), "</p>\n\t\t\t\t\t\t").concat(e, '\n\t\t\t\t\t\t<p class="bonus">').concat(Object(c["c"])(Object(c["a"])("%1$sBonus:%2$s You can upgrade to the Pro plan and %3$ssave %5$s today%4$s, automatically applied at checkout.", "mo2f-setup"), "<b>", "</b>", '<span class="medium-bold">', "</span>", "$50"), "</p>\n\t\t\t\t\t"),
|
2293 |
+
width: 850,
|
2294 |
+
showCloseButton: !0,
|
2295 |
+
allowOutsideClick: !1,
|
2296 |
+
allowEscapeKey: !1,
|
2297 |
+
allowEnterKey: !1,
|
2298 |
+
customClass: {
|
2299 |
+
container: "mo2f-setup-swal mo2f-setup-swal-plugin-upgrade"
|
2300 |
+
},
|
2301 |
+
confirmButtonText: Object(c["a"])("Purchase Now", "mo2f-setup"),
|
2302 |
+
cancelButtonText: Object(c["a"])("I'll do it later", "mo2f-setup"),
|
2303 |
+
showCancelButton: !0,
|
2304 |
+
reverseButtons: !0
|
2305 |
+
}).then((function(e) {
|
2306 |
+
if (e.value) {
|
2307 |
+
var i = window.open(t.$wpms.upgrade_link, "_blank");
|
2308 |
+
i.focus()
|
2309 |
+
}
|
2310 |
+
}))
|
2311 |
+
}
|
2312 |
+
this.verified = this.$wpms.license_exists
|
2313 |
+
},
|
2314 |
+
created: function() {
|
2315 |
+
var t = new URLSearchParams(window.location.search);
|
2316 |
+
this.$wpms.license_exists && !t.has("upgrade-redirect") && this.nextStep()
|
2317 |
+
}
|
2318 |
+
},
|
2319 |
+
ae = se,
|
2320 |
+
ne = Object(_["a"])(ae, $t, te, !1, null, null, null),
|
2321 |
+
oe = ne.exports,
|
2322 |
+
re = function() {
|
2323 |
+
var t = this,
|
2324 |
+
e = t.$createElement,
|
2325 |
+
s = t._self._c || e;
|
2326 |
+
return s("div", {
|
2327 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-check-configuration"
|
2328 |
+
}, [s("div", {
|
2329 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
2330 |
+
}, [s("div", {
|
2331 |
+
staticClass: "mo2f-setup-check-configuration-header"
|
2332 |
+
}, [s("content-header", {
|
2333 |
+
attrs: {
|
2334 |
+
title: t.text_header_title,
|
2335 |
+
subtitle: t.text_header_subtitle
|
2336 |
+
}
|
2337 |
+
})], 1), s("div", {
|
2338 |
+
staticClass: "check-configuration-loading-image-container"
|
2339 |
+
}, [s("img", {
|
2340 |
+
attrs: {
|
2341 |
+
src: i("8398"),
|
2342 |
+
alt: t.text_image_alt
|
2343 |
+
}
|
2344 |
+
})])])])
|
2345 |
+
},
|
2346 |
+
le = [],
|
2347 |
+
ce = {
|
2348 |
+
name: "WizardStepCheckConfiguration",
|
2349 |
+
components: {
|
2350 |
+
ContentHeader: h
|
2351 |
+
},
|
2352 |
+
data: function() {
|
2353 |
+
return {
|
2354 |
+
text_header_title: Object(c["a"])("Checking Mailer Configuration", "mo2f-setup"),
|
2355 |
+
text_header_subtitle: Object(c["a"])("We're running some tests in the background to make sure everything is set up properly.", "mo2f-setup"),
|
2356 |
+
text_image_alt: Object(c["a"])("Checking mailer configuration image", "mo2f-setup")
|
2357 |
+
}
|
2358 |
+
},
|
2359 |
+
mounted: function() {
|
2360 |
+
var t = this;
|
2361 |
+
this.$store.dispatch("$_wizard/checkMailerConfiguration").then((function(e) {
|
2362 |
+
e.success ? t.$router.push({
|
2363 |
+
name: "check_configuration_step_success"
|
2364 |
+
}) : t.$router.push({
|
2365 |
+
name: "check_configuration_step_failure"
|
2366 |
+
})
|
2367 |
+
}))
|
2368 |
+
}
|
2369 |
+
},
|
2370 |
+
pe = ce,
|
2371 |
+
me = Object(_["a"])(pe, re, le, !1, null, null, null),
|
2372 |
+
ue = me.exports,
|
2373 |
+
de = function() {
|
2374 |
+
var t = this,
|
2375 |
+
e = t.$createElement,
|
2376 |
+
s = t._self._c || e;
|
2377 |
+
return s("div", {
|
2378 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-configuration-success"
|
2379 |
+
}, [s("div", {
|
2380 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
2381 |
+
}, [s("div", {
|
2382 |
+
staticClass: "mo2f-setup-configuration-success-header"
|
2383 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
2384 |
+
attrs: {
|
2385 |
+
title: t.text_header_title,
|
2386 |
+
subtitle: t.text_header_subtitle
|
2387 |
+
}
|
2388 |
+
})], 1), s("div", {
|
2389 |
+
staticClass: "plugin-item-container"
|
2390 |
+
}, [s("p", {
|
2391 |
+
staticClass: "medium-bold",
|
2392 |
+
domProps: {
|
2393 |
+
textContent: t._s(t.text_free_plugins_header)
|
2394 |
+
}
|
2395 |
+
}), s("div", t._l(t.plugins, (function(t, e) {
|
2396 |
+
return s("plugin-item", {
|
2397 |
+
key: e,
|
2398 |
+
attrs: {
|
2399 |
+
name: t.name,
|
2400 |
+
slug: t.slug,
|
2401 |
+
is_installed: t.is_installed,
|
2402 |
+
is_activated: t.is_activated
|
2403 |
+
}
|
2404 |
+
})
|
2405 |
+
})), 1)]), t.is_pro ? t._e() : s("div", {
|
2406 |
+
staticClass: "upgrade-banner-container"
|
2407 |
+
}, [s("div", {
|
2408 |
+
staticClass: "upgrade-banner"
|
2409 |
+
}, [s("h2", {
|
2410 |
+
domProps: {
|
2411 |
+
textContent: t._s(t.text_upgrade_title)
|
2412 |
+
}
|
2413 |
+
}), s("p", {
|
2414 |
+
staticClass: "subtitle",
|
2415 |
+
domProps: {
|
2416 |
+
textContent: t._s(t.text_upgrade_subtitle)
|
2417 |
+
}
|
2418 |
+
}), s("div", {
|
2419 |
+
staticClass: "checked-item-list"
|
2420 |
+
}, [s("span", {
|
2421 |
+
staticClass: "checked-item"
|
2422 |
+
}, [s("inline-svg", {
|
2423 |
+
staticClass: "icon",
|
2424 |
+
attrs: {
|
2425 |
+
src: i("3af1"),
|
2426 |
+
width: "16",
|
2427 |
+
height: "16"
|
2428 |
+
}
|
2429 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_email_log))])], 1), s("span", {
|
2430 |
+
staticClass: "checked-item"
|
2431 |
+
}, [s("inline-svg", {
|
2432 |
+
staticClass: "icon",
|
2433 |
+
attrs: {
|
2434 |
+
src: i("3af1"),
|
2435 |
+
width: "16",
|
2436 |
+
height: "16"
|
2437 |
+
}
|
2438 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_manage_notifications))])], 1), s("span", {
|
2439 |
+
staticClass: "checked-item"
|
2440 |
+
}, [s("inline-svg", {
|
2441 |
+
staticClass: "icon",
|
2442 |
+
attrs: {
|
2443 |
+
src: i("3af1"),
|
2444 |
+
width: "16",
|
2445 |
+
height: "16"
|
2446 |
+
}
|
2447 |
+
}), t._v(" "), s("span", [t._v(t._s(t.text_network_settings))])], 1)]), s("button", {
|
2448 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-success",
|
2449 |
+
attrs: {
|
2450 |
+
type: "button"
|
2451 |
+
},
|
2452 |
+
domProps: {
|
2453 |
+
textContent: t._s(t.text_upgrade_button)
|
2454 |
+
},
|
2455 |
+
on: {
|
2456 |
+
click: t.openUpgradePage
|
2457 |
+
}
|
2458 |
+
})]), s("p", {
|
2459 |
+
staticClass: "bonus",
|
2460 |
+
domProps: {
|
2461 |
+
innerHTML: t._s(t.text_bonus)
|
2462 |
+
}
|
2463 |
+
})])]), s("div", {
|
2464 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
2465 |
+
}), s("div", {
|
2466 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
2467 |
+
}, [s("button", {
|
2468 |
+
staticClass: "mo2f-setup-button",
|
2469 |
+
attrs: {
|
2470 |
+
type: "button",
|
2471 |
+
name: "send_test_email"
|
2472 |
+
},
|
2473 |
+
domProps: {
|
2474 |
+
textContent: t._s(t.text_test_email)
|
2475 |
+
},
|
2476 |
+
on: {
|
2477 |
+
click: function(e) {
|
2478 |
+
return e.preventDefault(), t.handleTestEmail(e)
|
2479 |
+
}
|
2480 |
+
}
|
2481 |
+
}), s("button", {
|
2482 |
+
staticClass: "mo2f-setup-button",
|
2483 |
+
attrs: {
|
2484 |
+
type: "button",
|
2485 |
+
name: "send_feedback"
|
2486 |
+
},
|
2487 |
+
domProps: {
|
2488 |
+
textContent: t._s(t.text_send_feedback)
|
2489 |
+
},
|
2490 |
+
on: {
|
2491 |
+
click: function(e) {
|
2492 |
+
return e.preventDefault(), t.handleFeedback(e)
|
2493 |
+
}
|
2494 |
+
}
|
2495 |
+
}), s("button", {
|
2496 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
2497 |
+
attrs: {
|
2498 |
+
type: "button",
|
2499 |
+
name: "finish_setup"
|
2500 |
+
},
|
2501 |
+
domProps: {
|
2502 |
+
textContent: t._s(t.text_finish)
|
2503 |
+
},
|
2504 |
+
on: {
|
2505 |
+
click: function(e) {
|
2506 |
+
return e.preventDefault(), t.handleFinish(e)
|
2507 |
+
}
|
2508 |
+
}
|
2509 |
+
})])])
|
2510 |
+
},
|
2511 |
+
_e = [],
|
2512 |
+
fe = function() {
|
2513 |
+
var t = this,
|
2514 |
+
e = t.$createElement,
|
2515 |
+
i = t._self._c || e;
|
2516 |
+
return i("div", {
|
2517 |
+
class: "mo2f-setup-plugin-item mo2f-setup-plugin-" + t.slug
|
2518 |
+
}, [i("span", {
|
2519 |
+
staticClass: "mo2f-setup-plugin-item-title-container"
|
2520 |
+
}, [t.logo.length ? i("img", {
|
2521 |
+
staticClass: "mo2f-setup-logo-icon",
|
2522 |
+
attrs: {
|
2523 |
+
src: t.logo2x,
|
2524 |
+
srcset: t.logo_srcset,
|
2525 |
+
alt: t.name
|
2526 |
+
}
|
2527 |
+
}) : t._e(), i("span", {
|
2528 |
+
domProps: {
|
2529 |
+
textContent: t._s(t.name)
|
2530 |
+
}
|
2531 |
+
})]), i("button", {
|
2532 |
+
staticClass: "mo2f-setup-button",
|
2533 |
+
attrs: {
|
2534 |
+
type: "button",
|
2535 |
+
disabled: t.is_activated || t.is_installed
|
2536 |
+
},
|
2537 |
+
on: {
|
2538 |
+
click: function(e) {
|
2539 |
+
return e.preventDefault(), t.handleClick(e)
|
2540 |
+
}
|
2541 |
+
}
|
2542 |
+
}, [t.loading ? i("loader", {
|
2543 |
+
attrs: {
|
2544 |
+
color: "white"
|
2545 |
+
}
|
2546 |
+
}) : i("span", [t._v(" " + t._s(t.text_button_label) + " ")])], 1)])
|
2547 |
+
},
|
2548 |
+
he = [],
|
2549 |
+
ge = function() {
|
2550 |
+
var t = this,
|
2551 |
+
e = t.$createElement,
|
2552 |
+
i = t._self._c || e;
|
2553 |
+
return i("img", {
|
2554 |
+
class: "mo2f-setup-loader mo2f-setup-loader-" + t.size,
|
2555 |
+
attrs: {
|
2556 |
+
src: t.image,
|
2557 |
+
alt: t.text_loading
|
2558 |
+
}
|
2559 |
+
})
|
2560 |
+
},
|
2561 |
+
we = [],
|
2562 |
+
be = {
|
2563 |
+
name: "Loader",
|
2564 |
+
props: {
|
2565 |
+
color: {
|
2566 |
+
type: String,
|
2567 |
+
default: ""
|
2568 |
+
},
|
2569 |
+
size: {
|
2570 |
+
type: String,
|
2571 |
+
default: "sm"
|
2572 |
+
}
|
2573 |
+
},
|
2574 |
+
data: function() {
|
2575 |
+
return {
|
2576 |
+
image: i("5711")("./loading".concat(this.color.length ? "-" + this.color : "", ".svg")),
|
2577 |
+
text_loading: Object(c["a"])("Loading", "mo2f-setup")
|
2578 |
+
}
|
2579 |
+
}
|
2580 |
+
},
|
2581 |
+
Ae = be,
|
2582 |
+
ve = Object(_["a"])(Ae, ge, we, !1, null, null, null),
|
2583 |
+
xe = ve.exports,
|
2584 |
+
ye = {
|
2585 |
+
name: "PluginItem",
|
2586 |
+
components: {
|
2587 |
+
Loader: xe
|
2588 |
+
},
|
2589 |
+
props: {
|
2590 |
+
slug: String,
|
2591 |
+
name: String,
|
2592 |
+
is_installed: Boolean,
|
2593 |
+
is_activated: Boolean
|
2594 |
+
},
|
2595 |
+
data: function() {
|
2596 |
+
return {
|
2597 |
+
loading: !1,
|
2598 |
+
logo: i("bbc2")("./".concat(this.slug, ".png")),
|
2599 |
+
logo2x: i("7c9b")("./".concat(this.slug, "@2x.png"))
|
2600 |
+
}
|
2601 |
+
},
|
2602 |
+
computed: {
|
2603 |
+
text_button_label: function() {
|
2604 |
+
var t = Object(c["a"])("Install", "mo2f-setup");
|
2605 |
+
return this.is_installed && !this.is_activated && (t = Object(c["a"])("Installed", "mo2f-setup")), this.is_activated && (t = Object(c["a"])("Activated", "mo2f-setup")), t
|
2606 |
+
},
|
2607 |
+
logo_srcset: function() {
|
2608 |
+
return "".concat(this.logo, ", ").concat(this.logo2x, " 2x")
|
2609 |
+
}
|
2610 |
+
},
|
2611 |
+
methods: {
|
2612 |
+
handleClick: function() {
|
2613 |
+
var t = this;
|
2614 |
+
this.loading || (this.loading = !0, this.$store.dispatch("$_plugins/installPlugin", this.slug).then((function(e) {
|
2615 |
+
e.success && t.$wpms_success_toast({
|
2616 |
+
title: "Plugin: ".concat(t.name, " installed!")
|
2617 |
+
}), t.loading = !1
|
2618 |
+
})))
|
2619 |
+
}
|
2620 |
+
}
|
2621 |
+
},
|
2622 |
+
Ce = ye,
|
2623 |
+
ke = (i("f8b1"), Object(_["a"])(Ce, fe, he, !1, null, "6b0d8118", null)),
|
2624 |
+
Oe = ke.exports,
|
2625 |
+
je = {
|
2626 |
+
name: "WizardStepConfigurationSuccess",
|
2627 |
+
components: {
|
2628 |
+
ContentHeader: h,
|
2629 |
+
TheWizardStepCounter: X,
|
2630 |
+
PluginItem: Oe
|
2631 |
+
},
|
2632 |
+
data: function() {
|
2633 |
+
return {
|
2634 |
+
text_header_title: Object(c["a"])("Congrats, you’ve successfully set up WP Mail SMTP!", "mo2f-setup"),
|
2635 |
+
text_header_subtitle: Object(c["a"])("Here’s what to do next:", "mo2f-setup"),
|
2636 |
+
text_free_plugins_header: Object(c["a"])("Check out our other free WordPress plugins:", "mo2f-setup"),
|
2637 |
+
text_upgrade_title: Object(c["a"])("Upgrade to Unlock Powerful SMTP Features", "mo2f-setup"),
|
2638 |
+
text_upgrade_subtitle: Object(c["a"])("Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is used by over 2,000,000 websites.", "mo2f-setup"),
|
2639 |
+
text_network_settings: Object(c["a"])("Multisite Network Settings", "mo2f-setup"),
|
2640 |
+
text_manage_notifications: Object(c["a"])("Manage Default Notifications", "mo2f-setup"),
|
2641 |
+
text_email_log: Object(c["a"])("Detailed Email Logs", "mo2f-setup"),
|
2642 |
+
text_upgrade_button: Object(c["a"])("Upgrade to Pro Today", "mo2f-setup"),
|
2643 |
+
text_test_email: Object(c["a"])("Send a Test Email", "mo2f-setup"),
|
2644 |
+
text_send_feedback: Object(c["a"])("Send us Feedback", "mo2f-setup"),
|
2645 |
+
text_finish: Object(c["a"])("Finish Setup", "mo2f-setup"),
|
2646 |
+
text_bonus: Object(c["c"])(Object(c["a"])("%1$sBonus:%2$s You can upgrade to the Pro plan and %3$ssave %5$s today%4$s, automatically applied at checkout.", "mo2f-setup"), "<b>", "</b>", '<span class="medium-bold">', "</span>", "$50"),
|
2647 |
+
star_image_html: '<img src="'.concat(i("6f43"), '" alt="').concat(Object(c["a"])("Star icon", "mo2f-setup"), '" class="icon" / >'),
|
2648 |
+
is_pro: this.$wpms.is_pro
|
2649 |
+
}
|
2650 |
+
},
|
2651 |
+
computed: Object(n["a"])({}, Object(nt["b"])({
|
2652 |
+
plugins: "$_plugins/partner_plugins"
|
2653 |
+
})),
|
2654 |
+
methods: {
|
2655 |
+
handleTestEmail: function() {
|
2656 |
+
return window.location = this.$wpms.email_test_tab_url
|
2657 |
+
},
|
2658 |
+
goodFeedback: function() {
|
2659 |
+
this.$swal({
|
2660 |
+
title: Object(c["a"])("Thanks for the feedback!", "mo2f-setup"),
|
2661 |
+
html: "".concat(Object(c["c"])(Object(c["a"])("Help us spread the word %1$sby giving WP Mail SMTP a 5-star rating %3$s(%4$s) on WordPress.org%2$s. Thanks for your support and we look forward to bringing you more awesome features.", "mo2f-setup"), '<span class="medium-bold">', "</span>", "<br>", this.star_image_html + "" + this.star_image_html + this.star_image_html + this.star_image_html + this.star_image_html)),
|
2662 |
+
width: 650,
|
2663 |
+
showCloseButton: !0,
|
2664 |
+
allowEnterKey: !1,
|
2665 |
+
confirmButtonText: Object(c["a"])("Rate on WordPress.org", "mo2f-setup"),
|
2666 |
+
customClass: {
|
2667 |
+
container: "mo2f-setup-swal mo2f-setup-swal-feedback-good"
|
2668 |
+
}
|
2669 |
+
}).then((function(t) {
|
2670 |
+
if (t.value) {
|
2671 |
+
var e = window.open("https://wordpress.org/support/plugin/mo2f-setup/reviews/#new-post", "_blank");
|
2672 |
+
e.focus()
|
2673 |
+
}
|
2674 |
+
}))
|
2675 |
+
},
|
2676 |
+
badFeedback: function() {
|
2677 |
+
var t = this;
|
2678 |
+
this.$swal({
|
2679 |
+
title: Object(c["a"])("What could we do to improve?", "mo2f-setup"),
|
2680 |
+
html: "".concat(Object(c["a"])("We're sorry things didn't go smoothly for you, and want to keep improving. Please let us know any specific parts of this process that you think could be better. We really appreciate any details you're willing to share!", "mo2f-setup"), '\n\t\t\t\t\t\t\t\t<textarea id="feedback" name="feedback" rows="9"></textarea>\n\t\t\t\t\t\t\t\t<span class="permission-container">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" id="permission" name="permission">\n\t\t\t\t\t\t\t\t\t<label for="permission">').concat(Object(c["a"])("Yes, I give WP Mail SMTP permission to contact me for any follow up questions.", "mo2f-setup"), "</label>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t"),
|
2681 |
+
width: 650,
|
2682 |
+
showCloseButton: !0,
|
2683 |
+
allowEnterKey: !1,
|
2684 |
+
allowOutsideClick: !1,
|
2685 |
+
allowEscapeKey: !1,
|
2686 |
+
confirmButtonText: Object(c["a"])("Submit Feedback", "mo2f-setup"),
|
2687 |
+
customClass: {
|
2688 |
+
container: "mo2f-setup-swal mo2f-setup-swal-feedback-bad"
|
2689 |
+
},
|
2690 |
+
preConfirm: function() {
|
2691 |
+
return [document.getElementById("feedback").value, document.getElementById("permission").checked]
|
2692 |
+
}
|
2693 |
+
}).then((function(e) {
|
2694 |
+
if (e.value) {
|
2695 |
+
var i = e.value[0],
|
2696 |
+
s = e.value[1];
|
2697 |
+
t.$store.dispatch("$_wizard/sendFeedback", {
|
2698 |
+
feedback: i,
|
2699 |
+
permission: s
|
2700 |
+
})
|
2701 |
+
}
|
2702 |
+
}))
|
2703 |
+
},
|
2704 |
+
handleFeedback: function() {
|
2705 |
+
var t = this;
|
2706 |
+
this.$swal({
|
2707 |
+
title: Object(c["a"])("How was your WP Mail SMTP setup experience?", "mo2f-setup"),
|
2708 |
+
text: Object(c["a"])("Our goal is to make your SMTP setup as simple and straightforward as possible. We'd love to know how this process went for you!", "mo2f-setup"),
|
2709 |
+
width: 650,
|
2710 |
+
showCloseButton: !0,
|
2711 |
+
allowEnterKey: !1,
|
2712 |
+
customClass: {
|
2713 |
+
container: "mo2f-setup-swal mo2f-setup-swal-feedback"
|
2714 |
+
},
|
2715 |
+
showCancelButton: !0
|
2716 |
+
}).then((function(e) {
|
2717 |
+
e.value ? t.goodFeedback() : void 0 !== e.dismiss && "cancel" === e.dismiss && t.badFeedback()
|
2718 |
+
}))
|
2719 |
+
},
|
2720 |
+
handleFinish: function() {
|
2721 |
+
return window.location = this.$wpms.exit_url
|
2722 |
+
},
|
2723 |
+
openUpgradePage: function() {
|
2724 |
+
var t = window.open(this.$wpms.upgrade_link, "_blank");
|
2725 |
+
t.focus()
|
2726 |
+
}
|
2727 |
+
}
|
2728 |
+
},
|
2729 |
+
Se = je,
|
2730 |
+
Pe = Object(_["a"])(Se, de, _e, !1, null, null, null),
|
2731 |
+
Ee = Pe.exports,
|
2732 |
+
Te = function() {
|
2733 |
+
var t = this,
|
2734 |
+
e = t.$createElement,
|
2735 |
+
s = t._self._c || e;
|
2736 |
+
return s("div", {
|
2737 |
+
staticClass: "mo2f-setup-setup-wizard-step mo2f-setup-setup-wizard-configuration-failure"
|
2738 |
+
}, [s("div", {
|
2739 |
+
staticClass: "mo2f-setup-setup-wizard-content-container"
|
2740 |
+
}, [s("div", {
|
2741 |
+
staticClass: "mo2f-setup-configuration-failure-header"
|
2742 |
+
}, [s("the-wizard-step-counter"), s("content-header", {
|
2743 |
+
attrs: {
|
2744 |
+
title: t.text_header_title,
|
2745 |
+
subtitle: t.text_header_subtitle
|
2746 |
+
}
|
2747 |
+
})], 1), s("div", {
|
2748 |
+
staticClass: "start-troubleshooting-arrow-container"
|
2749 |
+
}, [s("inline-svg", {
|
2750 |
+
staticClass: "icon",
|
2751 |
+
attrs: {
|
2752 |
+
src: i("50bf"),
|
2753 |
+
width: "112",
|
2754 |
+
height: "112"
|
2755 |
+
}
|
2756 |
+
})], 1)]), s("div", {
|
2757 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-no-margin"
|
2758 |
+
}), s("div", {
|
2759 |
+
staticClass: "mo2f-setup-setup-wizard-step-footer"
|
2760 |
+
}, [s("button", {
|
2761 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main",
|
2762 |
+
attrs: {
|
2763 |
+
type: "button",
|
2764 |
+
name: "start_troubleshooting"
|
2765 |
+
},
|
2766 |
+
domProps: {
|
2767 |
+
textContent: t._s(t.text_start_troubleshooting)
|
2768 |
+
},
|
2769 |
+
on: {
|
2770 |
+
click: function(e) {
|
2771 |
+
return e.preventDefault(), t.handleTroubleshooting(e)
|
2772 |
+
}
|
2773 |
+
}
|
2774 |
+
}), s("button", {
|
2775 |
+
staticClass: "mo2f-setup-button",
|
2776 |
+
attrs: {
|
2777 |
+
type: "button",
|
2778 |
+
name: "finish_setup"
|
2779 |
+
},
|
2780 |
+
domProps: {
|
2781 |
+
textContent: t._s(t.text_finish)
|
2782 |
+
},
|
2783 |
+
on: {
|
2784 |
+
click: function(e) {
|
2785 |
+
return e.preventDefault(), t.handleFinish(e)
|
2786 |
+
}
|
2787 |
+
}
|
2788 |
+
})])])
|
2789 |
+
},
|
2790 |
+
ze = [],
|
2791 |
+
Be = {
|
2792 |
+
name: "WizardStepConfigurationFailure",
|
2793 |
+
components: {
|
2794 |
+
ContentHeader: h,
|
2795 |
+
TheWizardStepCounter: X
|
2796 |
+
},
|
2797 |
+
data: function() {
|
2798 |
+
return {
|
2799 |
+
text_header_title: Object(c["a"])("Whoops, looks like things aren’t configured properly.", "mo2f-setup"),
|
2800 |
+
text_header_subtitle: Object(c["a"])("We just tried to send a test email, but something prevented that from working. To see more details about the issue we detected, as well as our suggestions to fix it, please start troubleshooting.", "mo2f-setup"),
|
2801 |
+
text_start_troubleshooting: Object(c["a"])("Start Troubleshooting", "mo2f-setup"),
|
2802 |
+
text_send_feedback: Object(c["a"])("Send us Feedback", "mo2f-setup"),
|
2803 |
+
text_finish: Object(c["a"])("Finish Setup", "mo2f-setup")
|
2804 |
+
}
|
2805 |
+
},
|
2806 |
+
methods: {
|
2807 |
+
handleTroubleshooting: function() {
|
2808 |
+
return window.location = "".concat(this.$wpms.email_test_tab_url, "&auto-start=1")
|
2809 |
+
},
|
2810 |
+
handleFinish: function() {
|
2811 |
+
return window.location = this.$wpms.exit_url
|
2812 |
+
}
|
2813 |
+
}
|
2814 |
+
},
|
2815 |
+
Ie = Be,
|
2816 |
+
Me = Object(_["a"])(Ie, Te, ze, !1, null, null, null),
|
2817 |
+
De = Me.exports,
|
2818 |
+
Fe = function() {
|
2819 |
+
var t = this,
|
2820 |
+
e = t.$createElement,
|
2821 |
+
i = t._self._c || e;
|
2822 |
+
return i("div", {
|
2823 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-smtp"
|
2824 |
+
}, [i("p", {
|
2825 |
+
staticClass: "mailer-description",
|
2826 |
+
domProps: {
|
2827 |
+
innerHTML: t._s(t.description)
|
2828 |
+
}
|
2829 |
+
}), i("div", {
|
2830 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
2831 |
+
}, [i("settings-input-text", {
|
2832 |
+
attrs: {
|
2833 |
+
name: "host",
|
2834 |
+
label: t.text_host_label,
|
2835 |
+
is_error: t.field_errors.includes("host")
|
2836 |
+
},
|
2837 |
+
on: {
|
2838 |
+
is_error_update: function(e) {
|
2839 |
+
return t.removeFieldError("host")
|
2840 |
+
}
|
2841 |
+
},
|
2842 |
+
model: {
|
2843 |
+
value: t.host,
|
2844 |
+
callback: function(e) {
|
2845 |
+
t.host = e
|
2846 |
+
},
|
2847 |
+
expression: "host"
|
2848 |
+
}
|
2849 |
+
}), i("settings-input-radio", {
|
2850 |
+
attrs: {
|
2851 |
+
name: "encryption",
|
2852 |
+
label: t.text_encryption_label,
|
2853 |
+
options: t.encryptionOptions,
|
2854 |
+
description: t.text_encryption_description
|
2855 |
+
},
|
2856 |
+
on: {
|
2857 |
+
input: t.encryptionChanged
|
2858 |
+
},
|
2859 |
+
model: {
|
2860 |
+
value: t.encryption,
|
2861 |
+
callback: function(e) {
|
2862 |
+
t.encryption = e
|
2863 |
+
},
|
2864 |
+
expression: "encryption"
|
2865 |
+
}
|
2866 |
+
}), i("settings-input-number", {
|
2867 |
+
attrs: {
|
2868 |
+
name: "port",
|
2869 |
+
label: t.text_port_label,
|
2870 |
+
is_error: t.field_errors.includes("port")
|
2871 |
+
},
|
2872 |
+
on: {
|
2873 |
+
is_error_update: function(e) {
|
2874 |
+
return t.removeFieldError("port")
|
2875 |
+
}
|
2876 |
+
},
|
2877 |
+
model: {
|
2878 |
+
value: t.port,
|
2879 |
+
callback: function(e) {
|
2880 |
+
t.port = e
|
2881 |
+
},
|
2882 |
+
expression: "port"
|
2883 |
+
}
|
2884 |
+
}), i("settings-input-switch", {
|
2885 |
+
directives: [{
|
2886 |
+
name: "show",
|
2887 |
+
rawName: "v-show",
|
2888 |
+
value: t.show_autotls,
|
2889 |
+
expression: "show_autotls"
|
2890 |
+
}],
|
2891 |
+
attrs: {
|
2892 |
+
name: "autotls",
|
2893 |
+
title: t.text_autotls_title,
|
2894 |
+
label: t.text_autotls_label,
|
2895 |
+
description: t.text_autotls_description
|
2896 |
+
},
|
2897 |
+
model: {
|
2898 |
+
value: t.autotls,
|
2899 |
+
callback: function(e) {
|
2900 |
+
t.autotls = e
|
2901 |
+
},
|
2902 |
+
expression: "autotls"
|
2903 |
+
}
|
2904 |
+
}), i("div", {
|
2905 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
2906 |
+
}), i("settings-input-switch", {
|
2907 |
+
attrs: {
|
2908 |
+
name: "auth",
|
2909 |
+
title: t.text_auth_title,
|
2910 |
+
label: t.text_auth_label
|
2911 |
+
},
|
2912 |
+
model: {
|
2913 |
+
value: t.auth,
|
2914 |
+
callback: function(e) {
|
2915 |
+
t.auth = e
|
2916 |
+
},
|
2917 |
+
expression: "auth"
|
2918 |
+
}
|
2919 |
+
}), i("settings-input-text", {
|
2920 |
+
directives: [{
|
2921 |
+
name: "show",
|
2922 |
+
rawName: "v-show",
|
2923 |
+
value: t.auth,
|
2924 |
+
expression: "auth"
|
2925 |
+
}],
|
2926 |
+
attrs: {
|
2927 |
+
name: "user",
|
2928 |
+
label: t.text_user_label,
|
2929 |
+
is_error: t.field_errors.includes("user")
|
2930 |
+
},
|
2931 |
+
on: {
|
2932 |
+
is_error_update: function(e) {
|
2933 |
+
return t.removeFieldError("user")
|
2934 |
+
}
|
2935 |
+
},
|
2936 |
+
model: {
|
2937 |
+
value: t.user,
|
2938 |
+
callback: function(e) {
|
2939 |
+
t.user = e
|
2940 |
+
},
|
2941 |
+
expression: "user"
|
2942 |
+
}
|
2943 |
+
}), i("settings-input-text", {
|
2944 |
+
directives: [{
|
2945 |
+
name: "show",
|
2946 |
+
rawName: "v-show",
|
2947 |
+
value: t.auth,
|
2948 |
+
expression: "auth"
|
2949 |
+
}],
|
2950 |
+
attrs: {
|
2951 |
+
name: "pass",
|
2952 |
+
type: "password",
|
2953 |
+
label: t.text_pass_label,
|
2954 |
+
is_error: t.field_errors.includes("pass")
|
2955 |
+
},
|
2956 |
+
on: {
|
2957 |
+
is_error_update: function(e) {
|
2958 |
+
return t.removeFieldError("pass")
|
2959 |
+
}
|
2960 |
+
},
|
2961 |
+
model: {
|
2962 |
+
value: t.pass,
|
2963 |
+
callback: function(e) {
|
2964 |
+
t.pass = e
|
2965 |
+
},
|
2966 |
+
expression: "pass"
|
2967 |
+
}
|
2968 |
+
}), i("div", {
|
2969 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
2970 |
+
}), i("settings-input-text", {
|
2971 |
+
attrs: {
|
2972 |
+
name: "from_name",
|
2973 |
+
label: t.text_from_name_label,
|
2974 |
+
description: t.text_from_name_description
|
2975 |
+
},
|
2976 |
+
model: {
|
2977 |
+
value: t.from_name,
|
2978 |
+
callback: function(e) {
|
2979 |
+
t.from_name = e
|
2980 |
+
},
|
2981 |
+
expression: "from_name"
|
2982 |
+
}
|
2983 |
+
}), i("settings-input-switch", {
|
2984 |
+
attrs: {
|
2985 |
+
classname: "sub_setting",
|
2986 |
+
name: "from_name_force",
|
2987 |
+
title: t.text_force_from_name_title,
|
2988 |
+
label: t.text_force_from_name_label
|
2989 |
+
},
|
2990 |
+
model: {
|
2991 |
+
value: t.from_name_force,
|
2992 |
+
callback: function(e) {
|
2993 |
+
t.from_name_force = e
|
2994 |
+
},
|
2995 |
+
expression: "from_name_force"
|
2996 |
+
}
|
2997 |
+
}), i("settings-input-text", {
|
2998 |
+
attrs: {
|
2999 |
+
name: "from_email",
|
3000 |
+
type: "email",
|
3001 |
+
label: t.text_from_email_label,
|
3002 |
+
description: t.text_from_email_description,
|
3003 |
+
is_error: t.field_errors.includes("from_email")
|
3004 |
+
},
|
3005 |
+
on: {
|
3006 |
+
is_error_update: function(e) {
|
3007 |
+
return t.removeFieldError("from_email")
|
3008 |
+
}
|
3009 |
+
},
|
3010 |
+
model: {
|
3011 |
+
value: t.from_email,
|
3012 |
+
callback: function(e) {
|
3013 |
+
t.from_email = e
|
3014 |
+
},
|
3015 |
+
expression: "from_email"
|
3016 |
+
}
|
3017 |
+
}), i("settings-input-switch", {
|
3018 |
+
attrs: {
|
3019 |
+
classname: "sub_setting",
|
3020 |
+
name: "from_email_force",
|
3021 |
+
title: t.text_force_from_email_title,
|
3022 |
+
label: t.text_force_from_email_label
|
3023 |
+
},
|
3024 |
+
model: {
|
3025 |
+
value: t.from_email_force,
|
3026 |
+
callback: function(e) {
|
3027 |
+
t.from_email_force = e
|
3028 |
+
},
|
3029 |
+
expression: "from_email_force"
|
3030 |
+
}
|
3031 |
+
})], 1)])
|
3032 |
+
},
|
3033 |
+
Ne = [],
|
3034 |
+
Qe = (i("a4d3"), i("e01a"), function() {
|
3035 |
+
var t = this,
|
3036 |
+
e = t.$createElement,
|
3037 |
+
i = t._self._c || e;
|
3038 |
+
return i("div", {
|
3039 |
+
staticClass: "settings-input-radio"
|
3040 |
+
}, [t.label ? i("span", {
|
3041 |
+
staticClass: "settings-input-label-container"
|
3042 |
+
}, [i("span", {
|
3043 |
+
staticClass: "label",
|
3044 |
+
domProps: {
|
3045 |
+
innerHTML: t._s(t.label)
|
3046 |
+
}
|
3047 |
+
})]) : t._e(), i("div", {
|
3048 |
+
staticClass: "settings-input-radio-container"
|
3049 |
+
}, t._l(t.options, (function(e) {
|
3050 |
+
return i("label", {
|
3051 |
+
key: e.value,
|
3052 |
+
class: t.labelClass(e.value),
|
3053 |
+
attrs: {
|
3054 |
+
for: "mo2f-setup-settings-radio-" + t.name + "[" + e.value + "]"
|
3055 |
+
}
|
3056 |
+
}, [i("span", {
|
3057 |
+
class: t.titleClass(e.value)
|
3058 |
+
}), i("input", {
|
3059 |
+
directives: [{
|
3060 |
+
name: "model",
|
3061 |
+
rawName: "v-model",
|
3062 |
+
value: t.selected,
|
3063 |
+
expression: "selected"
|
3064 |
+
}],
|
3065 |
+
attrs: {
|
3066 |
+
id: "mo2f-setup-settings-radio-" + t.name + "[" + e.value + "]",
|
3067 |
+
type: "radio",
|
3068 |
+
name: t.name,
|
3069 |
+
autocomplete: "off",
|
3070 |
+
readonly: t.disabled
|
3071 |
+
},
|
3072 |
+
domProps: {
|
3073 |
+
value: e.value,
|
3074 |
+
checked: t.isChecked(e.value),
|
3075 |
+
checked: t._q(t.selected, e.value)
|
3076 |
+
},
|
3077 |
+
on: {
|
3078 |
+
change: [function(i) {
|
3079 |
+
t.selected = e.value
|
3080 |
+
}, t.updateSetting]
|
3081 |
+
}
|
3082 |
+
}), i("span", {
|
3083 |
+
staticClass: "input-label",
|
3084 |
+
domProps: {
|
3085 |
+
innerHTML: t._s(e.label)
|
3086 |
+
}
|
3087 |
+
})])
|
3088 |
+
})), 0), t.description ? i("p", {
|
3089 |
+
staticClass: "description",
|
3090 |
+
domProps: {
|
3091 |
+
innerHTML: t._s(t.description)
|
3092 |
+
}
|
3093 |
+
}) : t._e()])
|
3094 |
+
}),
|
3095 |
+
Le = [],
|
3096 |
+
We = {
|
3097 |
+
name: "SettingsInputRadio",
|
3098 |
+
props: {
|
3099 |
+
options: Array,
|
3100 |
+
label: String,
|
3101 |
+
name: String,
|
3102 |
+
value: String,
|
3103 |
+
description: String,
|
3104 |
+
disabled: Boolean
|
3105 |
+
},
|
3106 |
+
data: function() {
|
3107 |
+
return {
|
3108 |
+
has_error: !1
|
3109 |
+
}
|
3110 |
+
},
|
3111 |
+
computed: {
|
3112 |
+
selected: {
|
3113 |
+
get: function() {
|
3114 |
+
return this.value
|
3115 |
+
},
|
3116 |
+
set: function(t) {
|
3117 |
+
this.$emit("input", t)
|
3118 |
+
}
|
3119 |
+
}
|
3120 |
+
},
|
3121 |
+
methods: {
|
3122 |
+
updateSetting: function() {
|
3123 |
+
if (this.disabled) return !1
|
3124 |
+
},
|
3125 |
+
titleClass: function(t) {
|
3126 |
+
var e = "mo2f-setup-styled-radio";
|
3127 |
+
return this.isChecked(t) && (e += " mo2f-setup-styled-radio-checked"), e
|
3128 |
+
},
|
3129 |
+
labelClass: function(t) {
|
3130 |
+
var e = "";
|
3131 |
+
return this.isChecked(t) && (e += " mo2f-setup-styled-radio-label-checked"), e
|
3132 |
+
},
|
3133 |
+
isChecked: function(t) {
|
3134 |
+
return t === this.selected
|
3135 |
+
}
|
3136 |
+
}
|
3137 |
+
},
|
3138 |
+
Ue = We,
|
3139 |
+
He = Object(_["a"])(Ue, Qe, Le, !1, null, null, null),
|
3140 |
+
Re = He.exports,
|
3141 |
+
Ge = function() {
|
3142 |
+
var t = this,
|
3143 |
+
e = t.$createElement,
|
3144 |
+
s = t._self._c || e;
|
3145 |
+
return s("div", {
|
3146 |
+
staticClass: "settings-input-number",
|
3147 |
+
class: {
|
3148 |
+
"settings-input-number-error": t.field_error
|
3149 |
+
}
|
3150 |
+
}, [s("label", {
|
3151 |
+
staticClass: "settings-input-label-container",
|
3152 |
+
attrs: {
|
3153 |
+
for: t.id
|
3154 |
+
}
|
3155 |
+
}, [t.label ? s("span", {
|
3156 |
+
staticClass: "label",
|
3157 |
+
domProps: {
|
3158 |
+
innerHTML: t._s(t.label)
|
3159 |
+
}
|
3160 |
+
}) : t._e(), t.tooltip ? s("settings-info-tooltip", {
|
3161 |
+
attrs: {
|
3162 |
+
content: t.tooltip
|
3163 |
+
}
|
3164 |
+
}) : t._e()], 1), s("input", {
|
3165 |
+
directives: [{
|
3166 |
+
name: "model",
|
3167 |
+
rawName: "v-model",
|
3168 |
+
value: t.currentValue,
|
3169 |
+
expression: "currentValue"
|
3170 |
+
}],
|
3171 |
+
attrs: {
|
3172 |
+
id: t.id,
|
3173 |
+
type: "number",
|
3174 |
+
name: t.name,
|
3175 |
+
placeholder: t.placeholder,
|
3176 |
+
min: t.min,
|
3177 |
+
max: t.max,
|
3178 |
+
step: t.step,
|
3179 |
+
readonly: t.disabled
|
3180 |
+
},
|
3181 |
+
domProps: {
|
3182 |
+
value: t.currentValue
|
3183 |
+
},
|
3184 |
+
on: {
|
3185 |
+
change: t.inputUpdate,
|
3186 |
+
input: function(e) {
|
3187 |
+
e.target.composing || (t.currentValue = e.target.value)
|
3188 |
+
}
|
3189 |
+
}
|
3190 |
+
}), t.has_error ? s("p", {
|
3191 |
+
staticClass: "error"
|
3192 |
+
}, [s("inline-svg", {
|
3193 |
+
staticClass: "icon",
|
3194 |
+
attrs: {
|
3195 |
+
src: i("827a"),
|
3196 |
+
width: "16"
|
3197 |
+
}
|
3198 |
+
}), s("span", {
|
3199 |
+
domProps: {
|
3200 |
+
innerHTML: t._s(t.has_error)
|
3201 |
+
}
|
3202 |
+
})], 1) : t._e(), t.description ? s("p", {
|
3203 |
+
staticClass: "description",
|
3204 |
+
domProps: {
|
3205 |
+
innerHTML: t._s(t.description)
|
3206 |
+
}
|
3207 |
+
}) : t._e()])
|
3208 |
+
},
|
3209 |
+
Ve = [],
|
3210 |
+
Ye = (i("a9e3"), {
|
3211 |
+
name: "SettingsInputNumber",
|
3212 |
+
components: {
|
3213 |
+
SettingsInfoTooltip: Nt
|
3214 |
+
},
|
3215 |
+
props: {
|
3216 |
+
name: String,
|
3217 |
+
value: [Number, String],
|
3218 |
+
label: String,
|
3219 |
+
description: String,
|
3220 |
+
placeholder: String,
|
3221 |
+
type: {
|
3222 |
+
type: String,
|
3223 |
+
default: "text"
|
3224 |
+
},
|
3225 |
+
tooltip: String,
|
3226 |
+
default_value: String,
|
3227 |
+
min: Number,
|
3228 |
+
max: Number,
|
3229 |
+
disabled: Boolean,
|
3230 |
+
step: {
|
3231 |
+
type: Number,
|
3232 |
+
default: 1
|
3233 |
+
},
|
3234 |
+
round: {
|
3235 |
+
type: Boolean,
|
3236 |
+
default: !1
|
3237 |
+
},
|
3238 |
+
is_error: Boolean
|
3239 |
+
},
|
3240 |
+
data: function() {
|
3241 |
+
return {
|
3242 |
+
has_error: !1,
|
3243 |
+
id: "input-" + this.name,
|
3244 |
+
text_error_value: Object(c["c"])(Object(c["a"])("Please enter a value between %1$s and %2$s", "mo2f-setup"), "<strong>" + this.min + "</strong>", "<strong>" + this.max + "</strong>"),
|
3245 |
+
text_error_round: Object(c["a"])("Value has to be a round number", "mo2f-setup")
|
3246 |
+
}
|
3247 |
+
},
|
3248 |
+
computed: {
|
3249 |
+
currentValue: {
|
3250 |
+
get: function() {
|
3251 |
+
return this.value
|
3252 |
+
},
|
3253 |
+
set: function(t) {
|
3254 |
+
this.$emit("is_error_update", !1), this.$emit("input", parseInt(t, 10))
|
3255 |
+
}
|
3256 |
+
},
|
3257 |
+
field_error: {
|
3258 |
+
get: function() {
|
3259 |
+
return this.is_error
|
3260 |
+
},
|
3261 |
+
set: function(t) {
|
3262 |
+
this.$emit("is_error_update", t)
|
3263 |
+
}
|
3264 |
+
}
|
3265 |
+
},
|
3266 |
+
methods: {
|
3267 |
+
inputUpdate: function(t) {
|
3268 |
+
if (this.disabled) return !1;
|
3269 |
+
this.has_error = !1;
|
3270 |
+
var e = parseFloat(t.target.value);
|
3271 |
+
return this.round && e % 1 !== 0 ? (this.has_error = this.text_error_round, !1) : e > this.max || e < this.min ? (this.has_error = this.text_error_value, !1) : void 0
|
3272 |
+
}
|
3273 |
+
}
|
3274 |
+
}),
|
3275 |
+
Je = Ye,
|
3276 |
+
Ke = Object(_["a"])(Je, Ge, Ve, !1, null, null, null),
|
3277 |
+
qe = Ke.exports,
|
3278 |
+
Ze = function() {
|
3279 |
+
var t = this,
|
3280 |
+
e = t.$createElement,
|
3281 |
+
i = t._self._c || e;
|
3282 |
+
return i("div", {
|
3283 |
+
staticClass: "settings-input-switch",
|
3284 |
+
class: t.classname
|
3285 |
+
}, [i("label", {
|
3286 |
+
attrs: {
|
3287 |
+
for: t.id
|
3288 |
+
}
|
3289 |
+
}, [i("span", {
|
3290 |
+
staticClass: "title settings-input-label-container"
|
3291 |
+
}, [i("span", {
|
3292 |
+
staticClass: "label",
|
3293 |
+
domProps: {
|
3294 |
+
innerHTML: t._s(t.title)
|
3295 |
+
}
|
3296 |
+
}), t.tooltip ? i("settings-info-tooltip", {
|
3297 |
+
attrs: {
|
3298 |
+
content: t.tooltip
|
3299 |
+
}
|
3300 |
+
}) : t._e()], 1), t.description ? i("p", {
|
3301 |
+
staticClass: "description",
|
3302 |
+
domProps: {
|
3303 |
+
innerHTML: t._s(t.description)
|
3304 |
+
}
|
3305 |
+
}) : t._e(), i("span", {
|
3306 |
+
staticClass: "control"
|
3307 |
+
}, [i("input", {
|
3308 |
+
directives: [{
|
3309 |
+
name: "model",
|
3310 |
+
rawName: "v-model",
|
3311 |
+
value: t.currentValue,
|
3312 |
+
expression: "currentValue"
|
3313 |
+
}],
|
3314 |
+
attrs: {
|
3315 |
+
id: t.id,
|
3316 |
+
type: "checkbox",
|
3317 |
+
name: t.name,
|
3318 |
+
disabled: t.disabled
|
3319 |
+
},
|
3320 |
+
domProps: {
|
3321 |
+
checked: Array.isArray(t.currentValue) ? t._i(t.currentValue, null) > -1 : t.currentValue
|
3322 |
+
},
|
3323 |
+
on: {
|
3324 |
+
change: [function(e) {
|
3325 |
+
var i = t.currentValue,
|
3326 |
+
s = e.target,
|
3327 |
+
a = !!s.checked;
|
3328 |
+
if (Array.isArray(i)) {
|
3329 |
+
var n = null,
|
3330 |
+
o = t._i(i, n);
|
3331 |
+
s.checked ? o < 0 && (t.currentValue = i.concat([n])) : o > -1 && (t.currentValue = i.slice(0, o).concat(i.slice(o + 1)))
|
3332 |
+
} else t.currentValue = a
|
3333 |
+
}, t.inputUpdate]
|
3334 |
+
}
|
3335 |
+
}), i("span", {
|
3336 |
+
class: {
|
3337 |
+
"toggle-switch": !0, "toggle-switch-with-label": t.label
|
3338 |
+
}
|
3339 |
+
}), t.label ? i("span", {
|
3340 |
+
staticClass: "label-description",
|
3341 |
+
domProps: {
|
3342 |
+
innerHTML: t._s(t.label)
|
3343 |
+
}
|
3344 |
+
}) : t._e()])])])
|
3345 |
+
},
|
3346 |
+
Xe = [],
|
3347 |
+
$e = {
|
3348 |
+
name: "SettingsInputSwitch",
|
3349 |
+
components: {
|
3350 |
+
SettingsInfoTooltip: Nt
|
3351 |
+
},
|
3352 |
+
props: {
|
3353 |
+
name: String,
|
3354 |
+
value: Boolean,
|
3355 |
+
title: String,
|
3356 |
+
label: String,
|
3357 |
+
description: String,
|
3358 |
+
tooltip: String,
|
3359 |
+
classname: String,
|
3360 |
+
disabled: Boolean
|
3361 |
+
},
|
3362 |
+
data: function() {
|
3363 |
+
return {
|
3364 |
+
has_error: !1,
|
3365 |
+
id: "input-" + this.name
|
3366 |
+
}
|
3367 |
+
},
|
3368 |
+
computed: {
|
3369 |
+
currentValue: {
|
3370 |
+
get: function() {
|
3371 |
+
return this.value
|
3372 |
+
},
|
3373 |
+
set: function(t) {
|
3374 |
+
this.$emit("input", !!t)
|
3375 |
+
}
|
3376 |
+
}
|
3377 |
+
},
|
3378 |
+
methods: {
|
3379 |
+
inputUpdate: function() {
|
3380 |
+
if (this.disabled) return !1
|
3381 |
+
}
|
3382 |
+
}
|
3383 |
+
},
|
3384 |
+
ti = $e,
|
3385 |
+
ei = Object(_["a"])(ti, Ze, Xe, !1, null, null, null),
|
3386 |
+
ii = ei.exports,
|
3387 |
+
si = {
|
3388 |
+
name: "WizardStepConfigureMailerSmtp",
|
3389 |
+
components: {
|
3390 |
+
SettingsInputText: Ut,
|
3391 |
+
SettingsInputRadio: Re,
|
3392 |
+
SettingsInputNumber: qe,
|
3393 |
+
SettingsInputSwitch: ii
|
3394 |
+
},
|
3395 |
+
data: function() {
|
3396 |
+
return {
|
3397 |
+
mailer: "smtp",
|
3398 |
+
text_host_label: Object(c["a"])("SMTP Host", "mo2f-setup"),
|
3399 |
+
text_encryption_label: Object(c["a"])("Encryption", "mo2f-setup"),
|
3400 |
+
text_port_label: Object(c["a"])("SMTP Port", "mo2f-setup"),
|
3401 |
+
text_autotls_title: Object(c["a"])("Auto TLS", "mo2f-setup"),
|
3402 |
+
text_autotls_label: Object(c["a"])("Enable Auto TLS", "mo2f-setup"),
|
3403 |
+
text_autotls_description: Object(c["a"])("By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled.", "mo2f-setup"),
|
3404 |
+
text_auth_title: Object(c["a"])("Authentication", "mo2f-setup"),
|
3405 |
+
text_auth_label: Object(c["a"])("Enable Authentication", "mo2f-setup"),
|
3406 |
+
text_user_label: Object(c["a"])("SMTP Username", "mo2f-setup"),
|
3407 |
+
text_pass_label: Object(c["a"])("SMTP Password", "mo2f-setup"),
|
3408 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
3409 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
3410 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
3411 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
3412 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
3413 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
3414 |
+
text_encryption_description: Object(c["a"])("For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS.", "mo2f-setup"),
|
3415 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3416 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3417 |
+
description: this.$wpms.mailer_options.smtp.description,
|
3418 |
+
encryptionOptions: [{
|
3419 |
+
label: Object(c["a"])("None", "mo2f-setup"),
|
3420 |
+
value: "none",
|
3421 |
+
default_port: 25
|
3422 |
+
}, {
|
3423 |
+
label: Object(c["a"])("SSL", "mo2f-setup"),
|
3424 |
+
value: "ssl",
|
3425 |
+
default_port: 465
|
3426 |
+
}, {
|
3427 |
+
label: Object(c["a"])("TLS", "mo2f-setup"),
|
3428 |
+
value: "tls",
|
3429 |
+
default_port: 587
|
3430 |
+
}],
|
3431 |
+
show_autotls: !0,
|
3432 |
+
show_user_and_pass: !0,
|
3433 |
+
field_errors: []
|
3434 |
+
}
|
3435 |
+
},
|
3436 |
+
computed: Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.smtp.host", "settings.smtp.auth", "settings.smtp.port", "settings.smtp.encryption", "settings.smtp.user", "settings.smtp.pass", "settings.smtp.autotls", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])),
|
3437 |
+
watch: {
|
3438 |
+
encryption: function(t) {
|
3439 |
+
this.show_autotls = "tls" !== t
|
3440 |
+
}
|
3441 |
+
},
|
3442 |
+
methods: {
|
3443 |
+
getEncryptionDefaultPort: function(t) {
|
3444 |
+
return this.encryptionOptions.find((function(e) {
|
3445 |
+
return e.value === t
|
3446 |
+
})).default_port
|
3447 |
+
},
|
3448 |
+
encryptionChanged: function(t) {
|
3449 |
+
this.port = this.getEncryptionDefaultPort(t)
|
3450 |
+
},
|
3451 |
+
areRequiredFieldsValid: function() {
|
3452 |
+
var t = !0;
|
3453 |
+
return "" === this.host && (t = !1, this.field_errors.push("host")), ("" === this.port || isNaN(this.port)) && (t = !1, this.field_errors.push("port")), this.auth && ("" === this.user && (t = !1, this.field_errors.push("user")), "" === this.pass && (t = !1, this.field_errors.push("pass"))), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
3454 |
+
},
|
3455 |
+
removeFieldError: function(t) {
|
3456 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
3457 |
+
return e !== t
|
3458 |
+
}))
|
3459 |
+
}
|
3460 |
+
},
|
3461 |
+
mounted: function() {
|
3462 |
+
"tls" === this.encryption && (this.show_autotls = !1)
|
3463 |
+
}
|
3464 |
+
},
|
3465 |
+
ai = si,
|
3466 |
+
ni = Object(_["a"])(ai, Fe, Ne, !1, null, null, null),
|
3467 |
+
oi = ni.exports,
|
3468 |
+
ri = function() {
|
3469 |
+
var t = this,
|
3470 |
+
e = t.$createElement,
|
3471 |
+
s = t._self._c || e;
|
3472 |
+
return s("div", {
|
3473 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-smtpcom"
|
3474 |
+
}, [s("p", {
|
3475 |
+
staticClass: "mailer-description",
|
3476 |
+
domProps: {
|
3477 |
+
innerHTML: t._s(t.description)
|
3478 |
+
}
|
3479 |
+
}), s("p", {
|
3480 |
+
staticClass: "mailer-description mailer-description-links"
|
3481 |
+
}, [s("a", {
|
3482 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-small mo2f-setup-button-secondary",
|
3483 |
+
attrs: {
|
3484 |
+
href: "https://wpmailsmtp.com/go/smtp/",
|
3485 |
+
target: "_blank",
|
3486 |
+
rel: "noopener noreferrer"
|
3487 |
+
}
|
3488 |
+
}, [s("span", {
|
3489 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
3490 |
+
}, [t._v(" " + t._s(t.text_get_started_button)), s("inline-svg", {
|
3491 |
+
staticClass: "icon",
|
3492 |
+
attrs: {
|
3493 |
+
src: i("107e"),
|
3494 |
+
width: "16",
|
3495 |
+
height: "23"
|
3496 |
+
}
|
3497 |
+
})], 1)]), s("a", {
|
3498 |
+
staticClass: "mo2f-setup-link",
|
3499 |
+
attrs: {
|
3500 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-smtp-com-mailer-in-mo2f-setup",
|
3501 |
+
target: "_blank",
|
3502 |
+
rel: "noopener noreferrer"
|
3503 |
+
}
|
3504 |
+
}, [t._v(t._s(t.text_documentation_link))])]), s("div", {
|
3505 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
3506 |
+
}, [s("settings-input-text", {
|
3507 |
+
attrs: {
|
3508 |
+
name: "api_key",
|
3509 |
+
type: "password",
|
3510 |
+
label: t.text_api_key_label,
|
3511 |
+
description: t.text_api_key_description,
|
3512 |
+
is_error: t.field_errors.includes("api_key")
|
3513 |
+
},
|
3514 |
+
on: {
|
3515 |
+
is_error_update: function(e) {
|
3516 |
+
return t.removeFieldError("api_key")
|
3517 |
+
}
|
3518 |
+
},
|
3519 |
+
model: {
|
3520 |
+
value: t.api_key,
|
3521 |
+
callback: function(e) {
|
3522 |
+
t.api_key = e
|
3523 |
+
},
|
3524 |
+
expression: "api_key"
|
3525 |
+
}
|
3526 |
+
}), s("settings-input-text", {
|
3527 |
+
attrs: {
|
3528 |
+
name: "channel",
|
3529 |
+
label: t.text_channel_label,
|
3530 |
+
description: t.text_channel_description,
|
3531 |
+
is_error: t.field_errors.includes("channel")
|
3532 |
+
},
|
3533 |
+
on: {
|
3534 |
+
is_error_update: function(e) {
|
3535 |
+
return t.removeFieldError("channel")
|
3536 |
+
}
|
3537 |
+
},
|
3538 |
+
model: {
|
3539 |
+
value: t.channel,
|
3540 |
+
callback: function(e) {
|
3541 |
+
t.channel = e
|
3542 |
+
},
|
3543 |
+
expression: "channel"
|
3544 |
+
}
|
3545 |
+
}), s("settings-input-text", {
|
3546 |
+
attrs: {
|
3547 |
+
name: "from_name",
|
3548 |
+
label: t.text_from_name_label,
|
3549 |
+
description: t.text_from_name_description
|
3550 |
+
},
|
3551 |
+
model: {
|
3552 |
+
value: t.from_name,
|
3553 |
+
callback: function(e) {
|
3554 |
+
t.from_name = e
|
3555 |
+
},
|
3556 |
+
expression: "from_name"
|
3557 |
+
}
|
3558 |
+
}), s("settings-input-switch", {
|
3559 |
+
attrs: {
|
3560 |
+
classname: "sub_setting",
|
3561 |
+
name: "from_name_force",
|
3562 |
+
title: t.text_force_from_name_title,
|
3563 |
+
label: t.text_force_from_name_label
|
3564 |
+
},
|
3565 |
+
model: {
|
3566 |
+
value: t.from_name_force,
|
3567 |
+
callback: function(e) {
|
3568 |
+
t.from_name_force = e
|
3569 |
+
},
|
3570 |
+
expression: "from_name_force"
|
3571 |
+
}
|
3572 |
+
}), s("settings-input-text", {
|
3573 |
+
attrs: {
|
3574 |
+
name: "from_email",
|
3575 |
+
type: "email",
|
3576 |
+
label: t.text_from_email_label,
|
3577 |
+
description: t.text_from_email_description,
|
3578 |
+
is_error: t.field_errors.includes("from_email")
|
3579 |
+
},
|
3580 |
+
on: {
|
3581 |
+
is_error_update: function(e) {
|
3582 |
+
return t.removeFieldError("from_email")
|
3583 |
+
}
|
3584 |
+
},
|
3585 |
+
model: {
|
3586 |
+
value: t.from_email,
|
3587 |
+
callback: function(e) {
|
3588 |
+
t.from_email = e
|
3589 |
+
},
|
3590 |
+
expression: "from_email"
|
3591 |
+
}
|
3592 |
+
}), s("settings-input-switch", {
|
3593 |
+
attrs: {
|
3594 |
+
classname: "sub_setting",
|
3595 |
+
name: "from_email_force",
|
3596 |
+
title: t.text_force_from_email_title,
|
3597 |
+
label: t.text_force_from_email_label
|
3598 |
+
},
|
3599 |
+
model: {
|
3600 |
+
value: t.from_email_force,
|
3601 |
+
callback: function(e) {
|
3602 |
+
t.from_email_force = e
|
3603 |
+
},
|
3604 |
+
expression: "from_email_force"
|
3605 |
+
}
|
3606 |
+
})], 1)])
|
3607 |
+
},
|
3608 |
+
li = [],
|
3609 |
+
ci = (i("baa5"), {
|
3610 |
+
name: "WizardStepConfigureMailerSmtpCom",
|
3611 |
+
components: {
|
3612 |
+
SettingsInputText: Ut,
|
3613 |
+
SettingsInputSwitch: ii
|
3614 |
+
},
|
3615 |
+
data: function() {
|
3616 |
+
return {
|
3617 |
+
mailer: "smtpcom",
|
3618 |
+
text_api_key_label: Object(c["a"])("API Key", "mo2f-setup"),
|
3619 |
+
text_channel_label: Object(c["a"])("Sender Name", "mo2f-setup"),
|
3620 |
+
text_api_key_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get an API Key for SMTP.com.", "mo2f-setup"), '<a href="https://my.smtp.com/settings/api" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3621 |
+
text_channel_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get a Sender Name for SMTP.com.", "mo2f-setup"), '<a href="https://my.smtp.com/senders/" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3622 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
3623 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
3624 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
3625 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
3626 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3627 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3628 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
3629 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
3630 |
+
text_get_started_button: Object(c["a"])("Get Started with SMTP.com", "mo2f-setup"),
|
3631 |
+
text_documentation_link: Object(c["a"])("Read how to set up SMTP.com", "mo2f-setup"),
|
3632 |
+
description: this.$wpms.mailer_options.smtpcom.description.substr(0, this.$wpms.mailer_options.smtpcom.description.lastIndexOf("<br><br>")),
|
3633 |
+
field_errors: []
|
3634 |
+
}
|
3635 |
+
},
|
3636 |
+
computed: Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.smtpcom.api_key", "settings.smtpcom.channel", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])),
|
3637 |
+
methods: {
|
3638 |
+
areRequiredFieldsValid: function() {
|
3639 |
+
var t = !0;
|
3640 |
+
return "" === this.api_key && (t = !1, this.field_errors.push("api_key")), "" === this.channel && (t = !1, this.field_errors.push("channel")), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
3641 |
+
},
|
3642 |
+
removeFieldError: function(t) {
|
3643 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
3644 |
+
return e !== t
|
3645 |
+
}))
|
3646 |
+
}
|
3647 |
+
}
|
3648 |
+
}),
|
3649 |
+
pi = ci,
|
3650 |
+
mi = Object(_["a"])(pi, ri, li, !1, null, null, null),
|
3651 |
+
ui = mi.exports,
|
3652 |
+
di = function() {
|
3653 |
+
var t = this,
|
3654 |
+
e = t.$createElement,
|
3655 |
+
s = t._self._c || e;
|
3656 |
+
return s("div", {
|
3657 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-sendinblue"
|
3658 |
+
}, [s("p", {
|
3659 |
+
staticClass: "mailer-description",
|
3660 |
+
domProps: {
|
3661 |
+
innerHTML: t._s(t.description)
|
3662 |
+
}
|
3663 |
+
}), s("p", {
|
3664 |
+
staticClass: "mailer-description mailer-description-links"
|
3665 |
+
}, [s("a", {
|
3666 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-small mo2f-setup-button-secondary",
|
3667 |
+
attrs: {
|
3668 |
+
href: "https://wpmailsmtp.com/go/sendinblue/",
|
3669 |
+
target: "_blank",
|
3670 |
+
rel: "noopener noreferrer"
|
3671 |
+
}
|
3672 |
+
}, [s("span", {
|
3673 |
+
staticClass: "text-with-arrow text-with-arrow-right"
|
3674 |
+
}, [t._v(" " + t._s(t.text_get_started_button)), s("inline-svg", {
|
3675 |
+
staticClass: "icon",
|
3676 |
+
attrs: {
|
3677 |
+
src: i("107e"),
|
3678 |
+
width: "16",
|
3679 |
+
height: "23"
|
3680 |
+
}
|
3681 |
+
})], 1)]), s("a", {
|
3682 |
+
staticClass: "mo2f-setup-link",
|
3683 |
+
attrs: {
|
3684 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-mo2f-setup",
|
3685 |
+
target: "_blank",
|
3686 |
+
rel: "noopener noreferrer"
|
3687 |
+
}
|
3688 |
+
}, [t._v(t._s(t.text_documentation_link))])]), s("div", {
|
3689 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
3690 |
+
}, [s("settings-input-text", {
|
3691 |
+
attrs: {
|
3692 |
+
name: "api_key",
|
3693 |
+
type: "password",
|
3694 |
+
label: t.text_api_key_label,
|
3695 |
+
description: t.text_api_key_description,
|
3696 |
+
is_error: t.field_errors.includes("api_key")
|
3697 |
+
},
|
3698 |
+
on: {
|
3699 |
+
is_error_update: function(e) {
|
3700 |
+
return t.removeFieldError("api_key")
|
3701 |
+
}
|
3702 |
+
},
|
3703 |
+
model: {
|
3704 |
+
value: t.api_key,
|
3705 |
+
callback: function(e) {
|
3706 |
+
t.api_key = e
|
3707 |
+
},
|
3708 |
+
expression: "api_key"
|
3709 |
+
}
|
3710 |
+
}), s("settings-input-text", {
|
3711 |
+
attrs: {
|
3712 |
+
name: "domain",
|
3713 |
+
label: t.text_domain_label,
|
3714 |
+
description: t.text_domain_description
|
3715 |
+
},
|
3716 |
+
model: {
|
3717 |
+
value: t.domain,
|
3718 |
+
callback: function(e) {
|
3719 |
+
t.domain = e
|
3720 |
+
},
|
3721 |
+
expression: "domain"
|
3722 |
+
}
|
3723 |
+
}), s("settings-input-text", {
|
3724 |
+
attrs: {
|
3725 |
+
name: "from_name",
|
3726 |
+
label: t.text_from_name_label,
|
3727 |
+
description: t.text_from_name_description
|
3728 |
+
},
|
3729 |
+
model: {
|
3730 |
+
value: t.from_name,
|
3731 |
+
callback: function(e) {
|
3732 |
+
t.from_name = e
|
3733 |
+
},
|
3734 |
+
expression: "from_name"
|
3735 |
+
}
|
3736 |
+
}), s("settings-input-switch", {
|
3737 |
+
attrs: {
|
3738 |
+
classname: "sub_setting",
|
3739 |
+
name: "from_name_force",
|
3740 |
+
title: t.text_force_from_name_title,
|
3741 |
+
label: t.text_force_from_name_label
|
3742 |
+
},
|
3743 |
+
model: {
|
3744 |
+
value: t.from_name_force,
|
3745 |
+
callback: function(e) {
|
3746 |
+
t.from_name_force = e
|
3747 |
+
},
|
3748 |
+
expression: "from_name_force"
|
3749 |
+
}
|
3750 |
+
}), s("settings-input-text", {
|
3751 |
+
attrs: {
|
3752 |
+
name: "from_email",
|
3753 |
+
type: "email",
|
3754 |
+
label: t.text_from_email_label,
|
3755 |
+
description: t.text_from_email_description,
|
3756 |
+
is_error: t.field_errors.includes("from_email")
|
3757 |
+
},
|
3758 |
+
on: {
|
3759 |
+
is_error_update: function(e) {
|
3760 |
+
return t.removeFieldError("from_email")
|
3761 |
+
}
|
3762 |
+
},
|
3763 |
+
model: {
|
3764 |
+
value: t.from_email,
|
3765 |
+
callback: function(e) {
|
3766 |
+
t.from_email = e
|
3767 |
+
},
|
3768 |
+
expression: "from_email"
|
3769 |
+
}
|
3770 |
+
}), s("settings-input-switch", {
|
3771 |
+
attrs: {
|
3772 |
+
classname: "sub_setting",
|
3773 |
+
name: "from_email_force",
|
3774 |
+
title: t.text_force_from_email_title,
|
3775 |
+
label: t.text_force_from_email_label
|
3776 |
+
},
|
3777 |
+
model: {
|
3778 |
+
value: t.from_email_force,
|
3779 |
+
callback: function(e) {
|
3780 |
+
t.from_email_force = e
|
3781 |
+
},
|
3782 |
+
expression: "from_email_force"
|
3783 |
+
}
|
3784 |
+
})], 1)])
|
3785 |
+
},
|
3786 |
+
_i = [],
|
3787 |
+
fi = {
|
3788 |
+
name: "WizardStepConfigureMailerSendinblue",
|
3789 |
+
components: {
|
3790 |
+
SettingsInputText: Ut,
|
3791 |
+
SettingsInputSwitch: ii
|
3792 |
+
},
|
3793 |
+
data: function() {
|
3794 |
+
return {
|
3795 |
+
mailer: "sendinblue",
|
3796 |
+
text_api_key_label: Object(c["a"])("API Key", "mo2f-setup"),
|
3797 |
+
text_domain_label: Object(c["a"])("Sending Domain", "mo2f-setup"),
|
3798 |
+
text_api_key_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get an API Key for Sendinblue.", "mo2f-setup"), '<a href="https://account.sendinblue.com/advanced/api" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3799 |
+
text_domain_description: Object(c["c"])(Object(c["a"])("Please input the sending domain/subdomain you configured in your Sendinblue dashboard. More information can be found in our %1$sSendinblue documentation%2$s", "mo2f-setup"), '<a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-mo2f-setup#setup-smtp" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3800 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
3801 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
3802 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
3803 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
3804 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3805 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3806 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
3807 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
3808 |
+
text_get_started_button: Object(c["a"])("Get Started with Sendinblue", "mo2f-setup"),
|
3809 |
+
text_documentation_link: Object(c["a"])("Read how to set up Sendinblue", "mo2f-setup"),
|
3810 |
+
description: this.$wpms.mailer_options.sendinblue.description.substr(0, this.$wpms.mailer_options.sendinblue.description.lastIndexOf("<br><br>")),
|
3811 |
+
field_errors: []
|
3812 |
+
}
|
3813 |
+
},
|
3814 |
+
computed: Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.sendinblue.api_key", "settings.sendinblue.domain", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])),
|
3815 |
+
methods: {
|
3816 |
+
areRequiredFieldsValid: function() {
|
3817 |
+
var t = !0;
|
3818 |
+
return "" === this.api_key && (t = !1, this.field_errors.push("api_key")), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
3819 |
+
},
|
3820 |
+
removeFieldError: function(t) {
|
3821 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
3822 |
+
return e !== t
|
3823 |
+
}))
|
3824 |
+
}
|
3825 |
+
}
|
3826 |
+
},
|
3827 |
+
hi = fi,
|
3828 |
+
gi = Object(_["a"])(hi, di, _i, !1, null, null, null),
|
3829 |
+
wi = gi.exports,
|
3830 |
+
bi = function() {
|
3831 |
+
var t = this,
|
3832 |
+
e = t.$createElement,
|
3833 |
+
i = t._self._c || e;
|
3834 |
+
return i("div", {
|
3835 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-mailgun"
|
3836 |
+
}, [i("p", {
|
3837 |
+
staticClass: "mailer-description",
|
3838 |
+
domProps: {
|
3839 |
+
innerHTML: t._s(t.description)
|
3840 |
+
}
|
3841 |
+
}), i("p", {
|
3842 |
+
staticClass: "mailer-description mailer-description-links"
|
3843 |
+
}, [i("a", {
|
3844 |
+
staticClass: "mo2f-setup-link",
|
3845 |
+
attrs: {
|
3846 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-mailgun-mailer-in-mo2f-setup/",
|
3847 |
+
target: "_blank",
|
3848 |
+
rel: "noopener noreferrer"
|
3849 |
+
}
|
3850 |
+
}, [t._v(t._s(t.text_documentation_link))])]), i("div", {
|
3851 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
3852 |
+
}, [i("settings-input-text", {
|
3853 |
+
attrs: {
|
3854 |
+
name: "api_key",
|
3855 |
+
type: "password",
|
3856 |
+
label: t.text_api_key_label,
|
3857 |
+
description: t.text_api_key_description,
|
3858 |
+
is_error: t.field_errors.includes("api_key")
|
3859 |
+
},
|
3860 |
+
on: {
|
3861 |
+
is_error_update: function(e) {
|
3862 |
+
return t.removeFieldError("api_key")
|
3863 |
+
}
|
3864 |
+
},
|
3865 |
+
model: {
|
3866 |
+
value: t.api_key,
|
3867 |
+
callback: function(e) {
|
3868 |
+
t.api_key = e
|
3869 |
+
},
|
3870 |
+
expression: "api_key"
|
3871 |
+
}
|
3872 |
+
}), i("settings-input-text", {
|
3873 |
+
attrs: {
|
3874 |
+
name: "domain",
|
3875 |
+
label: t.text_domain_label,
|
3876 |
+
description: t.text_domain_description,
|
3877 |
+
is_error: t.field_errors.includes("domain")
|
3878 |
+
},
|
3879 |
+
on: {
|
3880 |
+
is_error_update: function(e) {
|
3881 |
+
return t.removeFieldError("domain")
|
3882 |
+
}
|
3883 |
+
},
|
3884 |
+
model: {
|
3885 |
+
value: t.domain,
|
3886 |
+
callback: function(e) {
|
3887 |
+
t.domain = e
|
3888 |
+
},
|
3889 |
+
expression: "domain"
|
3890 |
+
}
|
3891 |
+
}), i("settings-input-radio", {
|
3892 |
+
attrs: {
|
3893 |
+
name: "region",
|
3894 |
+
label: t.text_region_label,
|
3895 |
+
options: t.regionOptions,
|
3896 |
+
description: t.text_region_description
|
3897 |
+
},
|
3898 |
+
model: {
|
3899 |
+
value: t.region,
|
3900 |
+
callback: function(e) {
|
3901 |
+
t.region = e
|
3902 |
+
},
|
3903 |
+
expression: "region"
|
3904 |
+
}
|
3905 |
+
}), i("settings-input-text", {
|
3906 |
+
attrs: {
|
3907 |
+
name: "from_name",
|
3908 |
+
label: t.text_from_name_label,
|
3909 |
+
description: t.text_from_name_description
|
3910 |
+
},
|
3911 |
+
model: {
|
3912 |
+
value: t.from_name,
|
3913 |
+
callback: function(e) {
|
3914 |
+
t.from_name = e
|
3915 |
+
},
|
3916 |
+
expression: "from_name"
|
3917 |
+
}
|
3918 |
+
}), i("settings-input-switch", {
|
3919 |
+
attrs: {
|
3920 |
+
classname: "sub_setting",
|
3921 |
+
name: "from_name_force",
|
3922 |
+
title: t.text_force_from_name_title,
|
3923 |
+
label: t.text_force_from_name_label
|
3924 |
+
},
|
3925 |
+
model: {
|
3926 |
+
value: t.from_name_force,
|
3927 |
+
callback: function(e) {
|
3928 |
+
t.from_name_force = e
|
3929 |
+
},
|
3930 |
+
expression: "from_name_force"
|
3931 |
+
}
|
3932 |
+
}), i("settings-input-text", {
|
3933 |
+
attrs: {
|
3934 |
+
name: "from_email",
|
3935 |
+
type: "email",
|
3936 |
+
label: t.text_from_email_label,
|
3937 |
+
description: t.text_from_email_description,
|
3938 |
+
is_error: t.field_errors.includes("from_email")
|
3939 |
+
},
|
3940 |
+
on: {
|
3941 |
+
is_error_update: function(e) {
|
3942 |
+
return t.removeFieldError("from_email")
|
3943 |
+
}
|
3944 |
+
},
|
3945 |
+
model: {
|
3946 |
+
value: t.from_email,
|
3947 |
+
callback: function(e) {
|
3948 |
+
t.from_email = e
|
3949 |
+
},
|
3950 |
+
expression: "from_email"
|
3951 |
+
}
|
3952 |
+
}), i("settings-input-switch", {
|
3953 |
+
attrs: {
|
3954 |
+
classname: "sub_setting",
|
3955 |
+
name: "from_email_force",
|
3956 |
+
title: t.text_force_from_email_title,
|
3957 |
+
label: t.text_force_from_email_label
|
3958 |
+
},
|
3959 |
+
model: {
|
3960 |
+
value: t.from_email_force,
|
3961 |
+
callback: function(e) {
|
3962 |
+
t.from_email_force = e
|
3963 |
+
},
|
3964 |
+
expression: "from_email_force"
|
3965 |
+
}
|
3966 |
+
})], 1)])
|
3967 |
+
},
|
3968 |
+
Ai = [],
|
3969 |
+
vi = (i("c975"), {
|
3970 |
+
name: "WizardStepConfigureMailerMailgun",
|
3971 |
+
components: {
|
3972 |
+
SettingsInputText: Ut,
|
3973 |
+
SettingsInputRadio: Re,
|
3974 |
+
SettingsInputSwitch: ii
|
3975 |
+
},
|
3976 |
+
data: function() {
|
3977 |
+
return {
|
3978 |
+
mailer: "mailgun",
|
3979 |
+
text_api_key_label: Object(c["a"])("API Key", "mo2f-setup"),
|
3980 |
+
text_domain_label: Object(c["a"])("Domain Name", "mo2f-setup"),
|
3981 |
+
text_region_label: Object(c["a"])("Region", "mo2f-setup"),
|
3982 |
+
text_api_key_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get an API Key from Mailgun.", "mo2f-setup"), '<a href="https://app.mailgun.com/app/account/security/api_keys" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3983 |
+
text_domain_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get a Domain Name from Mailgun.", "mo2f-setup"), '<a href="https://app.mailgun.com/app/domains" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3984 |
+
text_region_description: Object(c["c"])(Object(c["a"])("Define which endpoint you want to use for sending messages. If you are operating under EU laws, you may be required to use EU region. %1$sMore information%2$s on Mailgun.com.", "mo2f-setup"), '<a href="https://www.mailgun.com/regions" target="_blank" rel="noopener noreferrer">', "</a>"),
|
3985 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
3986 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
3987 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
3988 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
3989 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3990 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
3991 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
3992 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
3993 |
+
text_documentation_link: Object(c["a"])("Read how to set up Mailgun", "mo2f-setup"),
|
3994 |
+
description: this.$wpms.mailer_options.mailgun.description.substr(0, this.$wpms.mailer_options.mailgun.description.indexOf("<br>")),
|
3995 |
+
regionOptions: [{
|
3996 |
+
label: Object(c["a"])("US", "mo2f-setup"),
|
3997 |
+
value: "US"
|
3998 |
+
}, {
|
3999 |
+
label: Object(c["a"])("EU", "mo2f-setup"),
|
4000 |
+
value: "EU"
|
4001 |
+
}],
|
4002 |
+
field_errors: []
|
4003 |
+
}
|
4004 |
+
},
|
4005 |
+
computed: Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.mailgun.api_key", "settings.mailgun.domain", "settings.mailgun.region", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])),
|
4006 |
+
methods: {
|
4007 |
+
areRequiredFieldsValid: function() {
|
4008 |
+
var t = !0;
|
4009 |
+
return "" === this.api_key && (t = !1, this.field_errors.push("api_key")), "" === this.domain && (t = !1, this.field_errors.push("domain")), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
4010 |
+
},
|
4011 |
+
removeFieldError: function(t) {
|
4012 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
4013 |
+
return e !== t
|
4014 |
+
}))
|
4015 |
+
}
|
4016 |
+
}
|
4017 |
+
}),
|
4018 |
+
xi = vi,
|
4019 |
+
yi = Object(_["a"])(xi, bi, Ai, !1, null, null, null),
|
4020 |
+
Ci = yi.exports,
|
4021 |
+
ki = function() {
|
4022 |
+
var t = this,
|
4023 |
+
e = t.$createElement,
|
4024 |
+
i = t._self._c || e;
|
4025 |
+
return i("div", {
|
4026 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-sendgrid"
|
4027 |
+
}, [i("p", {
|
4028 |
+
staticClass: "mailer-description",
|
4029 |
+
domProps: {
|
4030 |
+
innerHTML: t._s(t.description)
|
4031 |
+
}
|
4032 |
+
}), i("p", {
|
4033 |
+
staticClass: "mailer-description mailer-description-links"
|
4034 |
+
}, [i("a", {
|
4035 |
+
staticClass: "mo2f-setup-link",
|
4036 |
+
attrs: {
|
4037 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-mo2f-setup/",
|
4038 |
+
target: "_blank",
|
4039 |
+
rel: "noopener noreferrer"
|
4040 |
+
}
|
4041 |
+
}, [t._v(t._s(t.text_documentation_link))])]), i("div", {
|
4042 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
4043 |
+
}, [i("settings-input-text", {
|
4044 |
+
attrs: {
|
4045 |
+
name: "api_key",
|
4046 |
+
type: "password",
|
4047 |
+
label: t.text_api_key_label,
|
4048 |
+
description: t.text_api_key_description,
|
4049 |
+
is_error: t.field_errors.includes("api_key")
|
4050 |
+
},
|
4051 |
+
on: {
|
4052 |
+
is_error_update: function(e) {
|
4053 |
+
return t.removeFieldError("api_key")
|
4054 |
+
}
|
4055 |
+
},
|
4056 |
+
model: {
|
4057 |
+
value: t.api_key,
|
4058 |
+
callback: function(e) {
|
4059 |
+
t.api_key = e
|
4060 |
+
},
|
4061 |
+
expression: "api_key"
|
4062 |
+
}
|
4063 |
+
}), i("settings-input-text", {
|
4064 |
+
attrs: {
|
4065 |
+
name: "domain",
|
4066 |
+
label: t.text_domain_label,
|
4067 |
+
description: t.text_domain_description
|
4068 |
+
},
|
4069 |
+
model: {
|
4070 |
+
value: t.domain,
|
4071 |
+
callback: function(e) {
|
4072 |
+
t.domain = e
|
4073 |
+
},
|
4074 |
+
expression: "domain"
|
4075 |
+
}
|
4076 |
+
}), i("settings-input-text", {
|
4077 |
+
attrs: {
|
4078 |
+
name: "from_name",
|
4079 |
+
label: t.text_from_name_label,
|
4080 |
+
description: t.text_from_name_description
|
4081 |
+
},
|
4082 |
+
model: {
|
4083 |
+
value: t.from_name,
|
4084 |
+
callback: function(e) {
|
4085 |
+
t.from_name = e
|
4086 |
+
},
|
4087 |
+
expression: "from_name"
|
4088 |
+
}
|
4089 |
+
}), i("settings-input-switch", {
|
4090 |
+
attrs: {
|
4091 |
+
classname: "sub_setting",
|
4092 |
+
name: "from_name_force",
|
4093 |
+
title: t.text_force_from_name_title,
|
4094 |
+
label: t.text_force_from_name_label
|
4095 |
+
},
|
4096 |
+
model: {
|
4097 |
+
value: t.from_name_force,
|
4098 |
+
callback: function(e) {
|
4099 |
+
t.from_name_force = e
|
4100 |
+
},
|
4101 |
+
expression: "from_name_force"
|
4102 |
+
}
|
4103 |
+
}), i("settings-input-text", {
|
4104 |
+
attrs: {
|
4105 |
+
name: "from_email",
|
4106 |
+
type: "email",
|
4107 |
+
label: t.text_from_email_label,
|
4108 |
+
description: t.text_from_email_description,
|
4109 |
+
is_error: t.field_errors.includes("from_email")
|
4110 |
+
},
|
4111 |
+
on: {
|
4112 |
+
is_error_update: function(e) {
|
4113 |
+
return t.removeFieldError("from_email")
|
4114 |
+
}
|
4115 |
+
},
|
4116 |
+
model: {
|
4117 |
+
value: t.from_email,
|
4118 |
+
callback: function(e) {
|
4119 |
+
t.from_email = e
|
4120 |
+
},
|
4121 |
+
expression: "from_email"
|
4122 |
+
}
|
4123 |
+
}), i("settings-input-switch", {
|
4124 |
+
attrs: {
|
4125 |
+
classname: "sub_setting",
|
4126 |
+
name: "from_email_force",
|
4127 |
+
title: t.text_force_from_email_title,
|
4128 |
+
label: t.text_force_from_email_label
|
4129 |
+
},
|
4130 |
+
model: {
|
4131 |
+
value: t.from_email_force,
|
4132 |
+
callback: function(e) {
|
4133 |
+
t.from_email_force = e
|
4134 |
+
},
|
4135 |
+
expression: "from_email_force"
|
4136 |
+
}
|
4137 |
+
})], 1)])
|
4138 |
+
},
|
4139 |
+
Oi = [],
|
4140 |
+
ji = {
|
4141 |
+
name: "WizardStepConfigureMailerSendgrid",
|
4142 |
+
components: {
|
4143 |
+
SettingsInputText: Ut,
|
4144 |
+
SettingsInputSwitch: ii
|
4145 |
+
},
|
4146 |
+
data: function() {
|
4147 |
+
return {
|
4148 |
+
mailer: "sendgrid",
|
4149 |
+
text_api_key_label: Object(c["a"])("API Key", "mo2f-setup"),
|
4150 |
+
text_domain_label: Object(c["a"])("Sending Domain", "mo2f-setup"),
|
4151 |
+
text_api_key_description: Object(c["c"])(Object(c["a"])("%1$sFollow this link%2$s to get an API Key for Sendgrid.", "mo2f-setup"), '<a href="https://app.sendgrid.com/settings/api_keys" target="_blank" rel="noopener noreferrer">', "</a>") + "<br>" + Object(c["c"])(Object(c["a"])("To send emails you will need only a %1$sMail Send%2$s access level for this API key.", "mo2f-setup"), "<i>", "</i>"),
|
4152 |
+
text_domain_description: Object(c["c"])(Object(c["a"])("Please input the sending domain/subdomain you configured in your SendGrid dashboard. More information can be found in our %1$sSendGrid documentation%2$s", "mo2f-setup"), '<a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-mo2f-setup/#setup" target="_blank" rel="noopener noreferrer">', "</a>"),
|
4153 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
4154 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
4155 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
4156 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
4157 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
4158 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
4159 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
4160 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
4161 |
+
text_documentation_link: Object(c["a"])("Read how to set up Sendgrid", "mo2f-setup"),
|
4162 |
+
description: this.$wpms.mailer_options.sendgrid.description.substr(0, this.$wpms.mailer_options.sendgrid.description.indexOf("<br>")),
|
4163 |
+
field_errors: []
|
4164 |
+
}
|
4165 |
+
},
|
4166 |
+
computed: Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.sendgrid.api_key", "settings.sendgrid.domain", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])),
|
4167 |
+
methods: {
|
4168 |
+
areRequiredFieldsValid: function() {
|
4169 |
+
var t = !0;
|
4170 |
+
return "" === this.api_key && (t = !1, this.field_errors.push("api_key")), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
4171 |
+
},
|
4172 |
+
removeFieldError: function(t) {
|
4173 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
4174 |
+
return e !== t
|
4175 |
+
}))
|
4176 |
+
}
|
4177 |
+
}
|
4178 |
+
},
|
4179 |
+
Si = ji,
|
4180 |
+
Pi = Object(_["a"])(Si, ki, Oi, !1, null, null, null),
|
4181 |
+
Ei = Pi.exports,
|
4182 |
+
Ti = function() {
|
4183 |
+
var t = this,
|
4184 |
+
e = t.$createElement,
|
4185 |
+
i = t._self._c || e;
|
4186 |
+
return i("div", {
|
4187 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-amazonses"
|
4188 |
+
}, [i("p", {
|
4189 |
+
staticClass: "mailer-description",
|
4190 |
+
domProps: {
|
4191 |
+
innerHTML: t._s(t.description)
|
4192 |
+
}
|
4193 |
+
}), i("p", {
|
4194 |
+
staticClass: "mailer-description mailer-description-links"
|
4195 |
+
}, [i("b", [i("a", {
|
4196 |
+
staticClass: "mo2f-setup-link",
|
4197 |
+
attrs: {
|
4198 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-amazon-ses-mailer-in-mo2f-setup/",
|
4199 |
+
target: "_blank",
|
4200 |
+
rel: "noopener noreferrer"
|
4201 |
+
}
|
4202 |
+
}, [t._v(t._s(t.text_documentation_link))])])]), i("div", {
|
4203 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
4204 |
+
}, [i("settings-input-text", {
|
4205 |
+
attrs: {
|
4206 |
+
name: "client_id",
|
4207 |
+
label: t.text_client_id_label,
|
4208 |
+
is_error: t.field_errors.includes("client_id")
|
4209 |
+
},
|
4210 |
+
on: {
|
4211 |
+
is_error_update: function(e) {
|
4212 |
+
return t.removeFieldError("client_id")
|
4213 |
+
}
|
4214 |
+
},
|
4215 |
+
model: {
|
4216 |
+
value: t.client_id,
|
4217 |
+
callback: function(e) {
|
4218 |
+
t.client_id = e
|
4219 |
+
},
|
4220 |
+
expression: "client_id"
|
4221 |
+
}
|
4222 |
+
}), i("settings-input-text", {
|
4223 |
+
attrs: {
|
4224 |
+
name: "client_secret",
|
4225 |
+
type: "password",
|
4226 |
+
label: t.text_client_secret_label,
|
4227 |
+
is_error: t.field_errors.includes("client_secret")
|
4228 |
+
},
|
4229 |
+
on: {
|
4230 |
+
is_error_update: function(e) {
|
4231 |
+
return t.removeFieldError("client_secret")
|
4232 |
+
}
|
4233 |
+
},
|
4234 |
+
model: {
|
4235 |
+
value: t.client_secret,
|
4236 |
+
callback: function(e) {
|
4237 |
+
t.client_secret = e
|
4238 |
+
},
|
4239 |
+
expression: "client_secret"
|
4240 |
+
}
|
4241 |
+
}), i("settings-input-select", {
|
4242 |
+
attrs: {
|
4243 |
+
name: "region",
|
4244 |
+
label: t.text_region_label,
|
4245 |
+
options: t.regionOptions,
|
4246 |
+
description: t.text_region_description,
|
4247 |
+
is_error: t.field_errors.includes("region")
|
4248 |
+
},
|
4249 |
+
on: {
|
4250 |
+
is_error_update: function(e) {
|
4251 |
+
return t.removeFieldError("region")
|
4252 |
+
}
|
4253 |
+
},
|
4254 |
+
model: {
|
4255 |
+
value: t.region,
|
4256 |
+
callback: function(e) {
|
4257 |
+
t.region = e
|
4258 |
+
},
|
4259 |
+
expression: "region"
|
4260 |
+
}
|
4261 |
+
}), t.is_api_auth_missing ? t._e() : i("div", [i("div", {
|
4262 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
4263 |
+
}), i("settings-amazon-s-e-s-identities", {
|
4264 |
+
attrs: {
|
4265 |
+
options: t.identities,
|
4266 |
+
label: t.text_identities_label,
|
4267 |
+
columns: t.identities_columns
|
4268 |
+
}
|
4269 |
+
}), i("div", {
|
4270 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
4271 |
+
}), i("settings-input-text", {
|
4272 |
+
attrs: {
|
4273 |
+
name: "from_name",
|
4274 |
+
label: t.text_from_name_label,
|
4275 |
+
description: t.text_from_name_description
|
4276 |
+
},
|
4277 |
+
model: {
|
4278 |
+
value: t.from_name,
|
4279 |
+
callback: function(e) {
|
4280 |
+
t.from_name = e
|
4281 |
+
},
|
4282 |
+
expression: "from_name"
|
4283 |
+
}
|
4284 |
+
}), i("settings-input-switch", {
|
4285 |
+
attrs: {
|
4286 |
+
classname: "sub_setting",
|
4287 |
+
name: "from_name_force",
|
4288 |
+
title: t.text_force_from_name_title,
|
4289 |
+
label: t.text_force_from_name_label
|
4290 |
+
},
|
4291 |
+
model: {
|
4292 |
+
value: t.from_name_force,
|
4293 |
+
callback: function(e) {
|
4294 |
+
t.from_name_force = e
|
4295 |
+
},
|
4296 |
+
expression: "from_name_force"
|
4297 |
+
}
|
4298 |
+
}), i("settings-input-text", {
|
4299 |
+
attrs: {
|
4300 |
+
name: "from_email",
|
4301 |
+
type: "email",
|
4302 |
+
label: t.text_from_email_label,
|
4303 |
+
description: t.text_from_email_description,
|
4304 |
+
is_error: t.field_errors.includes("from_email")
|
4305 |
+
},
|
4306 |
+
on: {
|
4307 |
+
is_error_update: function(e) {
|
4308 |
+
return t.removeFieldError("from_email")
|
4309 |
+
}
|
4310 |
+
},
|
4311 |
+
model: {
|
4312 |
+
value: t.from_email,
|
4313 |
+
callback: function(e) {
|
4314 |
+
t.from_email = e
|
4315 |
+
},
|
4316 |
+
expression: "from_email"
|
4317 |
+
}
|
4318 |
+
}), i("settings-input-switch", {
|
4319 |
+
attrs: {
|
4320 |
+
classname: "sub_setting",
|
4321 |
+
name: "from_email_force",
|
4322 |
+
title: t.text_force_from_email_title,
|
4323 |
+
label: t.text_force_from_email_label
|
4324 |
+
},
|
4325 |
+
model: {
|
4326 |
+
value: t.from_email_force,
|
4327 |
+
callback: function(e) {
|
4328 |
+
t.from_email_force = e
|
4329 |
+
},
|
4330 |
+
expression: "from_email_force"
|
4331 |
+
}
|
4332 |
+
})], 1)], 1)])
|
4333 |
+
},
|
4334 |
+
zi = [],
|
4335 |
+
Bi = i("f7fe"),
|
4336 |
+
Ii = i.n(Bi),
|
4337 |
+
Mi = function() {
|
4338 |
+
var t = this,
|
4339 |
+
e = t.$createElement,
|
4340 |
+
i = t._self._c || e;
|
4341 |
+
return i("div", {
|
4342 |
+
staticClass: "settings-input-select",
|
4343 |
+
class: {
|
4344 |
+
"settings-input-select-error": t.field_error
|
4345 |
+
}
|
4346 |
+
}, [i("label", {
|
4347 |
+
staticClass: "settings-input-label-container",
|
4348 |
+
attrs: {
|
4349 |
+
for: "mo2f-setup-settings-select-" + t.name
|
4350 |
+
}
|
4351 |
+
}, [i("span", {
|
4352 |
+
staticClass: "label",
|
4353 |
+
domProps: {
|
4354 |
+
innerHTML: t._s(t.label)
|
4355 |
+
}
|
4356 |
+
})]), i("div", {
|
4357 |
+
staticClass: "settings-input-select-container"
|
4358 |
+
}, [i("select", {
|
4359 |
+
directives: [{
|
4360 |
+
name: "model",
|
4361 |
+
rawName: "v-model",
|
4362 |
+
value: t.selected,
|
4363 |
+
expression: "selected"
|
4364 |
+
}],
|
4365 |
+
attrs: {
|
4366 |
+
id: "mo2f-setup-settings-select-" + t.name,
|
4367 |
+
name: t.name,
|
4368 |
+
readonly: t.disabled
|
4369 |
+
},
|
4370 |
+
on: {
|
4371 |
+
change: function(e) {
|
4372 |
+
var i = Array.prototype.filter.call(e.target.options, (function(t) {
|
4373 |
+
return t.selected
|
4374 |
+
})).map((function(t) {
|
4375 |
+
var e = "_value" in t ? t._value : t.value;
|
4376 |
+
return e
|
4377 |
+
}));
|
4378 |
+
t.selected = e.target.multiple ? i : i[0]
|
4379 |
+
}
|
4380 |
+
}
|
4381 |
+
}, t._l(t.options, (function(e) {
|
4382 |
+
return i("option", {
|
4383 |
+
key: e.value,
|
4384 |
+
domProps: {
|
4385 |
+
value: e.value
|
4386 |
+
}
|
4387 |
+
}, [t._v(" " + t._s(e.label) + " ")])
|
4388 |
+
})), 0)]), t.description ? i("p", {
|
4389 |
+
staticClass: "description",
|
4390 |
+
domProps: {
|
4391 |
+
innerHTML: t._s(t.description)
|
4392 |
+
}
|
4393 |
+
}) : t._e()])
|
4394 |
+
},
|
4395 |
+
Di = [],
|
4396 |
+
Fi = {
|
4397 |
+
name: "SettingsInputSelect",
|
4398 |
+
props: {
|
4399 |
+
options: Array,
|
4400 |
+
label: String,
|
4401 |
+
name: String,
|
4402 |
+
value: String,
|
4403 |
+
description: String,
|
4404 |
+
disabled: Boolean,
|
4405 |
+
is_error: Boolean
|
4406 |
+
},
|
4407 |
+
computed: {
|
4408 |
+
selected: {
|
4409 |
+
get: function() {
|
4410 |
+
return this.value
|
4411 |
+
},
|
4412 |
+
set: function(t) {
|
4413 |
+
this.$emit("is_error_update", !1), this.$emit("input", t)
|
4414 |
+
}
|
4415 |
+
},
|
4416 |
+
field_error: {
|
4417 |
+
get: function() {
|
4418 |
+
return this.is_error
|
4419 |
+
},
|
4420 |
+
set: function(t) {
|
4421 |
+
this.$emit("is_error_update", t)
|
4422 |
+
}
|
4423 |
+
}
|
4424 |
+
}
|
4425 |
+
},
|
4426 |
+
Ni = Fi,
|
4427 |
+
Qi = Object(_["a"])(Ni, Mi, Di, !1, null, null, null),
|
4428 |
+
Li = Qi.exports,
|
4429 |
+
Wi = function() {
|
4430 |
+
var t = this,
|
4431 |
+
e = t.$createElement,
|
4432 |
+
s = t._self._c || e;
|
4433 |
+
return s("div", {
|
4434 |
+
staticClass: "settings-amazon-ses-identities"
|
4435 |
+
}, [s("label", {
|
4436 |
+
staticClass: "settings-input-label-container"
|
4437 |
+
}, [s("span", {
|
4438 |
+
staticClass: "label",
|
4439 |
+
domProps: {
|
4440 |
+
innerHTML: t._s(t.label)
|
4441 |
+
}
|
4442 |
+
}), t.tooltip ? s("settings-info-tooltip", {
|
4443 |
+
attrs: {
|
4444 |
+
content: t.tooltip
|
4445 |
+
}
|
4446 |
+
}) : t._e()], 1), t.options ? s("div", [t.options && 0 !== t.options.length ? s("p", {
|
4447 |
+
staticClass: "description"
|
4448 |
+
}, [t._v(" " + t._s(t.text_identities_table_description) + " ")]) : s("p", {
|
4449 |
+
staticClass: "description"
|
4450 |
+
}, [s("strong", [t._v(t._s(t.text_no_registered_identities_title))]), t._v(" " + t._s(t.text_no_registered_identities_content) + " ")]), s("div", {
|
4451 |
+
staticClass: "ses-identities-container"
|
4452 |
+
}, [t.options && t.options.length > 0 ? s("div", {
|
4453 |
+
staticClass: "ses-identities-table-container"
|
4454 |
+
}, [s("table", [t.columns ? s("tr", {
|
4455 |
+
staticClass: "ses-identity-columns"
|
4456 |
+
}, t._l(t.filtered_columns, (function(e) {
|
4457 |
+
return s("th", {
|
4458 |
+
key: e.key,
|
4459 |
+
class: "ses-identity-column ses-identity-column-" + e.key
|
4460 |
+
}, [t._v(" " + t._s(e.label) + " ")])
|
4461 |
+
})), 0) : t._e(), t._l(t.options, (function(e, i) {
|
4462 |
+
return s("tr", {
|
4463 |
+
key: i
|
4464 |
+
}, [s("td", [t._v(" " + t._s(e.value) + " ")]), s("td", [t._v(" " + t._s(e.type) + " ")]), s("td", [t._v(" " + t._s(e.status) + " ")])])
|
4465 |
+
})), t.show_identity_form ? t._e() : s("button", {
|
4466 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-small",
|
4467 |
+
attrs: {
|
4468 |
+
type: "button"
|
4469 |
+
},
|
4470 |
+
on: {
|
4471 |
+
click: function(e) {
|
4472 |
+
return e.preventDefault(), t.addNewIdentity(e)
|
4473 |
+
}
|
4474 |
+
}
|
4475 |
+
}, [t._v(" " + t._s(t.text_add_new_identity) + " ")])], 2)]) : t._e(), t.show_identity_form || !t.options || 0 === t.options.length ? s("div", {
|
4476 |
+
staticClass: "mo2f-setup-amazonses-identity-form"
|
4477 |
+
}, [t.options && 0 !== t.options.length ? t._e() : s("h3", [t._v(" " + t._s(t.text_verify_identity) + " ")]), s("div", {
|
4478 |
+
directives: [{
|
4479 |
+
name: "show",
|
4480 |
+
rawName: "v-show",
|
4481 |
+
value: 1 === t.verify_identity_step,
|
4482 |
+
expression: "verify_identity_step === 1"
|
4483 |
+
}],
|
4484 |
+
staticClass: "amazonses-identity-form-step"
|
4485 |
+
}, [s("settings-input-radio", {
|
4486 |
+
attrs: {
|
4487 |
+
name: "identity_type",
|
4488 |
+
options: t.identity_type_options
|
4489 |
+
},
|
4490 |
+
model: {
|
4491 |
+
value: t.identity_type,
|
4492 |
+
callback: function(e) {
|
4493 |
+
t.identity_type = e
|
4494 |
+
},
|
4495 |
+
expression: "identity_type"
|
4496 |
+
}
|
4497 |
+
}), s("p", {
|
4498 |
+
domProps: {
|
4499 |
+
textContent: t._s(t.verify_identity_text)
|
4500 |
+
}
|
4501 |
+
}), s("settings-input-text", {
|
4502 |
+
attrs: {
|
4503 |
+
name: "identity_value",
|
4504 |
+
placeholder: t.identity_value_placeholder
|
4505 |
+
},
|
4506 |
+
model: {
|
4507 |
+
value: t.identity_value,
|
4508 |
+
callback: function(e) {
|
4509 |
+
t.identity_value = e
|
4510 |
+
},
|
4511 |
+
expression: "identity_value"
|
4512 |
+
}
|
4513 |
+
}), s("button", {
|
4514 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-small mo2f-setup-button-verify",
|
4515 |
+
attrs: {
|
4516 |
+
type: "button"
|
4517 |
+
},
|
4518 |
+
on: {
|
4519 |
+
click: function(e) {
|
4520 |
+
return e.preventDefault(), t.verifyIdentity(e)
|
4521 |
+
}
|
4522 |
+
}
|
4523 |
+
}, [t.loading_verify_identity ? s("loader", {
|
4524 |
+
attrs: {
|
4525 |
+
color: "white"
|
4526 |
+
}
|
4527 |
+
}) : s("span", [t._v(t._s(t.text_verify))])], 1)], 1), s("div", {
|
4528 |
+
directives: [{
|
4529 |
+
name: "show",
|
4530 |
+
rawName: "v-show",
|
4531 |
+
value: 2 === t.verify_identity_step && "domain" === t.verify_identity_result.type,
|
4532 |
+
expression: "verify_identity_step === 2 && verify_identity_result.type === 'domain'"
|
4533 |
+
}],
|
4534 |
+
staticClass: "amazonses-identity-form-step amazonses-identity-form-step-domain"
|
4535 |
+
}, [s("p", {
|
4536 |
+
domProps: {
|
4537 |
+
innerHTML: t._s(t.text_verify_identity_step2_domain_text)
|
4538 |
+
}
|
4539 |
+
}), s("div", {
|
4540 |
+
staticClass: "amazonses-domain-identity-added-inputs"
|
4541 |
+
}, [s("settings-input-text", {
|
4542 |
+
attrs: {
|
4543 |
+
value: t.ses_domain_name,
|
4544 |
+
label: t.text_name,
|
4545 |
+
name: "ses_domain_name",
|
4546 |
+
readonly: "",
|
4547 |
+
copy: ""
|
4548 |
+
}
|
4549 |
+
}), s("settings-input-text", {
|
4550 |
+
attrs: {
|
4551 |
+
value: t.verify_identity_result.domain_txt,
|
4552 |
+
label: t.text_value,
|
4553 |
+
name: "ses_domain_value",
|
4554 |
+
readonly: "",
|
4555 |
+
copy: ""
|
4556 |
+
}
|
4557 |
+
})], 1)]), s("div", {
|
4558 |
+
directives: [{
|
4559 |
+
name: "show",
|
4560 |
+
rawName: "v-show",
|
4561 |
+
value: 2 === t.verify_identity_step && "email" === t.verify_identity_result.type,
|
4562 |
+
expression: "verify_identity_step === 2 && verify_identity_result.type === 'email'"
|
4563 |
+
}],
|
4564 |
+
staticClass: "amazonses-identity-form-step"
|
4565 |
+
}, [s("p", {
|
4566 |
+
staticClass: "ses-identities-email-success-notice"
|
4567 |
+
}, [s("inline-svg", {
|
4568 |
+
staticClass: "icon",
|
4569 |
+
attrs: {
|
4570 |
+
src: i("84d7"),
|
4571 |
+
width: "16",
|
4572 |
+
height: "16"
|
4573 |
+
}
|
4574 |
+
}), t._v(" "), s("span", {
|
4575 |
+
domProps: {
|
4576 |
+
innerHTML: t._s(t.text_verify_identity_step2_email_text)
|
4577 |
+
}
|
4578 |
+
})], 1)])]) : t._e()])]) : s("loader", {
|
4579 |
+
attrs: {
|
4580 |
+
size: "md"
|
4581 |
+
}
|
4582 |
+
})], 1)
|
4583 |
+
},
|
4584 |
+
Ui = [],
|
4585 |
+
Hi = {
|
4586 |
+
name: "SettingsAmazonSESIdentities",
|
4587 |
+
components: {
|
4588 |
+
SettingsInfoTooltip: Nt,
|
4589 |
+
SettingsInputRadio: Re,
|
4590 |
+
SettingsInputText: Ut,
|
4591 |
+
Loader: xe
|
4592 |
+
},
|
4593 |
+
props: {
|
4594 |
+
options: Array,
|
4595 |
+
columns: Array,
|
4596 |
+
label: String,
|
4597 |
+
tooltip: String
|
4598 |
+
},
|
4599 |
+
computed: {
|
4600 |
+
filtered_columns: function() {
|
4601 |
+
return this.columns.filter((function(t) {
|
4602 |
+
return "action" !== t.key
|
4603 |
+
}))
|
4604 |
+
},
|
4605 |
+
identity_value_placeholder: function() {
|
4606 |
+
return "domain" === this.identity_type ? Object(c["a"])("Please enter a domain", "mo2f-setup") : Object(c["a"])("Please enter a valid email address", "mo2f-setup")
|
4607 |
+
},
|
4608 |
+
verify_identity_text: function() {
|
4609 |
+
return "domain" === this.identity_type ? Object(c["a"])("Enter the domain name to verify it on Amazon SES and generate the required DNS TXT record.", "mo2f-setup") : Object(c["a"])("Enter a valid email address. A verification email will be sent to the email address you entered.", "mo2f-setup")
|
4610 |
+
},
|
4611 |
+
text_verify_identity_step2_email_text: function() {
|
4612 |
+
return Object(c["c"])(Object(c["a"])("Please check the inbox of <b>%s</b> for a confirmation email.", "mo2f-setup"), this.verify_identity_result.value)
|
4613 |
+
},
|
4614 |
+
ses_domain_name: function() {
|
4615 |
+
return this.verify_identity_result.value ? "_amazonses.".concat(this.verify_identity_result.value) : ""
|
4616 |
+
},
|
4617 |
+
text_verify: function() {
|
4618 |
+
return "domain" === this.identity_type ? Object(c["a"])("Verify Domain", "mo2f-setup") : Object(c["a"])("Verify Email", "mo2f-setup")
|
4619 |
+
}
|
4620 |
+
},
|
4621 |
+
data: function() {
|
4622 |
+
return {
|
4623 |
+
text_no_registered_identities_title: Object(c["a"])("No registered domains or emails.", "mo2f-setup"),
|
4624 |
+
text_no_registered_identities_content: Object(c["a"])("You will not be able to send emails until you verify at least one domain or email address for the selected Amazon SES Region.", "mo2f-setup"),
|
4625 |
+
text_view_dns: Object(c["a"])("View DNS", "mo2f-setup"),
|
4626 |
+
text_resend: Object(c["a"])("Resend", "mo2f-setup"),
|
4627 |
+
text_identities_table_description: Object(c["a"])("Here are the domains and email addresses that have been verified and can be used as the From Email.", "mo2f-setup"),
|
4628 |
+
text_verify_identity: Object(c["a"])("Verify SES Identity", "mo2f-setup"),
|
4629 |
+
text_add_new_identity: Object(c["a"])("Add New SES Identity", "mo2f-setup"),
|
4630 |
+
text_name: Object(c["a"])("Name", "mo2f-setup"),
|
4631 |
+
text_value: Object(c["a"])("Value", "mo2f-setup"),
|
4632 |
+
text_verify_identity_step2_domain_text: Object(c["c"])(Object(c["a"])("Please add this TXT record to your domain's DNS settings. For information on how to add TXT DNS records, please refer to the %1$sAmazon SES documentation%2$s.", "mo2f-setup"), '<a href="https://docs.aws.amazon.com/ses/latest/DeveloperGuide/dns-txt-records.html" target="_blank" rel="noopener noreferrer">', "</a>"),
|
4633 |
+
show_identity_form: !1,
|
4634 |
+
identity_type: "domain",
|
4635 |
+
identity_type_options: [{
|
4636 |
+
label: Object(c["a"])("Verify Domain", "mo2f-setup"),
|
4637 |
+
value: "domain"
|
4638 |
+
}, {
|
4639 |
+
label: Object(c["a"])("Verify Email Address", "mo2f-setup"),
|
4640 |
+
value: "email"
|
4641 |
+
}],
|
4642 |
+
identity_value: "",
|
4643 |
+
verify_identity_step: 1,
|
4644 |
+
verify_identity_result: {},
|
4645 |
+
loading_verify_identity: !1
|
4646 |
+
}
|
4647 |
+
},
|
4648 |
+
methods: {
|
4649 |
+
verifyIdentity: function() {
|
4650 |
+
if (!this.loading_verify_identity) {
|
4651 |
+
this.loading_verify_identity = !0;
|
4652 |
+
var t = this;
|
4653 |
+
this.$store.dispatch("$_settings/amazonSESRegisterIdentity", {
|
4654 |
+
value: this.identity_value,
|
4655 |
+
type: this.identity_type
|
4656 |
+
}).then((function(e) {
|
4657 |
+
t.loading_verify_identity = !1, e.success && e.data && (t.verify_identity_result = e.data, t.verify_identity_step = 2)
|
4658 |
+
}))
|
4659 |
+
}
|
4660 |
+
},
|
4661 |
+
addNewIdentity: function() {
|
4662 |
+
this.show_identity_form = !0
|
4663 |
+
}
|
4664 |
+
}
|
4665 |
+
},
|
4666 |
+
Ri = Hi,
|
4667 |
+
Gi = Object(_["a"])(Ri, Wi, Ui, !1, null, null, null),
|
4668 |
+
Vi = Gi.exports,
|
4669 |
+
Yi = {
|
4670 |
+
name: "WizardStepConfigureMailerAmazonSES",
|
4671 |
+
components: {
|
4672 |
+
SettingsInputText: Ut,
|
4673 |
+
SettingsInputSelect: Li,
|
4674 |
+
SettingsInputSwitch: ii,
|
4675 |
+
SettingsAmazonSESIdentities: Vi
|
4676 |
+
},
|
4677 |
+
data: function() {
|
4678 |
+
return {
|
4679 |
+
mailer: "amazonses",
|
4680 |
+
text_client_id_label: Object(c["a"])("Access Key ID", "mo2f-setup"),
|
4681 |
+
text_client_secret_label: Object(c["a"])("Secret Access Key", Object({
|
4682 |
+
NODE_ENV: "production",
|
4683 |
+
VUE_APP_TEXTDOMAIN: "mo2f-setup",
|
4684 |
+
VUE_APP_PRODUCT_NAME: "WPMailSMTP",
|
4685 |
+
BASE_URL: "http://localhost:8080/"
|
4686 |
+
}).VUE_APP_TEXTclient_id),
|
4687 |
+
text_region_label: Object(c["a"])("Region", "mo2f-setup"),
|
4688 |
+
text_identities_label: Object(c["a"])("SES Identities", "mo2f-setup"),
|
4689 |
+
text_region_description: Object(c["a"])("Please select the Amazon SES API region which is the closest to where your website is hosted. This can help to decrease network latency between your site and Amazon SES, which will speed up email sending.", "mo2f-setup"),
|
4690 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
4691 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
4692 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
4693 |
+
text_force_from_email_title: Object(c["a"])("Force From Email", "mo2f-setup"),
|
4694 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
4695 |
+
text_force_from_email_label: Object(c["a"])("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
4696 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
4697 |
+
text_from_email_description: Object(c["a"])("The email address that emails are sent from.", "mo2f-setup"),
|
4698 |
+
text_documentation_link: Object(c["a"])("Read how to set up Amazon SES", "mo2f-setup"),
|
4699 |
+
description: this.$wpms.mailer_options.amazonses.description.substr(0, this.$wpms.mailer_options.amazonses.description.indexOf("<br>")),
|
4700 |
+
regionOptions: this.$wpms.mailer_options.amazonses.region_options || [],
|
4701 |
+
fetching_identities: !1,
|
4702 |
+
field_errors: []
|
4703 |
+
}
|
4704 |
+
},
|
4705 |
+
computed: Object(n["a"])(Object(n["a"])(Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.amazonses.client_id", "settings.amazonses.client_secret", "settings.amazonses.region", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_email_force", "settings.mail.from_name_force"])), Object(ut["b"])("$_settings", {
|
4706 |
+
identities_columns: "amazonses_identities.columns",
|
4707 |
+
identities: "amazonses_identities.data"
|
4708 |
+
})), {}, {
|
4709 |
+
is_api_auth_missing: function() {
|
4710 |
+
return !this.client_id || !this.client_secret || !this.region
|
4711 |
+
}
|
4712 |
+
}),
|
4713 |
+
watch: {
|
4714 |
+
client_id: function() {
|
4715 |
+
this.getIdentitiesDelayed()
|
4716 |
+
},
|
4717 |
+
client_secret: function() {
|
4718 |
+
this.getIdentitiesDelayed()
|
4719 |
+
},
|
4720 |
+
region: function() {
|
4721 |
+
this.getIdentities()
|
4722 |
+
}
|
4723 |
+
},
|
4724 |
+
methods: {
|
4725 |
+
getIdentities: function() {
|
4726 |
+
var t = this;
|
4727 |
+
this.fetching_identities || this.client_id.length < 20 || this.client_secret.length < 40 || !this.region || (this.fetching_identities = !0, this.$store.dispatch("$_app/start_loading"), this.$store.dispatch("$_settings/getAmazonSESIdentities").then((function() {
|
4728 |
+
t.fetching_identities = !1
|
4729 |
+
})).finally((function() {
|
4730 |
+
t.$store.dispatch("$_app/stop_loading")
|
4731 |
+
})))
|
4732 |
+
},
|
4733 |
+
getIdentitiesDelayed: Ii()((function() {
|
4734 |
+
this.getIdentities()
|
4735 |
+
}), 500),
|
4736 |
+
areRequiredFieldsValid: function() {
|
4737 |
+
var t = !0;
|
4738 |
+
return "" === this.client_id && (t = !1, this.field_errors.push("client_id")), "" === this.client_secret && (t = !1, this.field_errors.push("client_secret")), "" === this.region && (t = !1, this.field_errors.push("region")), "" === this.from_email && (t = !1, this.field_errors.push("from_email")), t
|
4739 |
+
},
|
4740 |
+
removeFieldError: function(t) {
|
4741 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
4742 |
+
return e !== t
|
4743 |
+
}))
|
4744 |
+
}
|
4745 |
+
},
|
4746 |
+
mounted: function() {
|
4747 |
+
this.getIdentities()
|
4748 |
+
}
|
4749 |
+
},
|
4750 |
+
Ji = Yi,
|
4751 |
+
Ki = Object(_["a"])(Ji, Ti, zi, !1, null, null, null),
|
4752 |
+
qi = Ki.exports,
|
4753 |
+
Zi = function() {
|
4754 |
+
var t = this,
|
4755 |
+
e = t.$createElement,
|
4756 |
+
i = t._self._c || e;
|
4757 |
+
return i("div", {
|
4758 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-gmail"
|
4759 |
+
}, [i("p", {
|
4760 |
+
staticClass: "mailer-description",
|
4761 |
+
domProps: {
|
4762 |
+
innerHTML: t._s(t.description)
|
4763 |
+
}
|
4764 |
+
}), i("p", {
|
4765 |
+
staticClass: "mailer-description mailer-description-links"
|
4766 |
+
}, [i("b", [i("a", {
|
4767 |
+
staticClass: "mo2f-setup-link",
|
4768 |
+
attrs: {
|
4769 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-mo2f-setup/#create-app",
|
4770 |
+
target: "_blank",
|
4771 |
+
rel: "noopener noreferrer"
|
4772 |
+
}
|
4773 |
+
}, [t._v(t._s(t.text_documentation_link))])])]), i("div", {
|
4774 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
4775 |
+
}, [i("settings-input-text", {
|
4776 |
+
attrs: {
|
4777 |
+
name: "client_id",
|
4778 |
+
label: t.text_client_id_label,
|
4779 |
+
is_error: t.field_errors.includes("client_id")
|
4780 |
+
},
|
4781 |
+
on: {
|
4782 |
+
is_error_update: function(e) {
|
4783 |
+
return t.removeFieldError("client_id")
|
4784 |
+
}
|
4785 |
+
},
|
4786 |
+
model: {
|
4787 |
+
value: t.client_id,
|
4788 |
+
callback: function(e) {
|
4789 |
+
t.client_id = e
|
4790 |
+
},
|
4791 |
+
expression: "client_id"
|
4792 |
+
}
|
4793 |
+
}), i("settings-input-text", {
|
4794 |
+
attrs: {
|
4795 |
+
name: "client_secret",
|
4796 |
+
type: "password",
|
4797 |
+
label: t.text_client_secret_label,
|
4798 |
+
is_error: t.field_errors.includes("client_secret")
|
4799 |
+
},
|
4800 |
+
on: {
|
4801 |
+
is_error_update: function(e) {
|
4802 |
+
return t.removeFieldError("client_secret")
|
4803 |
+
}
|
4804 |
+
},
|
4805 |
+
model: {
|
4806 |
+
value: t.client_secret,
|
4807 |
+
callback: function(e) {
|
4808 |
+
t.client_secret = e
|
4809 |
+
},
|
4810 |
+
expression: "client_secret"
|
4811 |
+
}
|
4812 |
+
}), i("settings-input-text", {
|
4813 |
+
attrs: {
|
4814 |
+
value: t.redirect_uri,
|
4815 |
+
name: "redirect_uri",
|
4816 |
+
label: t.text_redirect_uri_label,
|
4817 |
+
copy: "",
|
4818 |
+
readonly: ""
|
4819 |
+
}
|
4820 |
+
}), i("div", {
|
4821 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
4822 |
+
}), i("settings-o-auth-connection", {
|
4823 |
+
attrs: {
|
4824 |
+
label: t.text_authorization_label,
|
4825 |
+
mailer: t.mailer,
|
4826 |
+
connected_email: t.connected_email_address,
|
4827 |
+
is_auth_required: t.is_auth_required,
|
4828 |
+
client_id: t.client_id,
|
4829 |
+
client_secret: t.client_secret
|
4830 |
+
}
|
4831 |
+
}), t.is_auth_required ? t._e() : i("div", {
|
4832 |
+
staticClass: "mo2f-setup-setup-wizard-form-general-settings"
|
4833 |
+
}, [i("div", {
|
4834 |
+
staticClass: "mo2f-setup-separator mo2f-setup-separator-big-margin"
|
4835 |
+
}), i("settings-input-text", {
|
4836 |
+
attrs: {
|
4837 |
+
name: "from_name",
|
4838 |
+
label: t.text_from_name_label,
|
4839 |
+
description: t.text_from_name_description
|
4840 |
+
},
|
4841 |
+
model: {
|
4842 |
+
value: t.from_name,
|
4843 |
+
callback: function(e) {
|
4844 |
+
t.from_name = e
|
4845 |
+
},
|
4846 |
+
expression: "from_name"
|
4847 |
+
}
|
4848 |
+
}), i("settings-input-switch", {
|
4849 |
+
attrs: {
|
4850 |
+
classname: "sub_setting",
|
4851 |
+
name: "from_name_force",
|
4852 |
+
title: t.text_force_from_name_title,
|
4853 |
+
label: t.text_force_from_name_label
|
4854 |
+
},
|
4855 |
+
model: {
|
4856 |
+
value: t.from_name_force,
|
4857 |
+
callback: function(e) {
|
4858 |
+
t.from_name_force = e
|
4859 |
+
},
|
4860 |
+
expression: "from_name_force"
|
4861 |
+
}
|
4862 |
+
}), i("settings-input-select", {
|
4863 |
+
attrs: {
|
4864 |
+
name: "from_email",
|
4865 |
+
label: t.text_from_email_label,
|
4866 |
+
options: t.possible_send_as_emails,
|
4867 |
+
description: t.text_from_email_description
|
4868 |
+
},
|
4869 |
+
model: {
|
4870 |
+
value: t.from_email,
|
4871 |
+
callback: function(e) {
|
4872 |
+
t.from_email = e
|
4873 |
+
},
|
4874 |
+
expression: "from_email"
|
4875 |
+
}
|
4876 |
+
})], 1)], 1)])
|
4877 |
+
},
|
4878 |
+
Xi = [],
|
4879 |
+
$i = function() {
|
4880 |
+
var t = this,
|
4881 |
+
e = t.$createElement,
|
4882 |
+
s = t._self._c || e;
|
4883 |
+
return s("div", {
|
4884 |
+
staticClass: "settings-oauth-connection"
|
4885 |
+
}, [s("label", {
|
4886 |
+
staticClass: "settings-input-label-container"
|
4887 |
+
}, [s("span", {
|
4888 |
+
staticClass: "label",
|
4889 |
+
domProps: {
|
4890 |
+
innerHTML: t._s(t.label)
|
4891 |
+
}
|
4892 |
+
}), t.tooltip ? s("settings-info-tooltip", {
|
4893 |
+
attrs: {
|
4894 |
+
content: t.tooltip
|
4895 |
+
}
|
4896 |
+
}) : t._e()], 1), t.is_auth_required ? s("div", {
|
4897 |
+
staticClass: "add-authorization-container"
|
4898 |
+
}, [s("p", {
|
4899 |
+
staticClass: "description",
|
4900 |
+
domProps: {
|
4901 |
+
textContent: t._s(t.text_authorization_button_description)
|
4902 |
+
}
|
4903 |
+
}), s("button", {
|
4904 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-small",
|
4905 |
+
attrs: {
|
4906 |
+
type: "button",
|
4907 |
+
disabled: !t.are_client_details_ready
|
4908 |
+
},
|
4909 |
+
on: {
|
4910 |
+
click: function(e) {
|
4911 |
+
return e.preventDefault(), t.authorize(e)
|
4912 |
+
}
|
4913 |
+
}
|
4914 |
+
}, [t._v(" " + t._s(t.text_authorization_button) + " ")])]) : s("div", {
|
4915 |
+
staticClass: "remove-authorization-container"
|
4916 |
+
}, [t.connected_email ? s("p", {
|
4917 |
+
staticClass: "description connected-as"
|
4918 |
+
}, [s("span", {
|
4919 |
+
domProps: {
|
4920 |
+
innerHTML: t._s(t.text_connected_as_with_email)
|
4921 |
+
}
|
4922 |
+
}), t._v(" "), s("inline-svg", {
|
4923 |
+
staticClass: "icon",
|
4924 |
+
attrs: {
|
4925 |
+
src: i("9a1d"),
|
4926 |
+
width: "16",
|
4927 |
+
height: "16"
|
4928 |
+
}
|
4929 |
+
})], 1) : t._e(), "gmail" === t.mailer ? s("p", {
|
4930 |
+
staticClass: "description",
|
4931 |
+
domProps: {
|
4932 |
+
innerHTML: t._s(t.text_remove_authorization_button_description_google)
|
4933 |
+
}
|
4934 |
+
}) : t._e(), s("p", {
|
4935 |
+
staticClass: "description",
|
4936 |
+
domProps: {
|
4937 |
+
innerHTML: t._s(t.text_remove_authorization_button_description)
|
4938 |
+
}
|
4939 |
+
}), s("button", {
|
4940 |
+
staticClass: "mo2f-setup-button mo2f-setup-button-red mo2f-setup-button-small",
|
4941 |
+
attrs: {
|
4942 |
+
type: "button"
|
4943 |
+
},
|
4944 |
+
on: {
|
4945 |
+
click: function(e) {
|
4946 |
+
return e.preventDefault(), t.removeAuthorization(e)
|
4947 |
+
}
|
4948 |
+
}
|
4949 |
+
}, [t._v(" " + t._s(t.text_remove_authorization_button) + " ")])])])
|
4950 |
+
},
|
4951 |
+
ts = [],
|
4952 |
+
es = {
|
4953 |
+
name: "SettingsOAuthConnection",
|
4954 |
+
components: {
|
4955 |
+
SettingsInfoTooltip: Nt
|
4956 |
+
},
|
4957 |
+
props: {
|
4958 |
+
label: String,
|
4959 |
+
mailer: String,
|
4960 |
+
connected_email: String,
|
4961 |
+
is_auth_required: Boolean,
|
4962 |
+
client_id: String,
|
4963 |
+
client_secret: String,
|
4964 |
+
tooltip: String,
|
4965 |
+
disabled: Boolean
|
4966 |
+
},
|
4967 |
+
data: function() {
|
4968 |
+
return {
|
4969 |
+
text_allow_button: Object(c["a"])("Connect to %s", "mo2f-setup"),
|
4970 |
+
text_authorization_button_description_general: Object(c["a"])("Before continuing, you'll need to allow this plugin to send emails using your %s account.", "mo2f-setup"),
|
4971 |
+
text_remove_authorization_button: Object(c["a"])("Remove Connection", "mo2f-setup"),
|
4972 |
+
text_remove_authorization_button_description_google: Object(c["c"])(Object(c["a"])("If you want to use a different From Email address you can setup a Google email alias. %1$sFollow these instructions%2$s, then select the alias in the From Email section below.", "mo2f-setup"), '<a href="https://wpmailsmtp.com/gmail-send-from-alias-mo2f-setup/" target="_blank" rel="noopener noreferrer">', "</a>"),
|
4973 |
+
text_remove_authorization_button_desc_template: Object(c["a"])("Removing this connection will give you the ability to redo the connection or connect to different %s account.", "mo2f-setup"),
|
4974 |
+
text_connected_as: Object(c["a"])("Connected as", "mo2f-setup")
|
4975 |
+
}
|
4976 |
+
},
|
4977 |
+
computed: {
|
4978 |
+
are_client_details_ready: function() {
|
4979 |
+
return !!this.client_id && !!this.client_secret
|
4980 |
+
},
|
4981 |
+
mailer_name: function() {
|
4982 |
+
var t = "Google";
|
4983 |
+
return "outlook" === this.mailer ? t = "Microsoft Outlook" : "zoho" === this.mailer && (t = "Zoho Mail"), t
|
4984 |
+
},
|
4985 |
+
text_authorization_button: function() {
|
4986 |
+
return Object(c["c"])(this.text_allow_button, this.mailer_name)
|
4987 |
+
},
|
4988 |
+
text_authorization_button_description: function() {
|
4989 |
+
return Object(c["c"])(this.text_authorization_button_description_general, this.mailer_name)
|
4990 |
+
},
|
4991 |
+
text_remove_authorization_button_description: function() {
|
4992 |
+
return Object(c["c"])(this.text_remove_authorization_button_desc_template, this.mailer_name)
|
4993 |
+
},
|
4994 |
+
text_connected_as_with_email: function() {
|
4995 |
+
return "".concat(this.text_connected_as, " <b>").concat(this.connected_email, "</b>")
|
4996 |
+
}
|
4997 |
+
},
|
4998 |
+
methods: {
|
4999 |
+
authorize: function() {
|
5000 |
+
var t = this;
|
5001 |
+
this.$store.dispatch("$_app/start_loading"), this.$store.dispatch("$_settings/getAuthUrl", this.mailer).then((function(t) {
|
5002 |
+
t.success && t.data.oauth_url && (window.location.href = t.data.oauth_url)
|
5003 |
+
})).finally((function() {
|
5004 |
+
t.$store.dispatch("$_app/stop_loading")
|
5005 |
+
}))
|
5006 |
+
},
|
5007 |
+
removeAuthorization: function() {
|
5008 |
+
var t = this;
|
5009 |
+
this.$store.dispatch("$_app/start_loading"), this.$store.dispatch("$_settings/removeAuth", this.mailer).finally((function() {
|
5010 |
+
t.$store.dispatch("$_app/stop_loading")
|
5011 |
+
}))
|
5012 |
+
},
|
5013 |
+
removeUrlParam: function(t, e, i) {
|
5014 |
+
e.delete(i), t.search = e.toString(), window.history.replaceState({}, document.title, t.toString())
|
5015 |
+
},
|
5016 |
+
catchAuthNotice: function() {
|
5017 |
+
var t = new URL(window.location.href),
|
5018 |
+
e = new URLSearchParams(t.search),
|
5019 |
+
i = "",
|
5020 |
+
s = "",
|
5021 |
+
a = !1;
|
5022 |
+
switch (e.has("success") ? (i = e.get("success"), a = !0, this.removeUrlParam(t, e, "success")) : e.has("error") && (i = e.get("error"), this.removeUrlParam(t, e, "error")), i) {
|
5023 |
+
case "google_access_denied":
|
5024 |
+
case "zoho_access_denied":
|
5025 |
+
case "google_no_code_scope":
|
5026 |
+
case "microsoft_no_code":
|
5027 |
+
case "zoho_no_code":
|
5028 |
+
case "zoho_invalid_nonce":
|
5029 |
+
s = Object(c["a"])("There was an error while processing the authentication request. Please try again.", "mo2f-setup");
|
5030 |
+
break;
|
5031 |
+
case "google_no_clients":
|
5032 |
+
case "zoho_no_clients":
|
5033 |
+
case "zoho_unsuccessful_oauth":
|
5034 |
+
case "microsoft_unsuccessful_oauth":
|
5035 |
+
case "google_unsuccessful_oauth":
|
5036 |
+
s = Object(c["a"])("There was an error while processing the authentication request. Please recheck your Client ID and Client Secret and try again.", "mo2f-setup");
|
5037 |
+
break;
|
5038 |
+
case "google_site_linked":
|
5039 |
+
s = Object(c["a"])("You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail.", "mo2f-setup");
|
5040 |
+
break;
|
5041 |
+
case "microsoft_site_linked":
|
5042 |
+
s = Object(c["a"])("You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.", "mo2f-setup");
|
5043 |
+
break;
|
5044 |
+
case "zoho_site_linked":
|
5045 |
+
s = Object(c["a"])("You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail.", "mo2f-setup");
|
5046 |
+
break
|
5047 |
+
}
|
5048 |
+
s.length > 0 && this.$swal({
|
5049 |
+
title: a ? Object(c["a"])("Successful Authorization", "mo2f-setup") : Object(c["a"])("Authorization Error!", "mo2f-setup"),
|
5050 |
+
text: s,
|
5051 |
+
width: 550,
|
5052 |
+
showCloseButton: !0,
|
5053 |
+
customClass: {
|
5054 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
5055 |
+
}
|
5056 |
+
})
|
5057 |
+
}
|
5058 |
+
},
|
5059 |
+
mounted: function() {
|
5060 |
+
this.catchAuthNotice()
|
5061 |
+
}
|
5062 |
+
},
|
5063 |
+
is = es,
|
5064 |
+
ss = Object(_["a"])(is, $i, ts, !1, null, null, null),
|
5065 |
+
as = ss.exports,
|
5066 |
+
ns = {
|
5067 |
+
name: "WizardStepConfigureMailerGmail",
|
5068 |
+
components: {
|
5069 |
+
SettingsInputText: Ut,
|
5070 |
+
SettingsInputSwitch: ii,
|
5071 |
+
SettingsOAuthConnection: as,
|
5072 |
+
SettingsInputSelect: Li
|
5073 |
+
},
|
5074 |
+
data: function() {
|
5075 |
+
return {
|
5076 |
+
mailer: "gmail",
|
5077 |
+
text_client_id_label: Object(c["a"])("Client ID", "mo2f-setup"),
|
5078 |
+
text_client_secret_label: Object(c["a"])("Client Secret", "mo2f-setup"),
|
5079 |
+
text_redirect_uri_label: Object(c["a"])("Authorized Redirect URI", "mo2f-setup"),
|
5080 |
+
text_authorization_label: Object(c["a"])("Authorization", "mo2f-setup"),
|
5081 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
5082 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
5083 |
+
text_from_email_label: Object(c["a"])("From Email", "mo2f-setup"),
|
5084 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
5085 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
5086 |
+
text_from_email_description: Object(c["a"])("Select which email address you would like to send your emails from.", "mo2f-setup"),
|
5087 |
+
text_documentation_link: Object(c["a"])("Read how to set up the Gmail mailer", "mo2f-setup"),
|
5088 |
+
description: this.$wpms.mailer_options.gmail.description.substr(0, this.$wpms.mailer_options.gmail.description.indexOf("<br>")),
|
5089 |
+
redirect_uri: this.$wpms.mailer_options.gmail.redirect_uri,
|
5090 |
+
connected_email_address: null,
|
5091 |
+
possible_send_as_emails: [],
|
5092 |
+
field_errors: []
|
5093 |
+
}
|
5094 |
+
},
|
5095 |
+
computed: Object(n["a"])(Object(n["a"])(Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.gmail.client_id", "settings.gmail.client_secret", "settings.gmail.access_token", "settings.gmail.refresh_token", "settings.mail.from_email", "settings.mail.from_name", "settings.mail.from_name_force"])), Object(ut["b"])("$_wizard", ["blocked_step"])), {}, {
|
5096 |
+
is_auth_required: function() {
|
5097 |
+
return !this.access_token || !this.refresh_token
|
5098 |
+
}
|
5099 |
+
}),
|
5100 |
+
watch: {
|
5101 |
+
is_auth_required: function(t) {
|
5102 |
+
this.blocked_step = t
|
5103 |
+
}
|
5104 |
+
},
|
5105 |
+
methods: {
|
5106 |
+
getConnectedData: function() {
|
5107 |
+
var t = this;
|
5108 |
+
this.$store.dispatch("$_settings/getConnectedData", this.mailer).then((function(e) {
|
5109 |
+
e.success && e.data && (t.connected_email_address = e.data.connected_email || null, t.possible_send_as_emails = e.data.possible_send_from_addresses || [], t.isEmailInPosibleAddresses(t.from_email) || (t.from_email = t.connected_email_address))
|
5110 |
+
}))
|
5111 |
+
},
|
5112 |
+
isEmailInPosibleAddresses: function(t) {
|
5113 |
+
return this.possible_send_as_emails.find((function(e) {
|
5114 |
+
return e.value === t
|
5115 |
+
}))
|
5116 |
+
},
|
5117 |
+
areRequiredFieldsValid: function() {
|
5118 |
+
var t = !0;
|
5119 |
+
return "" === this.client_id && (t = !1, this.field_errors.push("client_id")), "" === this.client_secret && (t = !1, this.field_errors.push("client_secret")), t
|
5120 |
+
},
|
5121 |
+
removeFieldError: function(t) {
|
5122 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
5123 |
+
return e !== t
|
5124 |
+
}))
|
5125 |
+
}
|
5126 |
+
},
|
5127 |
+
mounted: function() {
|
5128 |
+
this.getConnectedData(), this.is_auth_required && (this.blocked_step = !0)
|
5129 |
+
}
|
5130 |
+
},
|
5131 |
+
os = ns,
|
5132 |
+
rs = Object(_["a"])(os, Zi, Xi, !1, null, null, null),
|
5133 |
+
ls = rs.exports,
|
5134 |
+
cs = function() {
|
5135 |
+
var t = this,
|
5136 |
+
e = t.$createElement,
|
5137 |
+
i = t._self._c || e;
|
5138 |
+
return i("div", {
|
5139 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-outlook"
|
5140 |
+
}, [i("p", {
|
5141 |
+
staticClass: "mailer-description",
|
5142 |
+
domProps: {
|
5143 |
+
innerHTML: t._s(t.description)
|
5144 |
+
}
|
5145 |
+
}), i("p", {
|
5146 |
+
staticClass: "mailer-description mailer-description-links"
|
5147 |
+
}, [i("a", {
|
5148 |
+
staticClass: "mo2f-setup-link",
|
5149 |
+
attrs: {
|
5150 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-outlook-mailer-in-mo2f-setup/#microsoft-setup",
|
5151 |
+
target: "_blank",
|
5152 |
+
rel: "noopener noreferrer"
|
5153 |
+
}
|
5154 |
+
}, [t._v(t._s(t.text_documentation_link))])]), i("div", {
|
5155 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
5156 |
+
}, [i("settings-input-text", {
|
5157 |
+
attrs: {
|
5158 |
+
name: "client_id",
|
5159 |
+
label: t.text_client_id_label,
|
5160 |
+
is_error: t.field_errors.includes("client_id")
|
5161 |
+
},
|
5162 |
+
on: {
|
5163 |
+
is_error_update: function(e) {
|
5164 |
+
return t.removeFieldError("client_id")
|
5165 |
+
}
|
5166 |
+
},
|
5167 |
+
model: {
|
5168 |
+
value: t.client_id,
|
5169 |
+
callback: function(e) {
|
5170 |
+
t.client_id = e
|
5171 |
+
},
|
5172 |
+
expression: "client_id"
|
5173 |
+
}
|
5174 |
+
}), i("settings-input-text", {
|
5175 |
+
attrs: {
|
5176 |
+
name: "client_secret",
|
5177 |
+
type: "password",
|
5178 |
+
label: t.text_client_secret_label,
|
5179 |
+
is_error: t.field_errors.includes("client_secret")
|
5180 |
+
},
|
5181 |
+
on: {
|
5182 |
+
is_error_update: function(e) {
|
5183 |
+
return t.removeFieldError("client_secret")
|
5184 |
+
}
|
5185 |
+
},
|
5186 |
+
model: {
|
5187 |
+
value: t.client_secret,
|
5188 |
+
callback: function(e) {
|
5189 |
+
t.client_secret = e
|
5190 |
+
},
|
5191 |
+
expression: "client_secret"
|
5192 |
+
}
|
5193 |
+
}), i("settings-input-text", {
|
5194 |
+
attrs: {
|
5195 |
+
value: t.redirect_uri,
|
5196 |
+
name: "redirect_uri",
|
5197 |
+
label: t.text_redirect_uri_label,
|
5198 |
+
copy: "",
|
5199 |
+
readonly: ""
|
5200 |
+
}
|
5201 |
+
}), i("settings-o-auth-connection", {
|
5202 |
+
attrs: {
|
5203 |
+
- mailer: t.mailer,
|
5204 |
+
connected_email: t.connected_email_address,
|
5205 |
+
is_auth_required: t.is_auth_required,
|
5206 |
+
client_id: t.client_id,
|
5207 |
+
client_secret: t.client_secret
|
5208 |
+
}
|
5209 |
+
})], 1)])
|
5210 |
+
},
|
5211 |
+
ps = [],
|
5212 |
+
ms = {
|
5213 |
+
name: "WizardStepConfigureMailerOutlook",
|
5214 |
+
components: {
|
5215 |
+
SettingsInputText: Ut,
|
5216 |
+
SettingsOAuthConnection: as
|
5217 |
+
},
|
5218 |
+
data: function() {
|
5219 |
+
return {
|
5220 |
+
mailer: "outlook",
|
5221 |
+
text_client_id_label: Object(c["a"])("Application ID", "mo2f-setup"),
|
5222 |
+
text_client_secret_label: Object(c["a"])("Application Password", "mo2f-setup"),
|
5223 |
+
text_redirect_uri_label: Object(c["a"])("Redirect URI", "mo2f-setup"),
|
5224 |
+
text_authorization_label: Object(c["a"])("Authorization", "mo2f-setup"),
|
5225 |
+
text_documentation_link: Object(c["a"])("Read how to set up Outlook", "mo2f-setup"),
|
5226 |
+
description: this.$wpms.mailer_options.outlook.description.substr(0, this.$wpms.mailer_options.outlook.description.indexOf("<br>")),
|
5227 |
+
redirect_uri: this.$wpms.mailer_options.outlook.redirect_uri,
|
5228 |
+
field_errors: []
|
5229 |
+
}
|
5230 |
+
},
|
5231 |
+
computed: Object(n["a"])(Object(n["a"])(Object(n["a"])(Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.outlook.client_id", "settings.outlook.client_secret", "settings.outlook.access_token", "settings.outlook.refresh_token"])), Object(ut["b"])("$_wizard", ["blocked_step"])), Object(nt["b"])({
|
5232 |
+
connected_email_address: "$_settings/outlook_email"
|
5233 |
+
})), {}, {
|
5234 |
+
is_auth_required: function() {
|
5235 |
+
return !this.access_token || !this.refresh_token
|
5236 |
+
}
|
5237 |
+
}),
|
5238 |
+
watch: {
|
5239 |
+
is_auth_required: function(t) {
|
5240 |
+
this.blocked_step = t
|
5241 |
+
}
|
5242 |
+
},
|
5243 |
+
methods: {
|
5244 |
+
areRequiredFieldsValid: function() {
|
5245 |
+
var t = !0;
|
5246 |
+
return "" === this.client_id && (t = !1, this.field_errors.push("client_id")), "" === this.client_secret && (t = !1, this.field_errors.push("client_secret")), t
|
5247 |
+
},
|
5248 |
+
removeFieldError: function(t) {
|
5249 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
5250 |
+
return e !== t
|
5251 |
+
}))
|
5252 |
+
}
|
5253 |
+
},
|
5254 |
+
mounted: function() {
|
5255 |
+
this.is_auth_required && (this.blocked_step = !0)
|
5256 |
+
}
|
5257 |
+
},
|
5258 |
+
us = ms,
|
5259 |
+
ds = Object(_["a"])(us, cs, ps, !1, null, null, null),
|
5260 |
+
_s = ds.exports,
|
5261 |
+
fs = function() {
|
5262 |
+
var t = this,
|
5263 |
+
e = t.$createElement,
|
5264 |
+
i = t._self._c || e;
|
5265 |
+
return i("div", {
|
5266 |
+
staticClass: "mo2f-setup-setup-wizard-step-configure-mailer-settings mo2f-setup-setup-wizard-step-configure-mailer-settings-zoho"
|
5267 |
+
}, [i("p", {
|
5268 |
+
staticClass: "mailer-description",
|
5269 |
+
domProps: {
|
5270 |
+
innerHTML: t._s(t.description)
|
5271 |
+
}
|
5272 |
+
}), i("p", {
|
5273 |
+
staticClass: "mailer-description mailer-description-links"
|
5274 |
+
}, [i("a", {
|
5275 |
+
staticClass: "mo2f-setup-link",
|
5276 |
+
attrs: {
|
5277 |
+
href: "https://wpmailsmtp.com/docs/how-to-set-up-the-zoho-mailer-in-mo2f-setup/#zoho-account",
|
5278 |
+
target: "_blank",
|
5279 |
+
rel: "noopener noreferrer"
|
5280 |
+
}
|
5281 |
+
}, [t._v(t._s(t.text_documentation_link))])]), i("div", {
|
5282 |
+
staticClass: "mo2f-setup-setup-wizard-form"
|
5283 |
+
}, [i("settings-input-select", {
|
5284 |
+
attrs: {
|
5285 |
+
name: "domain",
|
5286 |
+
label: t.text_domain_label,
|
5287 |
+
options: t.domain_options,
|
5288 |
+
description: t.text_domain_description,
|
5289 |
+
is_error: t.field_errors.includes("domain")
|
5290 |
+
},
|
5291 |
+
on: {
|
5292 |
+
is_error_update: function(e) {
|
5293 |
+
return t.removeFieldError("domain")
|
5294 |
+
}
|
5295 |
+
},
|
5296 |
+
model: {
|
5297 |
+
value: t.domain,
|
5298 |
+
callback: function(e) {
|
5299 |
+
t.domain = e
|
5300 |
+
},
|
5301 |
+
expression: "domain"
|
5302 |
+
}
|
5303 |
+
}), i("settings-input-text", {
|
5304 |
+
attrs: {
|
5305 |
+
name: "client_id",
|
5306 |
+
label: t.text_client_id_label,
|
5307 |
+
is_error: t.field_errors.includes("client_id")
|
5308 |
+
},
|
5309 |
+
on: {
|
5310 |
+
is_error_update: function(e) {
|
5311 |
+
return t.removeFieldError("client_id")
|
5312 |
+
}
|
5313 |
+
},
|
5314 |
+
model: {
|
5315 |
+
value: t.client_id,
|
5316 |
+
callback: function(e) {
|
5317 |
+
t.client_id = e
|
5318 |
+
},
|
5319 |
+
expression: "client_id"
|
5320 |
+
}
|
5321 |
+
}), i("settings-input-text", {
|
5322 |
+
attrs: {
|
5323 |
+
name: "client_secret",
|
5324 |
+
type: "password",
|
5325 |
+
label: t.text_client_secret_label,
|
5326 |
+
is_error: t.field_errors.includes("client_secret")
|
5327 |
+
},
|
5328 |
+
on: {
|
5329 |
+
is_error_update: function(e) {
|
5330 |
+
return t.removeFieldError("client_secret")
|
5331 |
+
}
|
5332 |
+
},
|
5333 |
+
model: {
|
5334 |
+
value: t.client_secret,
|
5335 |
+
callback: function(e) {
|
5336 |
+
t.client_secret = e
|
5337 |
+
},
|
5338 |
+
expression: "client_secret"
|
5339 |
+
}
|
5340 |
+
}), i("settings-input-text", {
|
5341 |
+
attrs: {
|
5342 |
+
value: t.redirect_uri,
|
5343 |
+
name: "redirect_uri",
|
5344 |
+
label: t.text_redirect_uri_label,
|
5345 |
+
copy: "",
|
5346 |
+
readonly: ""
|
5347 |
+
}
|
5348 |
+
}), i("settings-o-auth-connection", {
|
5349 |
+
attrs: {
|
5350 |
+
label: t.text_authorization_label,
|
5351 |
+
mailer: t.mailer,
|
5352 |
+
connected_email: t.connected_email_address,
|
5353 |
+
is_auth_required: t.is_auth_required,
|
5354 |
+
client_id: t.client_id,
|
5355 |
+
client_secret: t.client_secret
|
5356 |
+
}
|
5357 |
+
}), t.is_auth_required ? t._e() : i("div", [i("settings-input-text", {
|
5358 |
+
attrs: {
|
5359 |
+
name: "from_name",
|
5360 |
+
label: t.text_from_name_label,
|
5361 |
+
description: t.text_from_name_description
|
5362 |
+
},
|
5363 |
+
model: {
|
5364 |
+
value: t.from_name,
|
5365 |
+
callback: function(e) {
|
5366 |
+
t.from_name = e
|
5367 |
+
},
|
5368 |
+
expression: "from_name"
|
5369 |
+
}
|
5370 |
+
}), i("settings-input-switch", {
|
5371 |
+
attrs: {
|
5372 |
+
classname: "sub_setting",
|
5373 |
+
name: "from_name_force",
|
5374 |
+
title: t.text_force_from_name_title,
|
5375 |
+
label: t.text_force_from_name_label
|
5376 |
+
},
|
5377 |
+
model: {
|
5378 |
+
value: t.from_name_force,
|
5379 |
+
callback: function(e) {
|
5380 |
+
t.from_name_force = e
|
5381 |
+
},
|
5382 |
+
expression: "from_name_force"
|
5383 |
+
}
|
5384 |
+
})], 1)], 1)])
|
5385 |
+
},
|
5386 |
+
hs = [],
|
5387 |
+
gs = {
|
5388 |
+
name: "WizardStepConfigureMailerZoho",
|
5389 |
+
components: {
|
5390 |
+
SettingsInputText: Ut,
|
5391 |
+
SettingsInputSwitch: ii,
|
5392 |
+
SettingsInputSelect: Li,
|
5393 |
+
SettingsOAuthConnection: as
|
5394 |
+
},
|
5395 |
+
data: function() {
|
5396 |
+
return {
|
5397 |
+
mailer: "zoho",
|
5398 |
+
text_domain_label: Object(c["a"])("Region", "mo2f-setup"),
|
5399 |
+
text_domain_description: Object(c["a"])("The data center location used by your Zoho account.", "mo2f-setup"),
|
5400 |
+
text_client_id_label: Object(c["a"])("Client ID", "mo2f-setup"),
|
5401 |
+
text_client_secret_label: Object(c["a"])("Client Secret", "mo2f-setup"),
|
5402 |
+
text_redirect_uri_label: Object(c["a"])("Redirect URI", "mo2f-setup"),
|
5403 |
+
text_authorization_label: Object(c["a"])("Authorization", "mo2f-setup"),
|
5404 |
+
text_from_name_label: Object(c["a"])("From Name", "mo2f-setup"),
|
5405 |
+
text_force_from_name_title: Object(c["a"])("Force From Name", "mo2f-setup"),
|
5406 |
+
text_force_from_name_label: Object(c["a"])("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.", "mo2f-setup"),
|
5407 |
+
text_from_name_description: Object(c["a"])("The name that emails are sent from.", "mo2f-setup"),
|
5408 |
+
text_documentation_link: Object(c["a"])("Read how to set up Zoho Mail", "mo2f-setup"),
|
5409 |
+
description: this.$wpms.mailer_options.zoho.description.substr(0, this.$wpms.mailer_options.zoho.description.indexOf("<br>")),
|
5410 |
+
redirect_uri: this.$wpms.mailer_options.zoho.redirect_uri,
|
5411 |
+
domain_options: this.$wpms.mailer_options.zoho.domain_options,
|
5412 |
+
field_errors: []
|
5413 |
+
}
|
5414 |
+
},
|
5415 |
+
computed: Object(n["a"])(Object(n["a"])(Object(n["a"])(Object(n["a"])({}, Object(ut["b"])("$_settings", ["settings.zoho.domain", "settings.zoho.client_id", "settings.zoho.client_secret", "settings.zoho.access_token", "settings.zoho.refresh_token", "settings.mail.from_name", "settings.mail.from_name_force"])), Object(ut["b"])("$_wizard", ["blocked_step"])), Object(nt["b"])({
|
5416 |
+
connected_email_address: "$_settings/zoho_email"
|
5417 |
+
})), {}, {
|
5418 |
+
is_auth_required: function() {
|
5419 |
+
return !this.access_token || !this.refresh_token
|
5420 |
+
}
|
5421 |
+
}),
|
5422 |
+
watch: {
|
5423 |
+
is_auth_required: function(t) {
|
5424 |
+
this.blocked_step = t
|
5425 |
+
}
|
5426 |
+
},
|
5427 |
+
methods: {
|
5428 |
+
areRequiredFieldsValid: function() {
|
5429 |
+
var t = !0;
|
5430 |
+
return "" === this.domain && (t = !1, this.field_errors.push("domain")), "" === this.client_id && (t = !1, this.field_errors.push("client_id")), "" === this.client_secret && (t = !1, this.field_errors.push("client_secret")), t
|
5431 |
+
},
|
5432 |
+
removeFieldError: function(t) {
|
5433 |
+
this.field_errors = this.field_errors.filter((function(e) {
|
5434 |
+
return e !== t
|
5435 |
+
}))
|
5436 |
+
}
|
5437 |
+
},
|
5438 |
+
mounted: function() {
|
5439 |
+
this.is_auth_required && (this.blocked_step = !0)
|
5440 |
+
}
|
5441 |
+
},
|
5442 |
+
ws = gs,
|
5443 |
+
bs = Object(_["a"])(ws, fs, hs, !1, null, null, null),
|
5444 |
+
As = bs.exports,
|
5445 |
+
vs = new o["a"]({
|
5446 |
+
routes: [{
|
5447 |
+
path: "*",
|
5448 |
+
redirect: "/"
|
5449 |
+
}, {
|
5450 |
+
path: "/",
|
5451 |
+
name: "welcome",
|
5452 |
+
component: O
|
5453 |
+
}, {
|
5454 |
+
path: "/step",
|
5455 |
+
name: "step",
|
5456 |
+
component: N,
|
5457 |
+
children: [{
|
5458 |
+
path: "import",
|
5459 |
+
name: "import_step",
|
5460 |
+
component: it
|
5461 |
+
}, {
|
5462 |
+
path: "choose_mailer",
|
5463 |
+
name: "choose_mailer_step",
|
5464 |
+
component: ct
|
5465 |
+
}, {
|
5466 |
+
path: "configure_mailer",
|
5467 |
+
name: "configure_mailer_step",
|
5468 |
+
component: ht,
|
5469 |
+
children: [{
|
5470 |
+
path: "smtp",
|
5471 |
+
name: "configure_mailer_step_smtp",
|
5472 |
+
component: oi
|
5473 |
+
}, {
|
5474 |
+
path: "smtpcom",
|
5475 |
+
name: "configure_mailer_step_smtpcom",
|
5476 |
+
component: ui
|
5477 |
+
}, {
|
5478 |
+
path: "sendinblue",
|
5479 |
+
name: "configure_mailer_step_sendinblue",
|
5480 |
+
component: wi
|
5481 |
+
}, {
|
5482 |
+
path: "mailgun",
|
5483 |
+
name: "configure_mailer_step_mailgun",
|
5484 |
+
component: Ci
|
5485 |
+
}, {
|
5486 |
+
path: "sendgrid",
|
5487 |
+
name: "configure_mailer_step_sendgrid",
|
5488 |
+
component: Ei
|
5489 |
+
}, {
|
5490 |
+
path: "amazoneses",
|
5491 |
+
name: "configure_mailer_step_amazonses",
|
5492 |
+
component: qi
|
5493 |
+
}, {
|
5494 |
+
path: "gmail",
|
5495 |
+
name: "configure_mailer_step_gmail",
|
5496 |
+
component: ls
|
5497 |
+
}, {
|
5498 |
+
path: "outlook",
|
5499 |
+
name: "configure_mailer_step_outlook",
|
5500 |
+
component: _s
|
5501 |
+
}, {
|
5502 |
+
path: "zoho",
|
5503 |
+
name: "configure_mailer_step_zoho",
|
5504 |
+
component: As
|
5505 |
+
}]
|
5506 |
+
}, {
|
5507 |
+
path: "plugin_features",
|
5508 |
+
name: "plugin_features_step",
|
5509 |
+
component: St
|
5510 |
+
}, {
|
5511 |
+
path: "help_improve",
|
5512 |
+
name: "help_improve_step",
|
5513 |
+
component: Xt
|
5514 |
+
}, {
|
5515 |
+
path: "license",
|
5516 |
+
name: "license_step",
|
5517 |
+
component: oe
|
5518 |
+
}, {
|
5519 |
+
path: "check_configuration",
|
5520 |
+
name: "check_configuration_step",
|
5521 |
+
component: ue
|
5522 |
+
}, {
|
5523 |
+
path: "successful_configuration",
|
5524 |
+
name: "check_configuration_step_success",
|
5525 |
+
component: Ee
|
5526 |
+
}, {
|
5527 |
+
path: "failed_configuration",
|
5528 |
+
name: "check_configuration_step_failure",
|
5529 |
+
component: De
|
5530 |
+
}]
|
5531 |
+
}],
|
5532 |
+
scrollBehavior: function() {
|
5533 |
+
return {
|
5534 |
+
x: 0,
|
5535 |
+
y: 0
|
5536 |
+
}
|
5537 |
+
}
|
5538 |
+
}),
|
5539 |
+
xs = {
|
5540 |
+
name: "SetupWizardApp",
|
5541 |
+
router: vs,
|
5542 |
+
computed: Object(n["a"])({}, Object(nt["b"])({
|
5543 |
+
blocked: "$_app/blocked",
|
5544 |
+
loading: "$_app/loading"
|
5545 |
+
}))
|
5546 |
+
},
|
5547 |
+
ys = xs,
|
5548 |
+
Cs = Object(_["a"])(ys, s, a, !1, null, null, null),
|
5549 |
+
ks = Cs.exports,
|
5550 |
+
Os = i("2b0e"),
|
5551 |
+
js = i("5886"),
|
5552 |
+
Ss = (i("466d"), {
|
5553 |
+
install: function(t) {
|
5554 |
+
window.wp_mail_smtp_vue && (t.prototype.$wpms = window.wp_mail_smtp_vue), t.prototype.$isPro = Ps, t.prototype.$addQueryArg = Es
|
5555 |
+
}
|
5556 |
+
});
|
5557 |
+
|
5558 |
+
function Ps() {
|
5559 |
+
return window.wp_mail_smtp_vue.is_pro
|
5560 |
+
}
|
5561 |
+
|
5562 |
+
function Es(t, e, i) {
|
5563 |
+
var s = new RegExp("([?&])" + e + "=.*?(&|#|$)", "i");
|
5564 |
+
if (t.match(s)) return t.replace(s, "$1" + e + "=" + i + "$2");
|
5565 |
+
var a = ""; - 1 !== t.indexOf("#") && (a = t.replace(/.*#/, "#"), t = t.replace(/#.*/, ""));
|
5566 |
+
var n = -1 !== t.indexOf("?") ? "&" : "?";
|
5567 |
+
return t + n + e + "=" + i + a
|
5568 |
+
}
|
5569 |
+
var Ts = Ss,
|
5570 |
+
zs = {
|
5571 |
+
install: function(t) {
|
5572 |
+
t.prototype.$next_step = function() {
|
5573 |
+
var e = this,
|
5574 |
+
i = t.prototype.$wizard_steps.findIndex((function(t) {
|
5575 |
+
return e.$route.name.includes(t)
|
5576 |
+
})) + 1;
|
5577 |
+
this.$router.push({
|
5578 |
+
name: t.prototype.$wizard_steps[i]
|
5579 |
+
})
|
5580 |
+
}, t.prototype.$previous_step = function() {
|
5581 |
+
var e = this,
|
5582 |
+
i = "welcome",
|
5583 |
+
s = t.prototype.$wizard_steps.findIndex((function(t) {
|
5584 |
+
return e.$route.name.includes(t)
|
5585 |
+
})) - 1;
|
5586 |
+
s >= 0 && (i = t.prototype.$wizard_steps[s]), this.$router.push({
|
5587 |
+
name: i
|
5588 |
+
})
|
5589 |
+
}, t.prototype.$swal && (t.prototype.$wpms_success_toast = function(e) {
|
5590 |
+
var i = e.animation,
|
5591 |
+
s = void 0 !== i && i,
|
5592 |
+
a = e.toast,
|
5593 |
+
n = void 0 === a || a,
|
5594 |
+
o = e.position,
|
5595 |
+
r = void 0 === o ? "top-end" : o,
|
5596 |
+
l = e.showConfirmButton,
|
5597 |
+
p = void 0 !== l && l,
|
5598 |
+
m = e.icon,
|
5599 |
+
u = void 0 === m ? "success" : m,
|
5600 |
+
d = e.timer,
|
5601 |
+
_ = void 0 === d ? 3e3 : d,
|
5602 |
+
f = e.showCloseButton,
|
5603 |
+
h = void 0 === f || f,
|
5604 |
+
g = e.title,
|
5605 |
+
w = void 0 === g ? Object(c["a"])("Settings Updated", "mo2f-setup") : g,
|
5606 |
+
b = e.showCancelButton,
|
5607 |
+
A = void 0 !== b && b,
|
5608 |
+
v = e.confirmButtonText,
|
5609 |
+
x = void 0 === v ? "" : v,
|
5610 |
+
y = e.cancelButtonText,
|
5611 |
+
C = void 0 === y ? "" : y,
|
5612 |
+
k = e.text,
|
5613 |
+
O = void 0 === k ? "" : k;
|
5614 |
+
return t.prototype.$swal({
|
5615 |
+
animation: s,
|
5616 |
+
toast: n,
|
5617 |
+
position: r,
|
5618 |
+
showConfirmButton: p,
|
5619 |
+
icon: u,
|
5620 |
+
showCloseButton: h,
|
5621 |
+
title: w,
|
5622 |
+
timer: _,
|
5623 |
+
showCancelButton: A,
|
5624 |
+
confirmButtonText: x,
|
5625 |
+
cancelButtonText: C,
|
5626 |
+
text: O
|
5627 |
+
})
|
5628 |
+
}, t.prototype.$wpms_error_toast = function(e) {
|
5629 |
+
var i = e.animation,
|
5630 |
+
s = void 0 !== i && i,
|
5631 |
+
a = e.toast,
|
5632 |
+
n = void 0 === a || a,
|
5633 |
+
o = e.position,
|
5634 |
+
r = void 0 === o ? "top-end" : o,
|
5635 |
+
l = e.showConfirmButton,
|
5636 |
+
p = void 0 !== l && l,
|
5637 |
+
m = e.icon,
|
5638 |
+
u = void 0 === m ? "error" : m,
|
5639 |
+
d = e.showCloseButton,
|
5640 |
+
_ = void 0 === d || d,
|
5641 |
+
f = e.title,
|
5642 |
+
h = void 0 === f ? Object(c["a"])("Could Not Save Changes", "mo2f-setup") : f,
|
5643 |
+
g = e.text,
|
5644 |
+
w = void 0 === g ? "" : g;
|
5645 |
+
return t.prototype.$swal({
|
5646 |
+
animation: s,
|
5647 |
+
toast: n,
|
5648 |
+
position: r,
|
5649 |
+
showConfirmButton: p,
|
5650 |
+
icon: u,
|
5651 |
+
showCloseButton: _,
|
5652 |
+
title: h,
|
5653 |
+
text: w,
|
5654 |
+
onOpen: function() {
|
5655 |
+
t.prototype.$swal.hideLoading()
|
5656 |
+
}
|
5657 |
+
})
|
5658 |
+
}, t.prototype.$wpms_error_modal = function(e) {
|
5659 |
+
var i = e.position,
|
5660 |
+
s = void 0 === i ? "center" : i,
|
5661 |
+
a = e.width,
|
5662 |
+
n = void 0 === a ? 650 : a,
|
5663 |
+
o = e.showConfirmButton,
|
5664 |
+
r = void 0 === o || o,
|
5665 |
+
l = e.confirmButtonText,
|
5666 |
+
p = void 0 === l ? Object(c["a"])("Return to Mailer Settings", "mo2f-setup") : l,
|
5667 |
+
m = e.customClass,
|
5668 |
+
u = void 0 === m ? {
|
5669 |
+
container: "mo2f-setup-swal mo2f-setup-swal-error"
|
5670 |
+
} : m,
|
5671 |
+
d = e.showCloseButton,
|
5672 |
+
_ = void 0 === d || d,
|
5673 |
+
f = e.title,
|
5674 |
+
h = void 0 === f ? Object(c["a"])("Whoops, we found an issue!", "mo2f-setup") : f,
|
5675 |
+
g = e.subtitle,
|
5676 |
+
w = void 0 === g ? Object(c["a"])("It looks like something went wrong...", "mo2f-setup") : g,
|
5677 |
+
b = e.detailedError,
|
5678 |
+
A = void 0 === b ? "" : b;
|
5679 |
+
return t.prototype.$swal({
|
5680 |
+
position: s,
|
5681 |
+
width: n,
|
5682 |
+
showConfirmButton: r,
|
5683 |
+
confirmButtonText: p,
|
5684 |
+
customClass: u,
|
5685 |
+
showCloseButton: _,
|
5686 |
+
title: h,
|
5687 |
+
html: '\n\t\t\t\t\t\t<p class="subtitle">'.concat(w, '</p>\n\t\t\t\t\t\t<div class="detailed-error">\n\t\t\t\t\t\t\t<h3>').concat(Object(c["a"])("Error Message:", "mo2f-setup"), "</h3>\n\t\t\t\t\t\t\t<div>").concat(A, "</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t"),
|
5688 |
+
allowEscapeKey: !1,
|
5689 |
+
allowOutsideClick: !1,
|
5690 |
+
onOpen: function() {
|
5691 |
+
t.prototype.$swal.hideLoading()
|
5692 |
+
}
|
5693 |
+
})
|
5694 |
+
}, t.prototype.$required_fields_modal = function() {
|
5695 |
+
return t.prototype.$swal({
|
5696 |
+
position: "center",
|
5697 |
+
width: 450,
|
5698 |
+
showConfirmButton: !0,
|
5699 |
+
confirmButtonText: Object(c["a"])("OK", "mo2f-setup"),
|
5700 |
+
customClass: {
|
5701 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
5702 |
+
},
|
5703 |
+
showCloseButton: !0,
|
5704 |
+
title: Object(c["a"])("Heads up!", "mo2f-setup"),
|
5705 |
+
text: Object(c["a"])("Please fill out all the required fields to continue.", "mo2f-setup"),
|
5706 |
+
allowEscapeKey: !1,
|
5707 |
+
allowOutsideClick: !1
|
5708 |
+
})
|
5709 |
+
})
|
5710 |
+
}
|
5711 |
+
},
|
5712 |
+
Bs = zs,
|
5713 |
+
Is = i("bc3a"),
|
5714 |
+
Ms = i.n(Is),
|
5715 |
+
Ds = function(t, e) {
|
5716 |
+
return new Promise((function(i, s) {
|
5717 |
+
var a = new FormData;
|
5718 |
+
a.append("action", "wp_mail_smtp_vue_install_plugin"), a.append("nonce", Os["a"].prototype.$wpms.nonce), a.append("slug", e), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, a).then((function(e) {
|
5719 |
+
if (e.data.success) t.commit("PLUGIN_INSTALLED", e.data);
|
5720 |
+
else {
|
5721 |
+
var s = "";
|
5722 |
+
ie()(e.data, "data[0].message") ? s = e.data.data[0].message : ie()(e.data, "data") && (s = e.data.data), Os["a"].prototype.$wpms_error_modal({
|
5723 |
+
subtitle: Object(c["a"])("It looks like the plugin installation failed!", "mo2f-setup"),
|
5724 |
+
detailedError: s
|
5725 |
+
})
|
5726 |
+
}
|
5727 |
+
i(e.data)
|
5728 |
+
})).catch((function(t) {
|
5729 |
+
if (s(t), t.response) {
|
5730 |
+
var e = t.response;
|
5731 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5732 |
+
subtitle: Object(c["a"])("It looks like we can't install the plugin.", "mo2f-setup"),
|
5733 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5734 |
+
})
|
5735 |
+
}
|
5736 |
+
Os["a"].prototype.$wpms_error_toast({
|
5737 |
+
title: Object(c["a"])("You appear to be offline. Plugin not installed.", "mo2f-setup")
|
5738 |
+
})
|
5739 |
+
}))
|
5740 |
+
}))
|
5741 |
+
},
|
5742 |
+
Fs = function(t) {
|
5743 |
+
return new Promise((function(e, i) {
|
5744 |
+
var s = new FormData;
|
5745 |
+
s.append("action", "wp_mail_smtp_vue_get_partner_plugins_info"), s.append("nonce", Os["a"].prototype.$wpms.nonce), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(i) {
|
5746 |
+
i.data.success ? t.commit("PLUGINS_FETCHED", i.data) : Os["a"].prototype.$wpms_error_toast({
|
5747 |
+
title: Object(c["a"])("Can't fetch plugins information.", "mo2f-setup")
|
5748 |
+
}), e(i.data)
|
5749 |
+
})).catch((function(t) {
|
5750 |
+
if (i(t), t.response) {
|
5751 |
+
var e = t.response;
|
5752 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5753 |
+
subtitle: Object(c["a"])("It looks like we can't fetch plugins information.", "mo2f-setup"),
|
5754 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5755 |
+
})
|
5756 |
+
}
|
5757 |
+
Os["a"].prototype.$wpms_error_toast({
|
5758 |
+
title: Object(c["a"])("You appear to be offline. Plugin information not retrieved.", "mo2f-setup")
|
5759 |
+
})
|
5760 |
+
}))
|
5761 |
+
}))
|
5762 |
+
},
|
5763 |
+
Ns = {
|
5764 |
+
installPlugin: Ds,
|
5765 |
+
fetchPlugins: Fs
|
5766 |
+
},
|
5767 |
+
Qs = function(t, e) {
|
5768 |
+
return Ns.installPlugin(t, e)
|
5769 |
+
},
|
5770 |
+
Ls = function(t) {
|
5771 |
+
return Ns.fetchPlugins(t)
|
5772 |
+
},
|
5773 |
+
Ws = {
|
5774 |
+
installPlugin: Qs,
|
5775 |
+
getPlugins: Ls
|
5776 |
+
},
|
5777 |
+
Us = function(t) {
|
5778 |
+
return t.plugins
|
5779 |
+
},
|
5780 |
+
Hs = function(t) {
|
5781 |
+
return t.plugins.filter((function(t) {
|
5782 |
+
return "wpforms-lite" !== t.slug
|
5783 |
+
}))
|
5784 |
+
},
|
5785 |
+
Rs = function(t) {
|
5786 |
+
return t.contact_form_plugin_already_installed
|
5787 |
+
},
|
5788 |
+
Gs = {
|
5789 |
+
getField: ut["a"],
|
5790 |
+
plugins: Us,
|
5791 |
+
partner_plugins: Hs,
|
5792 |
+
contact_form_plugin_already_installed: Rs
|
5793 |
+
},
|
5794 |
+
Vs = (i("d81d"), function(t, e) {
|
5795 |
+
t.plugins.map((function(i) {
|
5796 |
+
return i.slug === e.data.slug && (i.is_installed = e.data.is_installed, i.is_activated = e.data.is_activated), "wpforms-lite" === e.data.slug && (t.contact_form_plugin_already_installed = !0), i
|
5797 |
+
}))
|
5798 |
+
}),
|
5799 |
+
Ys = function(t, e) {
|
5800 |
+
t.plugins = e.data.plugins, t.contact_form_plugin_already_installed = e.data.contact_form_plugin_already_installed
|
5801 |
+
},
|
5802 |
+
Js = {
|
5803 |
+
updateField: ut["c"],
|
5804 |
+
PLUGIN_INSTALLED: Vs,
|
5805 |
+
PLUGINS_FETCHED: Ys
|
5806 |
+
},
|
5807 |
+
Ks = {
|
5808 |
+
plugins: [],
|
5809 |
+
contact_form_plugin_already_installed: !1,
|
5810 |
+
smart_contact_form_setting: !0
|
5811 |
+
},
|
5812 |
+
qs = {
|
5813 |
+
namespaced: !0,
|
5814 |
+
state: Ks,
|
5815 |
+
actions: Ws,
|
5816 |
+
getters: Gs,
|
5817 |
+
mutations: Js
|
5818 |
+
},
|
5819 |
+
Zs = (i("b64b"), function(t) {
|
5820 |
+
return new Promise((function(e, i) {
|
5821 |
+
var s = new FormData;
|
5822 |
+
s.append("action", "wp_mail_smtp_vue_get_settings"), s.append("nonce", Os["a"].prototype.$wpms.nonce), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(t) {
|
5823 |
+
t.data.success ? e(t.data) : i(t.data)
|
5824 |
+
})).catch((function(e) {
|
5825 |
+
if (t.dispatch("$_app/block", !1, {
|
5826 |
+
root: !0
|
5827 |
+
}), e.response) {
|
5828 |
+
var i = e.response;
|
5829 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5830 |
+
subtitle: Object(c["a"])("It looks like we can't load the settings.", "mo2f-setup"),
|
5831 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), i.status, i.statusText)
|
5832 |
+
})
|
5833 |
+
}
|
5834 |
+
Os["a"].prototype.$wpms_error_toast({
|
5835 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
5836 |
+
})
|
5837 |
+
}))
|
5838 |
+
}))
|
5839 |
+
}),
|
5840 |
+
Xs = function(t, e) {
|
5841 |
+
return new Promise((function(t, i) {
|
5842 |
+
var s = new FormData;
|
5843 |
+
s.append("action", "wp_mail_smtp_vue_get_amazon_ses_identities"), s.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== e && s.append("value", JSON.stringify(e)), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(e) {
|
5844 |
+
e.data.success ? t(e.data) : i(e.data)
|
5845 |
+
})).catch((function(t) {
|
5846 |
+
if (t.response) {
|
5847 |
+
var e = t.response;
|
5848 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5849 |
+
subtitle: Object(c["a"])("It looks like we can't retrieve Amazon SES Identities.", "mo2f-setup"),
|
5850 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5851 |
+
})
|
5852 |
+
}
|
5853 |
+
Os["a"].prototype.$wpms_error_toast({
|
5854 |
+
title: Object(c["a"])("Can't retrieve Amazon SES Identities.", "mo2f-setup")
|
5855 |
+
})
|
5856 |
+
}))
|
5857 |
+
}))
|
5858 |
+
},
|
5859 |
+
$s = function(t, e) {
|
5860 |
+
return new Promise((function(t, i) {
|
5861 |
+
var s = new FormData;
|
5862 |
+
s.append("action", "wp_mail_smtp_vue_amazon_ses_identity_registration"), s.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== e.value && s.append("value", e.value), !1 !== e.value && s.append("type", e.type), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(e) {
|
5863 |
+
e.data.success ? t(e.data) : i(e.data)
|
5864 |
+
})).catch((function(t) {
|
5865 |
+
if (t.response) {
|
5866 |
+
var e = t.response;
|
5867 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5868 |
+
subtitle: Object(c["a"])("It looks like we can't register the Amazon SES Identity.", "mo2f-setup"),
|
5869 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5870 |
+
})
|
5871 |
+
}
|
5872 |
+
Os["a"].prototype.$wpms_error_toast({
|
5873 |
+
title: Object(c["a"])("Can't register the Amazon SES Identity", "mo2f-setup")
|
5874 |
+
})
|
5875 |
+
}))
|
5876 |
+
}))
|
5877 |
+
},
|
5878 |
+
ta = function(t, e) {
|
5879 |
+
return new Promise((function(t) {
|
5880 |
+
var i = new FormData;
|
5881 |
+
i.append("action", "wp_mail_smtp_vue_update_settings"), i.append("nonce", Os["a"].prototype.$wpms.nonce), void 0 !== e.overwrite && i.append("overwrite", e.overwrite), !1 !== e.value && i.append("value", JSON.stringify(e.value)), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, i).then((function(e) {
|
5882 |
+
t(e.data)
|
5883 |
+
})).catch((function(t) {
|
5884 |
+
if (t.response) {
|
5885 |
+
var e = t.response;
|
5886 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5887 |
+
subtitle: Object(c["a"])("It looks like we can't save the settings.", "mo2f-setup"),
|
5888 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5889 |
+
})
|
5890 |
+
}
|
5891 |
+
Os["a"].prototype.$wpms_error_toast({
|
5892 |
+
title: Object(c["a"])("Network error encountered. Settings not saved.", "mo2f-setup")
|
5893 |
+
})
|
5894 |
+
}))
|
5895 |
+
}))
|
5896 |
+
},
|
5897 |
+
ea = function(t, e) {
|
5898 |
+
return new Promise((function(t) {
|
5899 |
+
var i = new FormData;
|
5900 |
+
i.append("action", "wp_mail_smtp_vue_import_settings"), i.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== e.value && i.append("value", e.value), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, i).then((function(e) {
|
5901 |
+
t(e.data)
|
5902 |
+
})).catch((function(t) {
|
5903 |
+
if (t.response) {
|
5904 |
+
var e = t.response;
|
5905 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5906 |
+
subtitle: Object(c["a"])("It looks like we can't import the plugin settings.", "mo2f-setup"),
|
5907 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5908 |
+
})
|
5909 |
+
}
|
5910 |
+
Os["a"].prototype.$wpms_error_toast({
|
5911 |
+
title: Object(c["a"])("Network error encountered. SMTP plugin import failed!", "mo2f-setup")
|
5912 |
+
})
|
5913 |
+
}))
|
5914 |
+
}))
|
5915 |
+
},
|
5916 |
+
ia = function(t, e) {
|
5917 |
+
return new Promise((function(i, s) {
|
5918 |
+
var a = new FormData;
|
5919 |
+
a.append("action", "wp_mail_smtp_vue_get_oauth_url"), a.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== t && a.append("mailer", t), !1 !== e && a.append("settings", JSON.stringify(e)), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, a).then((function(t) {
|
5920 |
+
t.data.success ? i(t.data) : s(t.data)
|
5921 |
+
})).catch((function(t) {
|
5922 |
+
if (t.response) {
|
5923 |
+
var e = t.response;
|
5924 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5925 |
+
subtitle: Object(c["a"])("It looks like we can't load authentication details.", "mo2f-setup"),
|
5926 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5927 |
+
})
|
5928 |
+
}
|
5929 |
+
Os["a"].prototype.$wpms_error_toast({
|
5930 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
5931 |
+
})
|
5932 |
+
}))
|
5933 |
+
}))
|
5934 |
+
},
|
5935 |
+
sa = function(t) {
|
5936 |
+
return new Promise((function(e, i) {
|
5937 |
+
var s = new FormData;
|
5938 |
+
s.append("action", "wp_mail_smtp_vue_remove_oauth_connection"), s.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== t && s.append("mailer", t), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(t) {
|
5939 |
+
t.data.success ? e(t.data) : i(t.data)
|
5940 |
+
})).catch((function(t) {
|
5941 |
+
if (t.response) {
|
5942 |
+
var e = t.response;
|
5943 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5944 |
+
subtitle: Object(c["a"])("It looks like we can't remove oAuth connection.", "mo2f-setup"),
|
5945 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5946 |
+
})
|
5947 |
+
}
|
5948 |
+
Os["a"].prototype.$wpms_error_toast({
|
5949 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
5950 |
+
})
|
5951 |
+
}))
|
5952 |
+
}))
|
5953 |
+
},
|
5954 |
+
aa = function(t) {
|
5955 |
+
return new Promise((function(e, i) {
|
5956 |
+
var s = new FormData;
|
5957 |
+
s.append("action", "wp_mail_smtp_vue_get_connected_data"), s.append("nonce", Os["a"].prototype.$wpms.nonce), !1 !== t && s.append("mailer", t), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, s).then((function(t) {
|
5958 |
+
t.data.success ? e(t.data) : i(t.data)
|
5959 |
+
})).catch((function(t) {
|
5960 |
+
if (t.response) {
|
5961 |
+
var e = t.response;
|
5962 |
+
return Os["a"].prototype.$wpms_error_modal({
|
5963 |
+
subtitle: Object(c["a"])("It looks like we can't load oAuth connected data.", "mo2f-setup"),
|
5964 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
5965 |
+
})
|
5966 |
+
}
|
5967 |
+
Os["a"].prototype.$wpms_error_toast({
|
5968 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
5969 |
+
})
|
5970 |
+
}))
|
5971 |
+
}))
|
5972 |
+
},
|
5973 |
+
na = function(t) {
|
5974 |
+
return new Promise((function(e) {
|
5975 |
+
var i = new FormData;
|
5976 |
+
i.append("action", "wp_mail_smtp_vue_subscribe_to_newsletter"), i.append("nonce", Os["a"].prototype.$wpms.nonce), i.append("email", t), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, i).then((function(t) {
|
5977 |
+
e(t.data)
|
5978 |
+
}))
|
5979 |
+
}))
|
5980 |
+
},
|
5981 |
+
oa = function(t) {
|
5982 |
+
return new Promise((function(e) {
|
5983 |
+
var i = new FormData;
|
5984 |
+
i.append("action", "wp_mail_smtp_vue_verify_license_key"), i.append("nonce", Os["a"].prototype.$wpms.nonce), i.append("license_key", t), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, i).then((function(t) {
|
5985 |
+
e(t.data)
|
5986 |
+
}))
|
5987 |
+
}))
|
5988 |
+
},
|
5989 |
+
ra = function(t) {
|
5990 |
+
return new Promise((function(e) {
|
5991 |
+
var i = new FormData;
|
5992 |
+
i.append("action", "wp_mail_smtp_vue_upgrade_plugin"), i.append("nonce", Os["a"].prototype.$wpms.nonce), i.append("license_key", t), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, i).then((function(t) {
|
5993 |
+
e(t.data)
|
5994 |
+
}))
|
5995 |
+
}))
|
5996 |
+
},
|
5997 |
+
la = {
|
5998 |
+
fetchSettings: Zs,
|
5999 |
+
saveSettings: ta,
|
6000 |
+
importOtherPluginSettings: ea,
|
6001 |
+
fetchAmazonSESIdentities: Xs,
|
6002 |
+
amazonSESRegisterIdentity: $s,
|
6003 |
+
getAuthRedirect: ia,
|
6004 |
+
removeAuth: sa,
|
6005 |
+
getConnectedData: aa,
|
6006 |
+
subscribeToNewsletter: na,
|
6007 |
+
verifyLicense: oa,
|
6008 |
+
upgradePlugin: ra
|
6009 |
+
},
|
6010 |
+
ca = function(t) {
|
6011 |
+
return la.fetchSettings(t).then((function(e) {
|
6012 |
+
t.commit("SETTINGS_UPDATED", e.data)
|
6013 |
+
})).catch((function(t) {
|
6014 |
+
if (t.data) return Os["a"].prototype.$wpms_error_modal({
|
6015 |
+
subtitle: Object(c["a"])("It looks like we can't load existing settings.", "mo2f-setup"),
|
6016 |
+
detailedError: t.data
|
6017 |
+
})
|
6018 |
+
}))
|
6019 |
+
},
|
6020 |
+
pa = function(t) {
|
6021 |
+
var e = t.getters.settings.amazonses;
|
6022 |
+
if (0 !== Object.keys(e).length) return la.fetchAmazonSESIdentities(t, e).then((function(e) {
|
6023 |
+
t.commit("AMAZONSES_IDENTITIES_UPDATED", e), Os["a"].swal.close()
|
6024 |
+
})).catch((function(t) {
|
6025 |
+
Os["a"].prototype.$wpms_error_modal({
|
6026 |
+
subtitle: Object(c["a"])("It looks like we can't retrieve the Amazon SES Identities.", "mo2f-setup"),
|
6027 |
+
detailedError: t.data ? t.data : ""
|
6028 |
+
})
|
6029 |
+
}))
|
6030 |
+
},
|
6031 |
+
ma = function(t, e) {
|
6032 |
+
return la.amazonSESRegisterIdentity(t, e).catch((function(t) {
|
6033 |
+
Os["a"].prototype.$wpms_error_modal({
|
6034 |
+
subtitle: Object(c["a"])("It looks like we can't register the Amazon SES Identity.", "mo2f-setup"),
|
6035 |
+
detailedError: t.data
|
6036 |
+
})
|
6037 |
+
}))
|
6038 |
+
},
|
6039 |
+
ua = function(t, e) {
|
6040 |
+
t.commit("MAILER_UPDATE", e)
|
6041 |
+
},
|
6042 |
+
da = function(t, e) {
|
6043 |
+
return new Promise((function(i) {
|
6044 |
+
t.commit("LOGS_UPDATE", e), i({
|
6045 |
+
success: !0
|
6046 |
+
})
|
6047 |
+
}))
|
6048 |
+
},
|
6049 |
+
_a = function(t, e) {
|
6050 |
+
t.commit("SETTINGS_SAVE_START");
|
6051 |
+
var i = la.saveSettings(t, e);
|
6052 |
+
return i.then((function() {
|
6053 |
+
t.commit("SETTINGS_SAVE_END")
|
6054 |
+
})), i
|
6055 |
+
},
|
6056 |
+
fa = function(t) {
|
6057 |
+
var e = t.getters.settings;
|
6058 |
+
t.commit("SETTINGS_SAVE_START");
|
6059 |
+
var i = la.saveSettings(t, {
|
6060 |
+
value: e
|
6061 |
+
});
|
6062 |
+
return i.then((function() {
|
6063 |
+
t.commit("SETTINGS_SAVE_END")
|
6064 |
+
})), i
|
6065 |
+
},
|
6066 |
+
ha = function(t, e) {
|
6067 |
+
return t.commit("SETTINGS_SAVE_START"), new Promise((function(i) {
|
6068 |
+
la.importOtherPluginSettings(t, e).then((function(e) {
|
6069 |
+
t.commit("SETTINGS_SAVE_END"), e.success ? ca(t).then((function() {
|
6070 |
+
i(!0)
|
6071 |
+
})) : i(!1)
|
6072 |
+
}))
|
6073 |
+
}))
|
6074 |
+
},
|
6075 |
+
ga = function(t, e) {
|
6076 |
+
return la.getAuthRedirect(e, t.getters.settings[e]).catch((function(t) {
|
6077 |
+
Os["a"].prototype.$wpms_error_modal({
|
6078 |
+
subtitle: Object(c["a"])("It looks like we can't load oAuth redirect.", "mo2f-setup"),
|
6079 |
+
detailedError: t.data
|
6080 |
+
})
|
6081 |
+
}))
|
6082 |
+
},
|
6083 |
+
wa = function(t, e) {
|
6084 |
+
return la.getConnectedData(e).catch((function(t) {
|
6085 |
+
Os["a"].prototype.$wpms_error_modal({
|
6086 |
+
subtitle: Object(c["a"])("It looks like we can't load oAuth connected data.", "mo2f-setup"),
|
6087 |
+
detailedError: t.data
|
6088 |
+
})
|
6089 |
+
}))
|
6090 |
+
},
|
6091 |
+
ba = function(t, e) {
|
6092 |
+
return la.removeAuth(e).then((function() {
|
6093 |
+
t.commit("SETTINGS_REMOVE_AUTH", e)
|
6094 |
+
})).catch((function(t) {
|
6095 |
+
Os["a"].prototype.$wpms_error_modal({
|
6096 |
+
subtitle: Object(c["a"])("It looks like we can't remove oAuth connection.", "mo2f-setup"),
|
6097 |
+
detailedError: t.data
|
6098 |
+
})
|
6099 |
+
}))
|
6100 |
+
},
|
6101 |
+
Aa = function(t, e) {
|
6102 |
+
return new Promise((function(i) {
|
6103 |
+
t.commit("SETTINGS_SAVE_PLUGIN_FEATURES", e), i({
|
6104 |
+
success: !0,
|
6105 |
+
features: e
|
6106 |
+
})
|
6107 |
+
}))
|
6108 |
+
},
|
6109 |
+
va = function(t, e) {
|
6110 |
+
return la.subscribeToNewsletter(e)
|
6111 |
+
},
|
6112 |
+
xa = function(t, e) {
|
6113 |
+
return la.verifyLicense(e)
|
6114 |
+
},
|
6115 |
+
ya = function(t, e) {
|
6116 |
+
return la.upgradePlugin(e)
|
6117 |
+
},
|
6118 |
+
Ca = {
|
6119 |
+
getSettings: ca,
|
6120 |
+
updateSettings: _a,
|
6121 |
+
importOtherPlugin: ha,
|
6122 |
+
setMailer: ua,
|
6123 |
+
setLogs: da,
|
6124 |
+
saveCurrentSettings: fa,
|
6125 |
+
getAmazonSESIdentities: pa,
|
6126 |
+
amazonSESRegisterIdentity: ma,
|
6127 |
+
getAuthUrl: ga,
|
6128 |
+
removeAuth: ba,
|
6129 |
+
getConnectedData: wa,
|
6130 |
+
savePluginFeatures: Aa,
|
6131 |
+
subscribeToNewsletter: va,
|
6132 |
+
verifyLicense: xa,
|
6133 |
+
upgradePlugin: ya
|
6134 |
+
},
|
6135 |
+
ka = (i("4160"), i("1276"), i("159b"), function(t) {
|
6136 |
+
return t.settings
|
6137 |
+
}),
|
6138 |
+
Oa = function(t) {
|
6139 |
+
return t.settings.mail.mailer
|
6140 |
+
},
|
6141 |
+
ja = function(t) {
|
6142 |
+
return t.settings.outlook.user_details ? t.settings.outlook.user_details.email : null
|
6143 |
+
},
|
6144 |
+
Sa = function(t) {
|
6145 |
+
return t.settings.zoho.user_details ? t.settings.zoho.user_details.email : null
|
6146 |
+
},
|
6147 |
+
Pa = function(t) {
|
6148 |
+
return t.plugin_features
|
6149 |
+
},
|
6150 |
+
Ea = function(t) {
|
6151 |
+
return !!t.settings.logs.enabled && t.settings.logs.enabled
|
6152 |
+
},
|
6153 |
+
Ta = function(t) {
|
6154 |
+
return function(e) {
|
6155 |
+
var i = !1,
|
6156 |
+
s = t.amazonses_identities.data,
|
6157 |
+
a = e.split("@").pop();
|
6158 |
+
return void 0 !== s && (s.forEach((function(t) {
|
6159 |
+
("email" === t.type && t.value === e || "domain" === t.type && t.value === a) && (i = !0)
|
6160 |
+
})), i)
|
6161 |
+
}
|
6162 |
+
},
|
6163 |
+
za = {
|
6164 |
+
getField: ut["a"],
|
6165 |
+
settings: ka,
|
6166 |
+
mailer: Oa,
|
6167 |
+
outlook_email: ja,
|
6168 |
+
zoho_email: Sa,
|
6169 |
+
plugin_features: Pa,
|
6170 |
+
amazonses_is_email_registered: Ta,
|
6171 |
+
email_log_enabled: Ea
|
6172 |
+
},
|
6173 |
+
Ba = i("da81"),
|
6174 |
+
Ia = i.n(Ba),
|
6175 |
+
Ma = function(t, e) {
|
6176 |
+
t.is_saving = !1, t.settings = Ia()(t.settings, e)
|
6177 |
+
},
|
6178 |
+
Da = function(t, e) {
|
6179 |
+
t.amazonses_identities = e.data
|
6180 |
+
},
|
6181 |
+
Fa = function(t, e) {
|
6182 |
+
t.settings.mail.mailer = e
|
6183 |
+
},
|
6184 |
+
Na = function(t, e) {
|
6185 |
+
t.settings.logs.enabled = e
|
6186 |
+
},
|
6187 |
+
Qa = function(t) {
|
6188 |
+
t.is_saving = !0
|
6189 |
+
},
|
6190 |
+
La = function(t) {
|
6191 |
+
t.is_saving = !1
|
6192 |
+
},
|
6193 |
+
Wa = function(t, e) {
|
6194 |
+
var i = t.settings[e];
|
6195 |
+
t.settings[e] = {
|
6196 |
+
client_id: i.client_id,
|
6197 |
+
client_secret: i.client_secret
|
6198 |
+
}, "zoho" === e && (t.settings[e].domain = i.domain)
|
6199 |
+
},
|
6200 |
+
Ua = function(t, e) {
|
6201 |
+
t.plugin_features = e
|
6202 |
+
},
|
6203 |
+
Ha = {
|
6204 |
+
updateField: ut["c"],
|
6205 |
+
SETTINGS_UPDATED: Ma,
|
6206 |
+
SETTINGS_SAVE_START: Qa,
|
6207 |
+
SETTINGS_SAVE_END: La,
|
6208 |
+
MAILER_UPDATE: Fa,
|
6209 |
+
LOGS_UPDATE: Na,
|
6210 |
+
AMAZONSES_IDENTITIES_UPDATED: Da,
|
6211 |
+
SETTINGS_REMOVE_AUTH: Wa,
|
6212 |
+
SETTINGS_SAVE_PLUGIN_FEATURES: Ua
|
6213 |
+
},
|
6214 |
+
Ra = {
|
6215 |
+
settings: {
|
6216 |
+
mail: {
|
6217 |
+
mailer: "mail",
|
6218 |
+
from_email: "",
|
6219 |
+
from_name: "",
|
6220 |
+
return_path: !1,
|
6221 |
+
from_email_force: !0,
|
6222 |
+
from_name_force: !1
|
6223 |
+
},
|
6224 |
+
smtp: {
|
6225 |
+
host: "",
|
6226 |
+
port: "587",
|
6227 |
+
encryption: "tls",
|
6228 |
+
autotls: !0,
|
6229 |
+
auth: !0,
|
6230 |
+
user: "",
|
6231 |
+
pass: ""
|
6232 |
+
},
|
6233 |
+
smtpcom: {
|
6234 |
+
api_key: "",
|
6235 |
+
channel: ""
|
6236 |
+
},
|
6237 |
+
sendinblue: {
|
6238 |
+
api_key: "",
|
6239 |
+
domain: ""
|
6240 |
+
},
|
6241 |
+
mailgun: {
|
6242 |
+
api_key: "",
|
6243 |
+
domain: "",
|
6244 |
+
region: "US"
|
6245 |
+
},
|
6246 |
+
sendgrid: {
|
6247 |
+
api_key: "",
|
6248 |
+
domain: ""
|
6249 |
+
},
|
6250 |
+
amazonses: {
|
6251 |
+
client_id: "",
|
6252 |
+
client_secret: "",
|
6253 |
+
region: "us-east-1"
|
6254 |
+
},
|
6255 |
+
gmail: {
|
6256 |
+
client_id: "",
|
6257 |
+
client_secret: "",
|
6258 |
+
access_token: {},
|
6259 |
+
refresh_token: ""
|
6260 |
+
},
|
6261 |
+
outlook: {
|
6262 |
+
client_id: "",
|
6263 |
+
client_secret: "",
|
6264 |
+
access_token: {},
|
6265 |
+
refresh_token: "",
|
6266 |
+
user_details: {
|
6267 |
+
email: ""
|
6268 |
+
}
|
6269 |
+
},
|
6270 |
+
zoho: {
|
6271 |
+
client_id: "",
|
6272 |
+
client_secret: "",
|
6273 |
+
domain: "com",
|
6274 |
+
access_token: {},
|
6275 |
+
refresh_token: "",
|
6276 |
+
user_details: {
|
6277 |
+
email: ""
|
6278 |
+
}
|
6279 |
+
},
|
6280 |
+
logs: {
|
6281 |
+
enabled: !1
|
6282 |
+
}
|
6283 |
+
},
|
6284 |
+
amazonses_identities: {},
|
6285 |
+
plugin_features: []
|
6286 |
+
},
|
6287 |
+
Ga = {
|
6288 |
+
namespaced: !0,
|
6289 |
+
state: Ra,
|
6290 |
+
actions: Ca,
|
6291 |
+
getters: za,
|
6292 |
+
mutations: Ha
|
6293 |
+
},
|
6294 |
+
Va = function() {
|
6295 |
+
return new Promise((function(t) {
|
6296 |
+
var e = new FormData;
|
6297 |
+
e.append("action", "wp_mail_smtp_vue_check_mailer_configuration"), e.append("nonce", Os["a"].prototype.$wpms.nonce), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, e).then((function(e) {
|
6298 |
+
t(e.data)
|
6299 |
+
})).catch((function(t) {
|
6300 |
+
if (t.response) {
|
6301 |
+
var e = t.response;
|
6302 |
+
return Os["a"].prototype.$wpms_error_modal({
|
6303 |
+
subtitle: Object(c["a"])("It looks like we can't perform the mailer configuration check.", "mo2f-setup"),
|
6304 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
6305 |
+
})
|
6306 |
+
}
|
6307 |
+
Os["a"].prototype.$wpms_error_toast({
|
6308 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
6309 |
+
})
|
6310 |
+
}))
|
6311 |
+
}))
|
6312 |
+
},
|
6313 |
+
Ya = function(t) {
|
6314 |
+
var e = new FormData;
|
6315 |
+
e.append("action", "wp_mail_smtp_vue_send_feedback"), e.append("nonce", Os["a"].prototype.$wpms.nonce), e.append("data", JSON.stringify(t)), Ms.a.post(Os["a"].prototype.$wpms.ajax_url, e).catch((function(t) {
|
6316 |
+
if (t.response) {
|
6317 |
+
var e = t.response;
|
6318 |
+
return Os["a"].prototype.$wpms_error_modal({
|
6319 |
+
subtitle: Object(c["a"])("It looks like we can't send the feedback.", "mo2f-setup"),
|
6320 |
+
detailedError: Object(c["c"])(Object(c["a"])("%1$s, %2$s", "mo2f-setup"), e.status, e.statusText)
|
6321 |
+
})
|
6322 |
+
}
|
6323 |
+
Os["a"].prototype.$wpms_error_toast({
|
6324 |
+
title: Object(c["a"])("You appear to be offline.", "mo2f-setup")
|
6325 |
+
})
|
6326 |
+
}))
|
6327 |
+
},
|
6328 |
+
Ja = {
|
6329 |
+
checkMailerConfiguration: Va,
|
6330 |
+
sendFeedback: Ya
|
6331 |
+
},
|
6332 |
+
Ka = function() {
|
6333 |
+
return Ja.checkMailerConfiguration()
|
6334 |
+
},
|
6335 |
+
qa = function(t, e) {
|
6336 |
+
Ja.sendFeedback(e)
|
6337 |
+
},
|
6338 |
+
Za = {
|
6339 |
+
checkMailerConfiguration: Ka,
|
6340 |
+
sendFeedback: qa
|
6341 |
+
},
|
6342 |
+
Xa = function(t) {
|
6343 |
+
return t.blocked_step
|
6344 |
+
},
|
6345 |
+
$a = {
|
6346 |
+
getField: ut["a"],
|
6347 |
+
blocked_step: Xa
|
6348 |
+
},
|
6349 |
+
tn = {
|
6350 |
+
updateField: ut["c"]
|
6351 |
+
},
|
6352 |
+
en = {
|
6353 |
+
blocked_step: !1
|
6354 |
+
},
|
6355 |
+
sn = {
|
6356 |
+
namespaced: !0,
|
6357 |
+
state: en,
|
6358 |
+
actions: Za,
|
6359 |
+
getters: $a,
|
6360 |
+
mutations: tn
|
6361 |
+
},
|
6362 |
+
an = function(t) {
|
6363 |
+
t.commit("INIT")
|
6364 |
+
},
|
6365 |
+
nn = function(t) {
|
6366 |
+
t.commit("BLOCK_APP")
|
6367 |
+
},
|
6368 |
+
on = function(t) {
|
6369 |
+
t.commit("UNBLOCK_APP")
|
6370 |
+
},
|
6371 |
+
rn = function(t) {
|
6372 |
+
t.commit("APP_LOADING_START")
|
6373 |
+
},
|
6374 |
+
ln = function(t) {
|
6375 |
+
t.commit("APP_LOADING_STOP")
|
6376 |
+
},
|
6377 |
+
cn = {
|
6378 |
+
init: an,
|
6379 |
+
block: nn,
|
6380 |
+
unblock: on,
|
6381 |
+
start_loading: rn,
|
6382 |
+
stop_loading: ln
|
6383 |
+
},
|
6384 |
+
pn = function(t) {
|
6385 |
+
return t.blocked
|
6386 |
+
},
|
6387 |
+
mn = function(t) {
|
6388 |
+
return t.loading
|
6389 |
+
},
|
6390 |
+
un = function(t) {
|
6391 |
+
return t.wpms
|
6392 |
+
},
|
6393 |
+
dn = {
|
6394 |
+
blocked: pn,
|
6395 |
+
loading: mn,
|
6396 |
+
wpms: un
|
6397 |
+
},
|
6398 |
+
_n = function() {},
|
6399 |
+
fn = function(t) {
|
6400 |
+
t.blocked = !0
|
6401 |
+
},
|
6402 |
+
hn = function(t) {
|
6403 |
+
t.blocked = !1
|
6404 |
+
},
|
6405 |
+
gn = function(t) {
|
6406 |
+
t.loading = !0
|
6407 |
+
},
|
6408 |
+
wn = function(t) {
|
6409 |
+
t.loading = !1
|
6410 |
+
},
|
6411 |
+
bn = {
|
6412 |
+
INIT: _n,
|
6413 |
+
BLOCK_APP: fn,
|
6414 |
+
UNBLOCK_APP: hn,
|
6415 |
+
APP_LOADING_START: gn,
|
6416 |
+
APP_LOADING_STOP: wn
|
6417 |
+
},
|
6418 |
+
An = {
|
6419 |
+
blocked: !1,
|
6420 |
+
loading: !1,
|
6421 |
+
wpms: window.wp_mail_smtp_vue ? window.wp_mail_smtp_vue : {}
|
6422 |
+
},
|
6423 |
+
vn = {
|
6424 |
+
namespaced: !0,
|
6425 |
+
state: An,
|
6426 |
+
actions: cn,
|
6427 |
+
getters: dn,
|
6428 |
+
mutations: bn
|
6429 |
+
},
|
6430 |
+
xn = function(t) {
|
6431 |
+
t.subscribe((function(e, i) {
|
6432 |
+
if ("$_app/INIT" === e.type) {
|
6433 |
+
var s = i["$_app"].wpms.versions,
|
6434 |
+
a = "",
|
6435 |
+
n = "";
|
6436 |
+
s.php_version_below_55 ? (a = Object(c["a"])("Yikes! PHP Update Required", "mo2f-setup"), n = Object(c["c"])(Object(c["a"])("WP Mail SMTP has detected that your site is running an outdated, insecure version of PHP (%1$s), which could be putting your site at risk for being hacked. WordPress stopped supporting your PHP version in April, 2019. Updating to the recommended version (PHP %2$s) only takes a few minutes and will make your website significantly faster and more secure.", "mo2f-setup"), s.php_version, "7.4")) : s.php_version_below_56 ? (a = Object(c["a"])("Yikes! PHP Update Required", "mo2f-setup"), n = Object(c["c"])(Object(c["a"])("WP Mail SMTP has detected that your site is running an outdated, insecure version of PHP (%1$s). Some mailers require at least PHP version 5.6. Updating to the recommended version (PHP %2$s) only takes a few minutes and will make your website significantly faster and more secure.", "mo2f-setup"), s.php_version, "7.4")) : s.wp_version_below_49 && (a = Object(c["a"])("Yikes! WordPress Update Required", "mo2f-setup"), n = Object(c["c"])(Object(c["a"])("WP Mail SMTP has detected that your site is running an outdated version of WordPress (%s). WP Mail SMTP requires at least WordPress version 4.9.", "mo2f-setup"), s.wp_version)), Os["a"].prototype.$swal && a.length && (t.dispatch("$_app/block"), Os["a"].prototype.$swal.close(), Os["a"].prototype.$swal({
|
6437 |
+
title: a,
|
6438 |
+
html: "<p>".concat(n, '</p><p><a href="').concat(Os["a"].prototype.$wpms.exit_url, '">').concat(Object(c["a"])("Return to Plugin Settings", "mo2f-setup"), "</a></p>"),
|
6439 |
+
customClass: {
|
6440 |
+
container: "mo2f-setup-swal mo2f-setup-swal-alert"
|
6441 |
+
},
|
6442 |
+
allowOutsideClick: !1,
|
6443 |
+
allowEscapeKey: !1,
|
6444 |
+
allowEnterKey: !1,
|
6445 |
+
showConfirmButton: !1,
|
6446 |
+
onOpen: function() {
|
6447 |
+
Os["a"].prototype.$swal.hideLoading()
|
6448 |
+
}
|
6449 |
+
}))
|
6450 |
+
}
|
6451 |
+
}))
|
6452 |
+
},
|
6453 |
+
yn = xn;
|
6454 |
+
Os["a"].use(nt["a"]);
|
6455 |
+
var Cn = [yn],
|
6456 |
+
kn = new nt["a"].Store({
|
6457 |
+
modules: {
|
6458 |
+
$_app: vn,
|
6459 |
+
$_plugins: qs,
|
6460 |
+
$_settings: Ga,
|
6461 |
+
$_wizard: sn
|
6462 |
+
},
|
6463 |
+
plugins: Cn
|
6464 |
+
}),
|
6465 |
+
On = i("e37d"),
|
6466 |
+
jn = (i("6c6b"), i("6d5e")),
|
6467 |
+
Sn = document.getElementById("mo2f-setup-vue-setup-wizard");
|
6468 |
+
Os["a"].config.productionTip = !1, i.p = window.wp_mail_smtp_vue.public_url, Os["a"].use(jn["InlineSvgPlugin"]), Os["a"].use(o["a"]), Os["a"].use(js["a"]), Os["a"].use(On["a"], {
|
6469 |
+
defaultTemplate: '<div class="mo2f-setup-tooltip" role="tooltip"><div class="mo2f-setup-tooltip-arrow"></div><div class="mo2f-setup-tooltip-inner"></div></div>',
|
6470 |
+
defaultArrowSelector: ".mo2f-setup-tooltip-arrow, .mo2f-setup-tooltip__arrow",
|
6471 |
+
defaultInnerSelector: ".mo2f-setup-tooltip-inner, .mo2f-setup-tooltip__inner"
|
6472 |
+
}), Os["a"].use(Ts), Object(c["b"])(window.wp_mail_smtp_vue.translations, "mo2f-setup");
|
6473 |
+
var Pn = {
|
6474 |
+
install: function(t) {
|
6475 |
+
t.prototype.$wizard_steps = [], t.prototype.$wpms && t.prototype.$wpms.other_2FA_plugins.length > 0 && t.prototype.$wizard_steps.push("import_step"), t.prototype.$wizard_steps.push("choose_mailer_step"), t.prototype.$wizard_steps.push("configure_mailer_step"), t.prototype.$wizard_steps.push("plugin_features_step"), t.prototype.$wpms && !t.prototype.$wpms.is_pro && t.prototype.$wizard_steps.push("help_improve_step"), t.prototype.$wizard_steps.push("license_step"), t.prototype.$wizard_steps.push("check_configuration_step")
|
6476 |
+
}
|
6477 |
+
};
|
6478 |
+
Os["a"].use(Pn), Os["a"].use(Bs), new Os["a"]({
|
6479 |
+
store: kn,
|
6480 |
+
mounted: function() {
|
6481 |
+
kn.dispatch("$_app/init")
|
6482 |
+
},
|
6483 |
+
render: function(t) {
|
6484 |
+
return t(ks)
|
6485 |
+
}
|
6486 |
+
}).$mount(Sn)
|
6487 |
+
},
|
6488 |
+
"9f86": function(t, e) {
|
6489 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAB8dAAAdhwGkh9VpAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAADg1JREFUeJzdm3mQVdWdx7+/37mvN5pFERdkaRqj7bCESUMZkxAagjGMoKJCJW2cCs5ACpW1UWqmUvomTvgjxoWJJjGVqINLFEUyg2B0TEDWoHaCtguCvu7GBiQgTUM3Tb93lvxx33LXd18vaNX8qrrueXf53XM+9/s753fOvU2N1533qTKiQ2srYYxIKFgJra3DWotDUFZi3DcamigOjf+nRs3XD3pHG2ucMgJaW9DGgjIC2ljpP5FUWrRoYx3WsA4pbSW0EQlpYgklkRjU2frJxPr61BfdkJ4afTK7/0vaiGuUsdIARBqCs5yDo41IH0sf1xaUEa3aWAljYgllKKFM0WGtxCFNnOiA3P/93U+f/KIbGmYWk2y2iwQwYIudYLxnEmWLrmMMGI1zAKrWQDXDgkEKEAbQFspMDC9M+tej2ljNGtYBpUWz1lazhtUEQwc0lTTO2xM/cTYbmc8sZnUA2m6cAVwNzRnBZOHk9uWK7mtM5ngO6BAAQ2Aw0ZDJ7tcQMDqJ3467+2/aiL3axN5JafEGjLX7jr11+/qmifnNIqhmdtbf0dBsQzJGuYJx7rRVgIATAQpQkwsOoIDzyf77pmADrYGfX/azTzRir2jDG9uS5X+IN80707Mm5jc6chO+BogdrtjXuU4w1yGmYz+kn9Da3TcE9BN+nzrAj6vPyfpp08Z6URnx65Ufzf9znwI4NgcXG6BFhzTUV7kQOPYx57kOCB44bgh+YOEPwYI2ol4b62dnPm5eG0e818MzDx6Dw2B0MSkwSdjbXFl493HmmITwXJM713+N+1z/fXz3ZO9xmSlXE+TviitHNqyqXHNDrxUAAMe+hw+NxqXQCHwKbhWI9JMOkLpHIcEqCAoFv9rcKghSiF02JvZa0vCieFPt3p4AEABw15cxk4BLbCIauU6MAFD6FwFAO0AWKNPtU/YosmeR73q76PTjvsZddtyTAvz47mkqGfQvUwfNPT3lxLg3tmCLv8/NYxYAgNGYdQeAtbSPMrlHBDKLLyk6vGZf57ALGVyRghzFZCoMMBIwFQAqwDTCaBT5G2j/NN59nvs4rzHZn35Q7mGZSg3wAFdUXR2Xa2vjLXOPdwsAE5oM2zfMQVB2BRw3IkND6XkooOUggIMAdngdmjh419YrL7KEHqVkqsIQKhgYSYYqwKoCGiOADCAHkHRDfY/P9RD8QD2Qr4ZlvRkfsXZW/MDc9wsGYCw0QuUab28NhFauG2lgaJRDe+K0KwNou/d4HHGuvvKtiyxROspINVaQqYZBNZjGQiPmbWFOBX4zLuVk85ZKMLb+eNgL19zdctPuyPoCwLH5mEQSb0AD0OmkJr01mnKdGKzfD3+xfXaU057Y2ivnlFpqwEyl+WZlimZoI4qC5iKeIdEz9Lo61nZNsaviTTfmzRsIAE4uwHlS4Wim4VkIKg3BkF0BiPqh685MPBsAnPb0uIXncBEWGB27S0Oc24uJWmtK8ZR7W+Y25AUAAMfn4yQ0+rsgqBwMYwhGW60XrEude7YBZGz9hKWDOknfpWEtUUaU+VUQkYDZCmkyKT0pfqj2WNA9sgBaF+BtYzDe+/ThCgdGZ5E+d+QzaP2cGAAAnqm+o0rp2HPaxMbncpPg1NmfolvQxvqTbv7gqqDMkbMlgSZie493mykTa5SlUBlW0be/fUG//TOGjzZxh98+sNr6h/cWl+CrTPLRoOxRkAJzUEZq7yeS02hkVV2Q75wCbsNDMFgSpACnErTB3POfw/Nhld03c+g8ZWL3GWN9qI3Ypo3YmoyVbZm4of50X8B4csKyO7WJ/bRbEzU7FLoUiifEm25yZYzsKDVmnzYhVAkMjM5XwUtfOvS4MHI6kTyfSK0k0htjqc6jf7lq/Lq3pk+o/fOMKwb0BsAtex68T7Ba4Z1XhKsgu69YmK6fe/05Q6DRK/mQbWgIZCFsOrinqEtMZKhX0xUoY5Y3MOunLZk6+Mb0SY9sn/r1y3oK4ft/vf9+QfJHvomar+wAwhLMavpPRv7umkAAsbQCMk8fITCMiAYAAKNfS7R1HBk8k0k9wSQhcrO7ciZ1W0wkP9j1rStf3jV18td7AuHmPQ+sEiT/xz+LlO6+wQMEnLonEEBnLLoTLFQBGZtYX5+q2th0qyB5r7cighQxqe+A5fYd0yav31xTU9EdAASYFPQPBMmPC5liOx7CpJ9UPvUtH4AhP8UpCByNhEAYbhZ4U9b8Fa3a2Hy3YLmUWZmQil5fTOrdbVOnLjahia/f5u156IQgdQuTNK7Yd6wleNcsmCQYydt9ANLWlC/+wQAJWG1dGFFoJTNW9VLTaoasC66cBLHqR5Crt9VMXb+5pmZQoX5r//rQLovUmkL6AYcKZq265LEhPgAkbABh8Z/Zp2KFh4HT/mFT04MMvTyictcJ8M7NNTOGFey4yKxkkif8KnCMEO57WpZRs30AQEhExL+91fmHwvwQEg8yq3uDK5dVxOXCnHn9j9OmXVyIz9rdq48IqPsdy2Z51SBYgUhe7wOQUUAkBIFRPQUAAJdvbLyHST0ZrgIJZlUZ09iwuaamvBCfWspHmFS7OzvMs7ZJevKj1Y/G3AACFBAC4ZLeACDAxIyYzyS3hUg0U/5Hy/Cjhfi8ueGXrYL040ELsoELr6zK29tUtQuAQi4bDIVg5wnjewMAAL708kddVJycLUi1BEk0UyaWtVumTCtoDcJi/RCTMnlHAGfHK9QEF4AB45EA40y++E+XR3+2CL1KaQHg8vUHPyMk5wdLNLe1WK3eNGNGcZS/G9/8ZYJJ7fSpiYOBWCzHu0NgLhQx3g+Vfi5LJNL4Rm8BAEDVppY/MMlNfom6gAwv7zp9ayH+GPJZ3xwhrGM0cpQ3DwAEGgoZCZgxsy8AAAAb/eOQCUxOBVArCplma1IvCJLKpyYOAMJquM8hA28XNBIwrjVz7PcKvbVLN7XsZpIfBE5gcjFbuev1yVOjfM1984lPmdRu3xwhOE0e7AOgGX8MbLB/inzxqaGY0RcAAIBIPhU2gckBSc0rxJeA2hyoJnYCkWBS5T4A/f4dDcQ4lK8TzPwZxsK+AsBIPsWkdMgExu61Sc18b86YokhfrLb44AWHV5EPABEMCP8XMPQFwfintiW4oi8AjN7QeoBJvRc4fOU6xIGnTpTXRPkyqVM7mWQyUE3sAiKDOxUL6yLT4czWwqq+AAAAguSOwOzQUbYgr47yM6t+w2lm+Z5PTf5+oCsQQFkHXibCYe8CSRAEw5jWVoeb+wIAk9oROnxlVZCaUpAv6HeZQ5KhnAqOBQKgOCQsrCloYmRvH+xYiot6C0CL5M7g7wJcQCa8Nb16YCQAkWoIV1MWaDAAAGDCb8BQ+TpBx7EhqSI8a+Lpt809tBHrzjQyqdOhw5cNR8REZ2QqbmnzbuaaPMnQgVAAJcvxERjPRC6QZBIj4Jsn2/FfvQFAgGGS+0MnMJnRACYSAMe6GsNS6ywQofbnzazY4D/BUIVCIMbCtjrc3RsIgtT+4OErpwISyXHRnpItzmuCkiFh9Pt5AZTUYR8RnogaCUCOfQL/0bYC8Z4CIKQXOdn75HJhIYyOVMDULVvaRXaVKFhNJNS2yNw6VYSVxDhayFKZY989J1fgV2YRImdwPgAWjnhj1jd8CTW2kMVTJnXQOSMUbp8f37j7Ny2RAAbcgc/AqCtkRPCUf3iyGNta6zCyWwAIR8HGmwB5s7r++2YOi/xYgyGPh6bWUFsB75pgiJUuwZMk8Ps8CyRho8QkJtS3LcN3ugOAGCAycIaCryEwkSvTgtUp74ww60ckXy8YAAAUF+MHYOzvRm6QKQ+GwKa2ZVjTfhsujCaAtowPG0LwQokgNTzKFUO1h6wMaan5tW4BoB+ijWO4CYyOgAWSKAgExi2qGHvblmBxvnyBBE47fRCZdCh4GiJkJACwbPd1gixhkd45a9fzB7sFAACKb8M7RLgBjK4eKAFgDARjdVsrGloX4Z+D3jDJGE7DAzYbDo6GEKIBCFLJoNSaSD6bZdQdAABQshivGkItGLLALDFoXxUx/rutGPuO346FnyxDacZ/EbnzjiwE1t6GRL4zYJIUED6dlu54pscAAKBsMV40jO/CsYCat8HhoVLBjF+UJ3GodSEePrEAXwHCfdkQsvnA4EgArMi7MiSg107evj37iU+PAABA2SKsA+EqMI4XmCXmU8kgMG43AvWG8Uo+X8Qawl4ciXx/yKSJ2Tv8JV0fSfQYAACULsF2Ar4WtJAamCVGAbKV8qWoMCLWYKhzouonKBXzjACvfHXz7vo+AwAAJUvxYYnCFWD8qsD479WxTJk5GgCz7u+c/zOlfIs3vQYAALQcnaVLsZCBa8Fo/jwggDEgKh1myIHZjhPy5a+82rD1rADIWMlybChVGAPGfWAkI7LEXoUKMahlDkry1YfIBsAkNcfMvwWd06cAAIDuREfZctxFApcZxuPEkN2Vd6HH+sfyAxCkBtrxrx8b+9K+t4PO6XMAGStdhqZ+d+JWtjCG7f6hPbRRVKBK2D33SOlc/hBkguSFTOqoTOmVYeecNQAZK6nDvtKVWNhFGEaEZUTuN089jH+AAasEoe8I/jZnSDmTGkCkVox5pSX0HygK/iCpL+3kKlSRwndJY5bRmAAF9n6m7/1C1QR8wC0kKgc9af+3i9daZhdfCsTuG7a+/bp8dflCADjtVBznk8J0ozEFwCSjMBYasUAIyr2PDUYPegyJIL+fzi4aSyp29IL/7TiS7/5fOACvmThKTp7BONj/xXYZNCqNxnmk0c8olBuNAdAYYDTKWWFMGIBC7e8sGqmBIvaRSgAAAABJRU5ErkJggg=="
|
6490 |
+
},
|
6491 |
+
"9fec": function(t, e, i) {},
|
6492 |
+
a1c2: function(t, e) {
|
6493 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABlmWCKAAAL5klEQVR4AdVbeZQUxRn/qqt7ZnZml2U5FjfKsQQBWY41ERRwg4iBEMEH5CIaiT4SQUHRCDwIEk3y8rzgD+UwmgMFjRxCfMEYjFFRFIJRiQi8hMilyLUKLOwxM31Uqnq2Zrt7urt6pmfJS723W1VffUfVr+v46hgEFziQKVU91cpeq6V003BJwsr5Tz8GVNHtmFTVc0Ni12sPoK1w9kJWCV0oY+qNl34NKrqulFqaapAkZc0yALKhpFTHfYZslA/tWhjbePJglt6OiXYHQP1B/2tISWKdTIxKt3bYALAwSL0Hva2cP3lr7NkDFoQsDEVKthsA6oyhY4CQ57Ghd/WrqxcAXAZfevlOBdRbost3/IvTihkXHQD2xSFeul7UcNYIQgg0nq4HaD4nbJPUp3aH0nBsWrF7RNEAUG/uP4rEEuu9urq1hYZBAK78BhjTfwVnk2mIbF0HaO0jAPWfWtlc01L1wG1K/cFbijVHhAZAnVpdB6UV6zGQi1xrbCHqsgLo8msB3/agSVV1wwSAsyhvrAXppScBDu/lJM9Y6tHvDfnEf6aXbG445MkUoKBgANhypl3UczNOpwaJ7LCGSzfMBGn8rTZWJwC8UN63HfA62iP2bOckzxj3u2JNYvcbdxW6fBYEgDpj2OuSmhptXc7caujVcM7rBQAvx3vfAXn9o2IgYgkN9+j7WOmyt+Zy2aBxXgCo88c9hD4/Pp86ML5yoobzyokA4HwMCIUCQUQ9omPX5siAYTNL7l+7hsuKYt+GcGHt3rHjSUP9ixggwmlucdCGc9mgAHB+NjRkOjREQND54VikU+ex0YdfEU4mQgDU2Vfvk5rPX+bX3dmsjq67EaTvz+N1DRTnCwBXKr+7BfCqRQCnfFaNeJmBew/aULr0lalczi32BECdM+rnqLFhkYQQ/fDuga3jpOYqwPc84c4goBYKAFcbocMCbaarho8fgap6n5M7d5seX/rXF7icNc4BgNzcrzpd1nmbkm652MroTGtdu4NyzwqArpc4iwLnwwLADKGmBohsoBPl5qd87eLBdW8mDu+egjYcPW1ltAGQ/snY26Vzp5ZLgNp2K1ZummbjHM9ZDqj/UEdJ/tliAMCt4vpPQF5+l++KYfYGXR0bX7NvJ5fLAsDWdb1j5SFJkrI0zsRi1t1hjHicq68+B2n6h/a/b4qTaByUqXMhMnmWVZ2Z9gMgsnUtoN8vBqBf2AzVA4FMnAHpUd/L0WMlmHK/u89zWDAQyg5/2JP7DdnGpu4YvkdJJ2usynha69AZlAWrfLu7cWA3JJfMBNxwCiKJDlzUjNNN50D55SaQvjzYRvcCAB/aA/Lca2282QwFQpv1OOg09grmsFhFwaOepVuQB9dtTDz68rdZWbar42TTACczm93JlDtBWfqqb+PJySOQWjQZYqmmnMYznQwQ4090sgoYMF3uPAMD5/7JwEDyCiRRDqnZj4P2iz8CVHbPYdP2v38DJ5oAsO7vdG5Y4/FDm3PcVy5ojVMPT4dYWTkg7LlgAGnM46CnsbXbW41Y03RYyCvoeBcEvWYkpJe8ngtCslkh10BHJm4CoEajk526SIT6PAFmeH33NlDOnHSK5+SNU5/k0LwIUot4ewysJ1B/QBRYbwC6YjlDY6y0ltFMAFCiU9zJEDRPXqM7OLoyiALW0iKWbDk5+FE27ZfAh4Px+ekwATCUqOxkIl/q4yS55vPq2q4aQhD3vBNIGFX2yOFDXS6OMaIJgBSJeA/eHNHCCEQ0ri1qkY9nZ2EDGDjSlvXMdHMBoKzC3NdkeoDf7OWpNVOAe/QXcGSK5VjwUUZ8ZnirMeLyZa3lfmlUUmqO20wPwCjrD/gJuZWh2jo38gWhaT1d3ZZgtrGcaXswbm8uNOQa70JHCVsxRIE5MUGD4eMMCXXYACDu7q9QSSuDXmouqUJ29Jn4iF867O3gWA2gK8dbs/mnbQDkL26TkGpH2/JeGePYAa+iLB3XH82m/RLGsHAA0PMNc9ib48DPUJAy6Tt3B2EDcizAAW5Ah0kdGg4AYp7N870AYgf1IUK8DNiGSRTIicMiFkABnBs0eiqYHp5Qmw+DrhmsNNMDCAoHAFUkT6NHVIIgqUkBBzvgELvB6mj/LbHQiIXBBMAwTDAs5PyTbDXQo6Zz5SmMVLE7LDrwhJoRwDY5oQPJ9PrWtZBe0RQhSNf/2FcL2zOwrbNXCLIE6lPne4kXRM/sAei2vyBphxC7+dG2vgD49HFHSVuW7N1hZoyTnwKbh6S0mimsvASQ3ykv46L3idqAERn+Iv3PAKDrRQGA1Ume+yQYCycC8nAu1ZXzwNA1kCJRswlKw+lgTYl3gPSsZcF4g3Bp1kkQQq4CVoP0DIEMGWWl2NKRiq4Q61IFkQ6dzD9boU+GnQeGnvld9BdtFTB101Of5K8XgPbmRhdT4Uho3aMQfXqxeQweTlOrtK5alkFdCz8EaOOb5n0T8PYXgX3ldgn0EiRCzwODTJZC+zZHCEjoVSC94TGINp8FmR6Dt2ugW2XzIiSkEaKmdKYiMwS08D3AeP15wBF/PyBkndvE6S1Q6F6gpduGgGG4+AEtjW0GBSn9lWchmseBh0BdoGL87suB+BgT+ejtHF7S0qQxotkDiJY2u4OVC505Yc36p3e95l/eDqX4yN5wWlvOtwFAX3TlAJCPdnJkXz7sxeE9GOzcwMsYaTrXBgDRM+PBizkMnd0paj0uM2+YzJjdMXoF6uxEb1oAiUf+DLEZDwLQvGcIenDqqSBTkPEEBUyiYpSiuzyvW6Fv3QVK6+Mo5iobf1kFsMndo0s8QCfSwXWmORbTOzxonHW1u/mAB6fuwm1Ucw5QUil6iWYPSE3Rd3tH7USPnOTReNPXd7wMM0FwcTwRvcPjjedm2GUqfRfIswXF5mrxeW47SpON/2QKTQDQpuNHiMMVkOgTAX3hhMwXK8g0nX099lhudDom3a147Cncme1U9rgqMm8MwMlP7AXRuIZaX6WbALBSDSuH7FwUHQoCot1VXTQpcG+w6pDoeHeeBGvbXwJGzwn0NJiVWQOTNQJek1nl2FdnbrP8M3rl6Ww8ZcS9Bqzj/Nn7APOBRDl9IIHdT4jpGRrAdTe5PoQyptfSNyVZLLluM2ZvA2DkJJDrJoG27UWAd6irbHk/4HwsHZl0BygjJoBKwWAPLbIPJGxaM5nUxlM51Mg/tgBadqe3XHmX5g6nDl3Me0AWAKZJ+9Hl0+isvYrek7i3hvK4PZHRbvsqYLev2lo9QldZXUsBlqM5V+hOAFpFxBFdIVJrPs7yZZ7IzKFPZLzvC9FFvc7Jaurr8T/sf5cL2hoq/3bXajnd0keNxD7jDM4Ya/QAY+kM+7DA/osJu3lje4QQN3DOagDqnZkcs9195hW+jcdD6t4qaz5TbW08U2rrAVYr6uwR96OWlsV0QHhenLJhQQaOAELfA5nAWBUETBfcA+jZILnq+swrc5/bJPOrd6kK/kzOWe/UrOF7lVRygJNerHzBAIgqUFJqyPTnN4klW77rx2obAm6M0RU7avSyTuPpoZn4SNdNwf+AJnXveyw2aFitqPGsap5DwK3e2r3jlsPpE3d4rRRuMiJaMXsAqqhMKoNG3F6yaM3TIru8PC8AuJB696id0vmzw3wWC84qjIsCAO3uyrCxK+M/fYauf/mFggBgJsisMX3TEWOLcv5sdX4m7dxhAZCHT/hb/IujN6Jl2+rtmoPlCgaAqyf3TblB++L4M1hNduS0fOJCAcADR+6NdKuaFpm/6oN87Dl5QwPAFWoLJ04gZ+pXYy1VwWlB4nwBwAOu+lAp7zAt+sDG3UH0i3iKBgA3ROaMHqclm57Duiq+LqZCQQHA/Yd+oMSUaUF+BMHrEiQuOgDcqDbzK5OJgZ/ChtaF09xiEQC4T+1O2Wj5YeyJ9/7tJh+W1m4A8Iplfjobpz+dJZWcZo29AJB61bytNNX///501tpIlmY/niblnX6D08m+1uXTBkAsYf54Gu//+4Kwvwd02vfKt3sPcBpm2261qvdzUqrlSgmIzACQqmvqpdKOG+LvbVnEt6lOufbK/xf7Oz42iMSR9wAAAABJRU5ErkJggg=="
|
6494 |
+
},
|
6495 |
+
b0d2: function(t, e, i) {},
|
6496 |
+
b1c2: function(t, e, i) {
|
6497 |
+
t.exports = i.p + "img/sendgrid.svg"
|
6498 |
+
},
|
6499 |
+
b32f: function(t, e, i) {
|
6500 |
+
t.exports = i.p + "img/lock-solid.svg"
|
6501 |
+
},
|
6502 |
+
b98f: function(t, e, i) {
|
6503 |
+
t.exports = i.p + "img/wp-smtp.png"
|
6504 |
+
},
|
6505 |
+
ba75: function(t, e, i) {
|
6506 |
+
"use strict";
|
6507 |
+
i("b0d2")
|
6508 |
+
},
|
6509 |
+
bbc2: function(t, e, i) {
|
6510 |
+
var s = {
|
6511 |
+
"./all-in-one-seo-pack.png": "9da7",
|
6512 |
+
"./all-in-one-seo-pack@2x.png": "2cf42",
|
6513 |
+
"./coming-soon.png": "d686",
|
6514 |
+
"./coming-soon@2x.png": "9f86",
|
6515 |
+
"./google-analytics-for-wordpress.png": "c2d9",
|
6516 |
+
"./google-analytics-for-wordpress@2x.png": "82f2",
|
6517 |
+
"./instagram-feed.png": "e0ed",
|
6518 |
+
"./instagram-feed@2x.png": "877f",
|
6519 |
+
"./rafflepress.png": "d3f3",
|
6520 |
+
"./rafflepress@2x.png": "a1c2",
|
6521 |
+
"./wp-call-button.png": "2adc",
|
6522 |
+
"./wp-call-button@2x.png": "1532"
|
6523 |
+
};
|
6524 |
+
|
6525 |
+
function a(t) {
|
6526 |
+
var e = n(t);
|
6527 |
+
return i(e)
|
6528 |
+
}
|
6529 |
+
|
6530 |
+
function n(t) {
|
6531 |
+
if (!i.o(s, t)) {
|
6532 |
+
var e = new Error("Cannot find module '" + t + "'");
|
6533 |
+
throw e.code = "MODULE_NOT_FOUND", e
|
6534 |
+
}
|
6535 |
+
return s[t]
|
6536 |
+
}
|
6537 |
+
a.keys = function() {
|
6538 |
+
return Object.keys(s)
|
6539 |
+
}, a.resolve = n, t.exports = a, a.id = "bbc2"
|
6540 |
+
},
|
6541 |
+
c2d9: function(t, e) {
|
6542 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAJO0lEQVRYCY1Xa3AT1xX+VruSVm/Jkh8E22Cbh20CY9K0QHhYQGDAkCm0hB/pDIHpJM1k0tTpn7QznUD/tdMfmB9N25RJITOdTDrJ0AAFCrQYUhJIeJinAWOMjbGNLFmyLK2k3dVuz11ZtgUKkzOj3at7zr3nu+ece85Z4DtS6/qTm1qDp7xPE//5hhOtT+MX43HFJh+fa113aqbFiZ6MpHRwmnlz27GV96fKMGC6Qz1gNpuCqqqtbDu8pn0q/2lj09OYeZ7GK7vKK51YuLyiiRe1K60tx5vyPGPsVK9U1nqCbr8IXcfOPO+7vIsCKFBAp7OY+VetogCzxYT5i0rdDo/1DJNhluF4U3tVnbfa5jBD13SINiFYsH4K2GKAhGKTGtD2i5YTUU4SdsCWDbp8NkNMy+oGiNkLfK5r58MHVVmJVNb6PFZbbhsyP6x2AVJKDZJb7ut2ZbcOMGstLKaHzRUFwIFrql/o99y9EV2lKvoldnpGiqLDynMGiNoGb1V4KFVFJzZ46ZRqvE3EN+n6q3Cq7/jLHdVj0Ywx/22PogDAwcObeTQtLXPHhuUgU8woI9EJxZzXeCELrz9nGYOXzgHQsho8AVuTL2BHJq1AoH2eRgW3gPmOzN/Mcdyu2QtKvR4fD3YijXyryjpSkoq7t0JQUyaQDM1n4fRaUDbNAykpw2LlCaAAkym3JjyUwGgkQ4GptxLs021H1nY8DqYAwLsvn9Jr6r2wOwXaHCDzw+aYjNMvT3VBlnRSYIJF5IlHUU9xESh3w+GyQpE1pCUFLq8VUkIm8ASUNEpJBaPhFIpd0QIXON0WWmw2QGp0YqttEl9oYJQsoKCmrgI+v+vxgxj/mcmZJUS7mQ5hmZBhQZqMy1BjpicsUAAgPCShttFDwlnIGc0wv6ckJ5IYk1HfWEUbi6hudMM7XYRM/h68Q2buTxvKnG4rucBsBCmbYFZgYJhLGLW1r4wZgymPAgDkq9PEa2bmZ8SuHfuxOCirKEHDsgAWrayARZh0S3yFggfhJHouxNB7LjahnK1n11Jne5F4itxQjAoA5AXs5HcpCToNXSlSzmj51io0zPPlRSbebqsZdeUu6IuBQK0dVz4bgkrWY+T2ihNylCF7J/5MGTwBQCHfmy0cxcLk9ZmzyF9UeX4fUeDht1uBMmDGYi+6T4/gQaQT94Yvg/MkyQ12xOzx6YubN/wty+l7vmk/MhELjwHg2jVNa05LHEU5nX7cd/O+X5rXVfDWhiOQL15HNjQCW1MDUE4BOkfA/z78GLOfr8J7v2mF6HAhS8cnEoYHh7bv/dPe7bxm2nXuzOHfssnJY9KfRbO3BSuqHUHoHHiB8iHd9Yo6J+YUMb3a04942z4DgNr7EPqZrwFZxh+PHkXz+mXY9soWZGh7FqgaAfDZLJhXVYHmVc3o6R8M6pqlt7+vq+MxC1C6zehweiZxmWyTAccQG0RRKtRUQtz5FpYuXw6O8sJMXcDL4Ueo3vgiXlq3Co8SaUNxfglP1kx+fBDZQyfxq9d/gp923tqzOLiuvWB32qddzuRSan6hTJGs5K/F+KQupYxRlp5MeTabxZV4BJ9JMbS0rEVYyhQon9jrbi/0ZArDV65i0+aNbi7LbyqwAKXcWXnh/Ds1oqB/VEKNz5mfQmLfp+guceL3hz5laRaSJBk8c80MuH2UR+TCQzAmC9TuVd9D7dplaFy0EFrfAPb++cPghAVYHXA4rXsyEjvXJI30ShilJHQ3MoZ4JneX+cppqDrxNR503sbY2Bil7dy1szichvK/R77Bhtvv46tEz8RGWVVBim60h5Qz8nq90MF5DQuwlsru4v5RXuWyx6M58zKhsSilT0XD5ztvYP5L0zBnaYBNA0t+AN/Zi/iocgH2hnowpGSwtaQS+/v6DbaSzmXGzr6bqHNyqLHEEb5zDnWrXzP47PHw4SA99fsGAM2uttY0ls3OpMZT4LiY02dBlgqMr0zEzSOP4ApYMW1urg7E3twO56HjeLujFCYpjcycOjwzNoLb125gmWrFc/U/xALbdCpCIVQd/SUELYOeB4vRLzyPAOWM//7nDOnX241w//Hat/7tL7fyaar3kVAK5dPtBoTUmAIzFZKKGQ5YLDzunItg9vJxK5jNkJ+th/TiCiTXr0LomXokejy4ePM4mltaMN3uN/YQ7Q7oZit03oKRuS1I6Ty6egew/y97B86cPLCNY+32s4sDB2xUgkdHVPR1RVnfN24D4F5nDO4SKzz0S4zKcAdEuCtt8FSKMFtNiFEhCndLSAzLxpru0CVwlWHsePP1iT2mDiKhMP7a9j5mmJplqd8zV9A4LciUM6Ib9QRVz3Kj61oUcWosXD4rkhQXzGzxHgnx2JPRXlf2HLr7L+G9t9/Fuh9tRNXMGfSrxp0bt9Bx4QJuXOjEioZN8LumWa5GQh8I/jLbmqlabQ4LtVJZKkS5ZBQLp1HX6KPynEVWpR5hfJ4354rU1LX5MQNRWdKIW8dv4tjAWWjmJJyiC9d7vsR83xbcvSjDtwIwi8ILgkkwTWMLmf+ZgmIUj6bhof6PJ0Pl60MxualzVkEEA2Idm4XKOjdlLA59/feoyZ6OZEJC6GGSlfqEYHeYjRrLzM9yP+uKuq5GWTMpWaymXDTSzunxG2KmYGTVktFI6MmO97G6/yiTUZJSQql92BvGXHEruuLHMce7BiPUQ2TS2gGhuzMc0TW/n/mXtVzMBi6q40MPxv5AJy73BmxvsA+OBHVJeZLJRamEsp+s0UHfAbtZf5gn0U6NLOX9aCTz1e7PV7/A5t/ZeOJfLp/YkpDisAul1KRwCA9GUw7d/2tTSk5eu3a554ur5wdx+/oARf3wJ333wtRgZiI+v/0Nf5kDgQonXU0XWKvNyGhSOO4+dZwd+YaFNaVMhsmW0Bp/mX0J+3Ji8rsPr9mQiKg73Db/kUHlXPpu4gTi8vBrrEUT9LS6gxPFmJQaO6br6u8++OKVf25f8cl9yNqh6Ii4Iqtnt/gCDoQGYxDFyUaTbTyVFErTAw+S8Je66HakkIiqt5HmJnpAasn3kfy+hqYlrY+yHcFB+fJZtv7bQ5lxiX62+uB5XdNKeYF3q5oas1kdRr6lkNlH7A7KnW1MLi2nKnjOFKDiRI07whk1u2pf++YJAEymGP0f66rSztLaxrAAAAAASUVORK5CYII="
|
6543 |
+
},
|
6544 |
+
c869: function(t, e, i) {
|
6545 |
+
t.exports = i.p + "img/loading-pattie.svg"
|
6546 |
+
},
|
6547 |
+
cc99: function(t, e, i) {},
|
6548 |
+
d3f3: function(t, e) {
|
6549 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAFG0lEQVRYCaVXa0xcRRQ+M/exsJTFUgOCpawGLU9taBuB1kdqjRQxwWhMQNPaNqExjTXGgk3sDxOLptb+ayRVafyDRVJfNAImPtpQCdSaKK8mDW1poU2BQq0sLNzde8e5d5m7d+5ddhc9f+acb86c883MnTNzEfwHCbz1dDnM+ZpxwJ/qu3NbE7wFfVKKZ4frva/7lhsOLWcASyyoSiobNzM6zFQQ8kv+XC6RuAgEP9j+Erkx3CQs+D1mNqqonlXgT3sAyK8tVhjE4i3Dck7hTml3wzmuI4IRlYAxY8X/FZeYaBDMzAGx5h1AuRthcnYehMnrILV+DKSnHWDuHzONTkR0iS9G25qIBEhFRnbgobU/ibN3c8xoNLHqLQCx9jBA2moT1gkwwbN3QW7/FEjbcZ5IybZO99nWanQG/ma+rHUQUOoqmvHUWA3GAvMBNTvPkZh1WgkwDFEiLp1IyxEGAVqVoUiPPP5+4oGmQyZIFZOAsdwz09/TtDJz0EQJ8JvHjKVmmL2NRID5GFtzbB+QgW4GAfbm3ZIzsp5l22IQUA+9Ug9X+g+jxVkTjQDZWgNCdZ05UO3rArX3R8AFJSCWVZq4lYD8eyfga4OgFZSCkldm+sgXOgE1vQswMRrC3B4il5bXJtY3fW4QCOxapwoYYWD7fLDZHKwrCwcqQRofASTSxVGDQN4+TomUGj6MgHB1AMT9W8xx6LEKmK//wrR1xdVKt+R06PtAqenznpPDiVjvMJLTVttYDqItebCxDuSpm6HkhrMIcO2irnEizM9wNulth8SOzzhs4WW6orsbDIxMjyfoCg68kLmZeaGsh5kabvu7wvqipkUgAOPXHX7Q84MDI+lrOAyrsryBQ2wGIsSGUJOuiEMmnAQijOSG+Z5JWmdsAYfaDHJ/uBTYujgTI/NAhfFCc3HDmEUjAronJgG8fqtlSEglk2NO7KrzHtK8hQ4/OxCbwLadALZtwEq4+rGAeDZcgg3M7QGFftSxJCYBPYDqzefi4AU/Z+uGZik2Rufzexw+kYC4CBj1n9YIUwR6FH3hsq6XXk702T9Xy0FLGTRSHEIvH3VTFQjdbaazureM7owGrgnniSD0rJOkFNM3mhLXCmiX+0Dt+oaLg+UEEFxuDmMGohVPHBlk5pJtcqfvDBYU5cKSHosdgYZXQdaXPV6hRUn4aEdc3lj69ua5aJ7aHz8vLzkLRknEswoxt0C7eJ6FNFr9ptSvabsIRZsApWVxMB78jbMjGRwBMnrJ6TMywGH4w9MgNPaCakkmV70OSUc6IPkTPqHjdNBIyHZnGASISqdFBZ/vgCDd76jiXmF0E8G5CvZxyFaeE04dBThx0HBDK9OMamZ8WcG01Uel22P7gT5IhJEhUGvXA6raC7hilz0mBPY9SY+YByT97C9+mMp3jaBe6QfNNjttsYKKQ90g0sSEvhkMSUwmUvFTb0DLZf5Jhnx32jAh5tTUlHsB0r0gXFr6oFj/C+xsSWUt4LkZIL+cNLtwdu4tOXMN/yQze6kSepTeoI9S7vOwunB6NAJWR5R6nyI9+sTSj1Krs/4sV9bmn5VmprOteCQ9JgG63GLuhjZ3T9trcT3LrUmMl/KC7xQtVklW3KpHIyAUbR6SVrir2QvYOo7pEV4RrCvc6r9m2ujwCTHgTw6jIS0SAT2xK694z//+NbMni0TESoD+nP5Ff063R5uxPWZcK2AfpG8NmfN9KQTmV/qmxlXhwaKB5SZmMf8F4cLeesegrcIAAAAASUVORK5CYII="
|
6550 |
+
},
|
6551 |
+
d51e: function(t, e, i) {
|
6552 |
+
t.exports = i.p + "img/copy-solid.svg"
|
6553 |
+
},
|
6554 |
+
d686: function(t, e) {
|
6555 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA+OAAAOwwHS3rpiAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAABpdJREFUWIW1l2tsHNUVx//n3nN3dh0nTRxLAeQUg3GVlCREclFUtbgOMpFSEQXUYEirRlDaD0nqBFNQm35otv1StbT0QSXUiLZQpEBqESVA+kKAo6A0gB3aSo6gpPb6oZKWJHaM451753H7YWd2Z8Z2DJV6pKvZmTlz7m/+55x7Z2l4a+N7XuDMeKEz5IX5IT9whgKbf8/4zr+0z0OvvfbZUhHFEP8no7E7l7zlhbn1fuDAC/PwQwde4FSOYR5e4Lh+6Ix6oTPih/lREzgjgc2NVI7OyMjS/Hixr+j/zwDntuUOe4Fzpxfk4YVOAmCe88CBF8FFv10/dAa9wPmbbwsvh274+55Sz+SHBWAJU7KCYEFJrmhUzNrKuQUAi8qxdj8PoM2C2hDQVzzH8X7U+vifPJv/8b6z9/UtCECMEgc6mgkRSDQZZk2WArSZZyJnBdDtCOn277f85pTn53d9Z2T7W/MByIfXYwURtgsbAARQZbIzBDwBYIyIpgAwgHpEHjEPAQBRDY8ysBZNRHT/5z7WVdc4eXffGfRaZIylQMlGzyjfAJZgYS+2PP+fbycd3918g3PRXHWtFdRMAZph0QxQiwWth0WrrZLNUost8K21zWLdddNH7/nh+a0fpO5e6MYSTOMSfMD6QOgT/MAZvuawe/18smXt6IavrvB8cbdBfrcXOJ+IC9WvdFHUUQ78MH8iRHlTsXSfGz8rlj+GKZK4AAZIAkJasDQrbQf4wwJsff2Jf28bOPDzqxc33MjS3cVSX1bCgIWGkhosNLhyfguFhSdTCgDAxE70Wx9t1quoAB8IPLSseA5DAGDvgnyn3LzDhM5FOcMv39g3OH0loINtX1/l+3XHTOhcX2njfEIFB55f2LF/tOtpABAAQAolkgBxZYABKVFNAfUiKNjwiCK9Oyz4509vWvfSG503f61/S1vdXABfHPjF2yrndyihSyxMQoVoSPcnxabfNVQBIFGKJ4+HdZCqgWuPjU6cu1z6PEv9S5a6k4U+EJTl2Mlb2x/qb2tTWYjtbz46Jth8gYV244lVlAol9XKl3J01BRjDWQCSmFWEG/vgr36xtFcJvZ+FgRK6QQr3EbOk7q/H2ztXZ/2/PPDT0zlhvlurBZNUorvY8SpXFBAoIZI+BpCMlvlyvPpY6XtK6sfiYFLqT0ppTr7a0dmR9WUz/qgU+p8sDFjGKmgoaVbUjQ9/RgCAyNVSEENgDgWSturm4QekcA+qWoUvVWQOH2/fdF3Sr2uw1yhpHqmloKaEFDObBQDUSwwTI8xArBnrQWE+ACoiLDctv5eF+Xui3ZZJ6T5jM6uRUO//loWeqhSgqakg9HoRBZsRjKFkDYCRq/ew4UoqfOrAgKeE2Vt9M2nAwmw4eWv7bSkV/tJbVmSOpFXQYGFaRexkJfoTBQhiQDDuuBIAALS+ON7Hwh1MBpfC7M36SVl+oVqE1VowjVUAYryETCdA4v7JnVi2EAQL71mVCM6kbzu1ecOSFEAh7FNC22Q7stCyChAuwgvEMJApiHrUYd+CAOQez/S6kp7emPTZ0vfMeZZ6rFqEFRW8KsDiPXifGEfjIozVEIwHp3pwy5UAKPdBP0sdqkRwlt7GrB+TOVvdIyrA4yLpYBV+QAyb6QYJhUOXHkbrfAAre1FmoUc5EVwJfVPWT0r3LKeX5ZEUwKK9GCCFQ5luADGuJsIrU9/AqvkglDAjyYWGpV43h8+7qU6Q3usi6xQo9BDjfLIjopQ0QeKNyR50zQVAbCeSG44SpuGdLdc0pgDIXKwWqjDIyZnjswDqd+McSXyJGEF2fwBjsVA4NNWD3gu7sDINgMnKt4RGnGcBfDzpw6xNdUMS7oXLl+ypWQAAkN+DP4OxgyT8OSAAxjZ28PZEN35WBWFMgaMPmkgFh2aaknFzVPZqa4F5tmuw18wJAACFbhy0CvcQw8wDUScYe6TE0MROPE+MtfE9wSGU0BDsNSRjSqG9uAZywvwaiL8H5rG6bjwHRicll2k5q0CZGFtIYmPyuuAQOVFenIynhM/RnvGHT79y4vSCAABQ2IMTeQc3kcLjyQ0rBZFevBIqhSkAKcuNLLTNCXd/fG1BAACg3Zgu9GCXFFgLxlPE8OZISfaDBkIiBZATppGlfnrNH//x5kcCiM15CGcWfRP3Uh4tUNgHximSs7bx5MinFBBuUJDTD6Ze7qMAzGXTRVxlA7SHHtbBxxrrYxV81FsP9aGPJ5f/Cg/EvhN3YOmyI0j9cf0viS/aZy8IpPkAAAAASUVORK5CYII="
|
6556 |
+
},
|
6557 |
+
da18: function(t, e, i) {},
|
6558 |
+
ddc9: function(t, e, i) {
|
6559 |
+
t.exports = i.p + "img/gmail.svg"
|
6560 |
+
},
|
6561 |
+
e0ed: function(t, e) {
|
6562 |
+
t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAGaElEQVRYCY1Xy24cRRS9/ZgZP+JH7NgOCTE2CIiiECFZwBpFrPkAWPFV/AY7VkhZIMQCIR4iQQRsOcRMYmNP/BrPTE8X55yq6umxY6A93VV97617bt1XtZMnH88645Xw5oMjbzxqYxLf03O8tCYXeRglH3kaIVfxwxrQSRoB1edj4EEmKoi8CEDjIg+jNzaAyPDaPK7B6JdFZf8KXgOI8lHRZeCVQQG8kudmPLiBlsuM/wKPoBwbTUuaE7hbZhr9PGm0LMkbZriTBkeozjDHu7PShgd/WtF+5MGjcTAkJ3Y91um1m5bNL0uJFERledMsgzh3bEOzsoRijK60xDGNSs8jGzQrBhAbmCtAwC+7esNc79DKw7+8XPAIzKQBXihfu2v54g2zfleLxJOyvjko03XOlaP1Xod/p07clSxeBl1LZ5esPGqP6FUIKAwjGsur5rpHWuywv932nh12OtZoNW3l5nWbmJ4KhmFBa9JShoCu582QaAQtJ61h/ae/mDvdD2swMETRKI3KgWCtLGYK+/fNx1vm5l+x9U8+s+2vvrBHP/xotzfu2sREy5pvvm/5yjpEIUx5XtXoJw5DevDEht1oAAjICckFcFZOFQKFtiwk0O2eWWe/Y6sb9+3q2/es6J3Z/sPvrb391NZuv2HDoz1LWvDGsIcYh3vYR9wZqnAXZ+CDRnsUYpjLHKqBk64qEDgebggDsGLQx0KE4MXvcGHprLu7IyVFgaSDwrKzY8MSOVFzfzo1q/did9PcyZ7k6uCaozI0xiqgByI4GQ5KExCnZqYtTSUF2tAW72xYd69t033sHAuy2WuWrbyOHWP33DF2XvaQO0jU8uTvl4Nj52MeCJ6RBypLAWZZhlJu2Dv3P7K5+5/CoNQmr1231Xc3rHj0AJ5hTcMD8EK1jrsICn1HHLlddLkdNOVAkKVBWFflABcyBAkMYGwyZO/xl59bOr+E+j0xOz1E/KJijl5hzH5f86eWLb7mG1WD1YDegTA5eGew85Nfw0pwwKHR0DfuATAsmVCiZMtrSLRJlVgKJVJ0dmTF88fWuvOhB0lpLAzBo+yfWH/zW2utv1fRPI+hXbRB+2fIoWlR1wCeDpvxHgguYkYjwJZeWbDWWx9Qs7dUE3qob8XBtqUT0+JFcI5JcxJAvopkgQyjAtwZPMHkYteEZ1xxincuoh0xPiAwmQy7YjLykps00Sv8BUWqFDIDgyN1KWnRgvVCHq4gQz0JzpDKAzXMVEIhHg51zSRkPV8AJ0iwOir2awXlwbgJ/OkK4F4WbHRH7wGM5AVMGEDNgUBgGsDSoiIpIS/wMdBAh4PI00jAJTk86KFLwqA2HHMggBP7Qg4kDEECcB4+VFgHx5yZ7dDlknyUBzTIDdH5SuTI/hbyeMZvgp0QNMqXZwewFHqps1ZNeZUDjAsX0ANAZUdLpqAIxypDo4YzgCKUZ++3B1AEVzJXaCCM1rk/OLWis23ZlSXxVT1o2SlKr+y90HHMI77u9coDii8VhgQZtH+1bOFVlQ1LJ52cM5tdxmJn6dRVy5fWYSw+OCjPC0Nv+zvLF25ZNrPiDaOrA294/AxHB3qJvikoDx5+oQ/4F4KrlNgglteteeueV0RJ/PzF8wCpQ1fGK/D4paQK4nsEDzJKQuhP0nEPqAwlG3bukygcTFKMRwCQHXQ9Q8VLQH5KQIEwd+rgYa14nMsArsULfukYePQABQXihQRBGi6Gg/lwHnyMJ0kKhwlB5DEYGT/ryAN91IjkAVDVjumBAEId5xSN8wITgyqk7h2tJQO/+DFSywHZJeURXN2SB1KuzOf6MXC+QhHLSpfc52WYO2XvGFWya8OT5z4XEA7HMoRR5Wn4RlB/gSdoNx7jSQhC7Oeuf2zFi6cSUouGEinil+3xczsbnHgQVo52jRoP9d3f+lrrZDyRBIahMYmvqZ0KnPTxPgBCebxn2RzKDTXd/+OblyqihrLbgTeAyB6AA0b9A3NpRxgdQ4nvCz/yHfOjJ9D/rKZTZQhXxArAWB62rZxZUA8wAlAJ22tUisOIyhK4tqRXgovV8TBXFQVPjHtg5PboER+CGjgJPDWL9kOc+/wvJhqHSVQa5NWAyKeLow7NAy3ywkiWZDWO5v40lAIPPqYw0EfgXIjfBcCRwhEIBT39MnDyQxn+X3DKjRRXhhGBYHUe30G/FBxsLvoHJCM5JyU1x+sAAAAASUVORK5CYII="
|
6563 |
+
},
|
6564 |
+
e108: function(t, e, i) {
|
6565 |
+
t.exports = i.p + "img/check-circle-solid-white.svg"
|
6566 |
+
},
|
6567 |
+
e8f2: function(t, e, i) {},
|
6568 |
+
f8b1: function(t, e, i) {
|
6569 |
+
"use strict";
|
6570 |
+
i("9fec")
|
6571 |
+
}
|
6572 |
+
});
|
includes/js/user-profile-twofa.js
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function mo2fa_viewMethod(evt, selected_method)
|
2 |
+
{
|
3 |
+
var i, tabcontent, tablinks;
|
4 |
+
var is_registered = jQuery('input[name=\'is_registered\']').val();
|
5 |
+
var trimmed_method = selected_method.replace(/ /g,'');
|
6 |
+
jQuery('#method').val(selected_method);
|
7 |
+
tabcontent = document.getElementsByClassName("mo2fa_tabcontent");
|
8 |
+
for (i = 0; i < tabcontent.length; i++) {
|
9 |
+
tabcontent[i].style.display = "none";
|
10 |
+
}
|
11 |
+
tablinks = document.getElementsByClassName("mo2fa_tablinks");
|
12 |
+
for (i = 0; i < tablinks.length; i++) {
|
13 |
+
tablinks[i].className = tablinks[i].className.replace(" active", "");
|
14 |
+
}
|
15 |
+
mo2fa_viewMethod.calledTimes++;
|
16 |
+
jQuery("#mo2fa_count").val(mo2fa_viewMethod.calledTimes);
|
17 |
+
document.getElementById(selected_method).style.display = "block";
|
18 |
+
evt.currentTarget.className += " active";
|
19 |
+
var same_user = jQuery('input[name=\'same_user\']').val();
|
20 |
+
var textbox_id = 'textbox-'+trimmed_method;
|
21 |
+
var textbox_element = document.getElementById(textbox_id);
|
22 |
+
if(selected_method == 'SecurityQuestions')
|
23 |
+
document.getElementById("mo2f_kbaquestion_1").focus();
|
24 |
+
else if(selected_method == 'OTPOverSMS' && is_registered)
|
25 |
+
document.getElementById("textbox-OTPOverSMS").focus();
|
26 |
+
else if(textbox_element !== null && same_user && (is_registered && ((trimmed_method!="EmailVerification" && trimmed_method !='OTPOverEmail')) || (!is_registered && (trimmed_method=="GoogleAuthenticator" || trimmed_method=="AuthyAuthenticator" || trimmed_method=='SecurityQuestions'))))
|
27 |
+
document.getElementById(textbox_id).focus();
|
28 |
+
var save_button_id = jQuery('#'+'save-'+trimmed_method);
|
29 |
+
var form_id = jQuery('#'+'mo2f_verify_form-'+trimmed_method);
|
30 |
+
jQuery(form_id).submit(function(e){
|
31 |
+
e.preventDefault();
|
32 |
+
jQuery(save_button_id).click();
|
33 |
+
});
|
34 |
+
var MO2F_IS_ONPREM = jQuery('input[name=\'MO2F_IS_ONPREM\']').val();
|
35 |
+
var cloud_methods = ["miniOrangeQRCodeAuthentication", "miniOrangeSoftToken","miniOrangePushNotification","OTPOverSMS","miniOrangeAuthenticator"];
|
36 |
+
if(MO2F_IS_ONPREM == 0 && !is_registered)
|
37 |
+
{
|
38 |
+
jQuery('#wpns_nav_message').empty();
|
39 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> <b>Please register with miniOrange for using this method</b> </div></div>");
|
40 |
+
window.onload = nav_popup();
|
41 |
+
return;
|
42 |
+
}
|
43 |
+
for(method of cloud_methods)
|
44 |
+
{
|
45 |
+
if((selected_method==method && !is_registered) || !MO2F_IS_ONPREM)
|
46 |
+
{
|
47 |
+
jQuery('#wpns_nav_message').empty();
|
48 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> <b>Please register with miniOrange for using this method</b> </div></div>");
|
49 |
+
window.onload = nav_popup();
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
jQuery('#mo2f_qrcode').hide();
|
55 |
+
jQuery('.mo2f_miniAuthApp').click(function(){
|
56 |
+
jQuery('#mo2f_qrcode').show();
|
57 |
+
jQuery('#mo2fa_display_mo_methods').hide();
|
58 |
+
var method = jQuery('input[name="miniOrangeAuthenticator"]:checked').val();
|
59 |
+
});
|
60 |
+
|
61 |
+
jQuery('.mo2f_miniAuthApp').click(function(){
|
62 |
+
var method = jQuery('input[name="miniOrangeAuthenticator"]:checked').val();
|
63 |
+
});
|
64 |
+
|
65 |
+
jQuery('#miniOrangeSoftTokenButton').click(function() {
|
66 |
+
jQuery('#method').val('miniOrangeSoftToken');
|
67 |
+
jQuery("#save-miniOrangeAuthenticator").click(function(e){
|
68 |
+
set_mo_methods('miniOrangeSoftToken');
|
69 |
+
});
|
70 |
+
});
|
71 |
+
jQuery('#miniOrangeQRCodeAuthenticationButton').click(function() {
|
72 |
+
jQuery('#method').val('miniOrangeQRCodeAuthentication');
|
73 |
+
jQuery("#save-miniOrangeAuthenticator").click(function(e){
|
74 |
+
set_mo_methods('miniOrangeQRCodeAuthentication');
|
75 |
+
});
|
76 |
+
});
|
77 |
+
jQuery('#miniOrangePushNotificationButton').click(function() {
|
78 |
+
jQuery('#method').val('miniOrangePushNotification');
|
79 |
+
jQuery("#save-miniOrangeAuthenticator").click(function(e){
|
80 |
+
set_mo_methods('miniOrangePushNotification');
|
81 |
+
});
|
82 |
+
});
|
83 |
+
|
84 |
+
|
85 |
+
function set_mo_methods(trimmed_method){
|
86 |
+
var textbox_id_element = jQuery('#'+'textbox-'+trimmed_method);
|
87 |
+
var code = jQuery('#textbox-miniOrangeAuthenticator').val();
|
88 |
+
var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
|
89 |
+
var transient_id = jQuery('input[name=\'transient_id\']').val();
|
90 |
+
var is_registered = jQuery('input[name=\'is_registered\']').val();
|
91 |
+
if(!is_registered)
|
92 |
+
{
|
93 |
+
jQuery('#wpns_nav_message').empty();
|
94 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> <b>Please register with miniOrange for using this method</b> </div></div>");
|
95 |
+
window.onload = nav_popup();
|
96 |
+
}
|
97 |
+
else
|
98 |
+
{
|
99 |
+
var data = {
|
100 |
+
'action' : 'mo_two_factor_ajax',
|
101 |
+
'mo_2f_two_factor_ajax' : 'mo2f_set_miniorange_methods',
|
102 |
+
'nonce' : nonce,
|
103 |
+
'code' : code,
|
104 |
+
'transient_id' : transient_id,
|
105 |
+
};
|
106 |
+
jQuery.post(ajaxurl, data, function(response) {
|
107 |
+
if(response['status'] == "SUCCESS")
|
108 |
+
{
|
109 |
+
$("#mo2f_configuration_status").val(response['status']);
|
110 |
+
}
|
111 |
+
jQuery('#wpns_nav_message').empty();
|
112 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='"+(response['status']=="SUCCESS"?"mo2fa_overlay_success":"mo2fa_overlay_error")+"'><div class='mo2fa_popup_text'> <b>"+response['status']+"</b> : "+response['message']+"</div></div>");
|
113 |
+
window.onload = nav_popup();
|
114 |
+
});
|
115 |
+
}
|
116 |
+
}
|
117 |
+
function mo2fa_set_ga(code){
|
118 |
+
var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
|
119 |
+
var transient_id = jQuery('input[name=\'transient_id\']').val();
|
120 |
+
var ga_secret = jQuery('input[name=\'ga_secret\']').val();
|
121 |
+
var data = {
|
122 |
+
'action' : 'mo_two_factor_ajax',
|
123 |
+
'mo_2f_two_factor_ajax' : 'mo2f_set_GA',
|
124 |
+
'nonce' : nonce,
|
125 |
+
'code' : code,
|
126 |
+
'transient_id' : transient_id,
|
127 |
+
'ga_secret' : ga_secret
|
128 |
+
};
|
129 |
+
jQuery.post(ajaxurl, data, function(response) {
|
130 |
+
jQuery('#wpns_nav_message').empty();
|
131 |
+
if(response == "SUCCESS"){
|
132 |
+
jQuery("#mo2f_configuration_status").val(response);
|
133 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_success'><div class='mo2fa_popup_text'> <b>SUCCESS</b> : Entered Passcode is correct. Click on Update Profile.</div></div>");
|
134 |
+
}else if(response == "UserIdNotFound"){
|
135 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> Error occured validating the user. </div></div>");
|
136 |
+
}else{
|
137 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> <b>ERROR</b> : Entered Passcode is incorrect. </div></div>");
|
138 |
+
}
|
139 |
+
window.onload = nav_popup();
|
140 |
+
});
|
141 |
+
}
|
142 |
+
var MO2F_IS_ONPREM = jQuery('input[name=\'MO2F_IS_ONPREM\']').val();
|
143 |
+
if(MO2F_IS_ONPREM == 1){
|
144 |
+
jQuery(document).ready(function() {
|
145 |
+
jQuery('.mo2f_gauth').qrcode({
|
146 |
+
'render': 'image',
|
147 |
+
size: 175,
|
148 |
+
'text': jQuery('.mo2f_gauth').data('qrcode')
|
149 |
+
});
|
150 |
+
});
|
151 |
+
}
|
152 |
+
|
153 |
+
jQuery("#save-GoogleAuthenticator").click(function(e){
|
154 |
+
var code = jQuery('#textbox-GoogleAuthenticator').val();
|
155 |
+
mo2fa_set_ga(code);
|
156 |
+
});
|
157 |
+
jQuery("#save-AuthyAuthenticator").click(function(e){
|
158 |
+
var code = jQuery('#textbox-AuthyAuthenticator').val();
|
159 |
+
mo2fa_set_ga(code);
|
160 |
+
});
|
161 |
+
jQuery("#save-OTPOverSMS").click(function(e){
|
162 |
+
var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
|
163 |
+
var transient_id = jQuery('input[name=\'transient_id\']').val();
|
164 |
+
var phone = jQuery("#textbox-OTPOverSMS").val();
|
165 |
+
var is_registered = jQuery('input[name=\'is_registered\']').val();
|
166 |
+
if(!is_registered){
|
167 |
+
jQuery('#wpns_nav_message').empty();
|
168 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> <b>Please register with miniOrange for using this method</b> </div></div>");
|
169 |
+
window.onload = nav_popup();
|
170 |
+
}
|
171 |
+
else{
|
172 |
+
var data = {
|
173 |
+
'action' : 'mo_two_factor_ajax',
|
174 |
+
'mo_2f_two_factor_ajax' : 'mo2f_set_otp_over_sms',
|
175 |
+
'nonce' : nonce,
|
176 |
+
'transient_id' : transient_id,
|
177 |
+
'phone' : phone
|
178 |
+
};
|
179 |
+
jQuery.post(ajaxurl, data, function(response) {
|
180 |
+
jQuery('#wpns_nav_message').empty();
|
181 |
+
if(response == "UserIdNotFound"){
|
182 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> Error occured validating the user. </div></div>");
|
183 |
+
}else if(response != "ERROR"){
|
184 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_success'><div class='mo2fa_popup_text'> Phone no. has been saved. Click on Update Profile.</div></div>");
|
185 |
+
}else{
|
186 |
+
jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'> There was an error saving your phone no. </div></div>");
|
187 |
+
}
|
188 |
+
window.onload = nav_popup();
|
189 |
+
});
|
190 |
+
}
|
191 |
+
})
|
192 |
+
mo2fa_viewMethod.calledTimes = 0;
|
193 |
+
document.getElementById("defaultOpen").click();
|
194 |
+
jQuery("#textbox-OTPOverSMS").intlTelInput();
|
includes/lib/mo-2fa-options-enum.php
DELETED
@@ -1,435 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
include "Mo2FABasicEnum.php";
|
3 |
-
|
4 |
-
class mo_2fa_options_enum_pointers extends Mo2FABasicEnum{
|
5 |
-
public static
|
6 |
-
$DEFAULT = array(
|
7 |
-
'custom_admin_pointers4_8_52_default-miniorange-sp-metadata-url',
|
8 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-select-authentication',
|
9 |
-
|
10 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-configure',
|
11 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-choose_app',
|
12 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-download_app',
|
13 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-choose_name_on_app',
|
14 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-scan-qrcode',
|
15 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-enter_code_manually',
|
16 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-enter-otp',
|
17 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-save-otp',
|
18 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-test',
|
19 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-customizations',
|
20 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-inline-registration',
|
21 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-integration',
|
22 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-premium-features',
|
23 |
-
|
24 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-upgrade',
|
25 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-support',
|
26 |
-
'custom_admin_pointers4_8_52_default-miniorange-2fa-support_open',
|
27 |
-
|
28 |
-
|
29 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-level',
|
30 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-attacks',
|
31 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-attack-limit',
|
32 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-rate-limit',
|
33 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-check-attacks',
|
34 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-support',
|
35 |
-
'custom_admin_pointers4_8_52_default-miniorange-firewall-support_open',
|
36 |
-
|
37 |
-
|
38 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-scan-modes',
|
39 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-custom-scan-files',
|
40 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-scan-reports',
|
41 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-scan-dashboard',
|
42 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-support',
|
43 |
-
'custom_admin_pointers4_8_52_default-miniorange-malware-support_open',
|
44 |
-
|
45 |
-
|
46 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-blocking',
|
47 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-whitelisting',
|
48 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-lookup',
|
49 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-range',
|
50 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-htaccess-blocking',
|
51 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-browser-blocking',
|
52 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-country-blocking',
|
53 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-support',
|
54 |
-
'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-support_open',
|
55 |
-
|
56 |
-
|
57 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-manual-db',
|
58 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-auto-db',
|
59 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-file',
|
60 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-report',
|
61 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-support',
|
62 |
-
'custom_admin_pointers4_8_52_default-miniorange-backup-support_open',
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-bruteforce',
|
67 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-recaptcha',
|
68 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-strong-pass',
|
69 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-fake-registration',
|
70 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-content',
|
71 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-block-spam',
|
72 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-support',
|
73 |
-
'custom_admin_pointers4_8_52_default-miniorange-login-spam-support_open'
|
74 |
-
);
|
75 |
-
|
76 |
-
|
77 |
-
}
|
78 |
-
|
79 |
-
|
80 |
-
class mo_2fa_time_zones {
|
81 |
-
|
82 |
-
public static $time_zones = array(
|
83 |
-
"(GMT-11:00) Niue Time" => "Pacific/Niue",
|
84 |
-
"(GMT-11:00) Samoa Standard Time" => "Pacific/Pago_Pago",
|
85 |
-
"(GMT-10:00) Cook Islands Standard Time" => "Pacific/Rarotonga",
|
86 |
-
"(GMT-10:00) Hawaii-Aleutian Standard Time" => "Pacific/Honolulu",
|
87 |
-
"(GMT-10:00) Tahiti Time" => "Pacific/Tahiti",
|
88 |
-
"(GMT-09:30) Marquesas Time" => "Pacific/Marquesas",
|
89 |
-
"(GMT-09:00) Gambier Time" => "Pacific/Gambier",
|
90 |
-
"(GMT-09:00) Hawaii-Aleutian Time (Adak)" => "America/Adak",
|
91 |
-
"(GMT-08:00) Alaska Time - Anchorage" => "America/Anchorage",
|
92 |
-
"(GMT-08:00) Alaska Time - Juneau" => "America/Juneau",
|
93 |
-
"(GMT-08:00) Alaska Time - Metlakatla" => "America/Metlakatla",
|
94 |
-
"(GMT-08:00) Alaska Time - Nome" => "America/Nome",
|
95 |
-
"(GMT-08:00) Alaska Time - Sitka" => "America/Sitka",
|
96 |
-
"(GMT-08:00) Alaska Time - Yakutat" => "America/Yakutat",
|
97 |
-
"(GMT-08:00) Pitcairn Time" => "Pacific/Pitcairn",
|
98 |
-
"(GMT-07:00) Mexican Pacific Standard Time" => "America/Hermosillo",
|
99 |
-
"(GMT-07:00) Mountain Standard Time - Creston" => "America/Creston",
|
100 |
-
"(GMT-07:00) Mountain Standard Time - Dawson" => "America/Dawson",
|
101 |
-
"(GMT-07:00) Mountain Standard Time - Dawson Creek" => "America/Dawson_Creek",
|
102 |
-
"(GMT-07:00) Mountain Standard Time - Fort Nelson" => "America/Fort_Nelson",
|
103 |
-
"(GMT-07:00) Mountain Standard Time - Phoenix" => "America/Phoenix",
|
104 |
-
"(GMT-07:00) Mountain Standard Time - Whitehorse" => "America/Whitehorse",
|
105 |
-
"(GMT-07:00) Pacific Time - Los Angeles" => "America/Los_Angeles",
|
106 |
-
"(GMT-07:00) Pacific Time - Tijuana" => "America/Tijuana",
|
107 |
-
"(GMT-07:00) Pacific Time - Vancouver" => "America/Vancouver",
|
108 |
-
"(GMT-06:00) Central Standard Time - Belize" => "America/Belize",
|
109 |
-
"(GMT-06:00) Central Standard Time - Costa Rica" => "America/Costa_Rica",
|
110 |
-
"(GMT-06:00) Central Standard Time - El Salvador" => "America/El_Salvador",
|
111 |
-
"(GMT-06:00) Central Standard Time - Guatemala" => "America/Guatemala",
|
112 |
-
"(GMT-06:00) Central Standard Time - Managua" => "America/Managua",
|
113 |
-
"(GMT-06:00) Central Standard Time - Regina" => "America/Regina",
|
114 |
-
"(GMT-06:00) Central Standard Time - Swift Current" => "America/Swift_Current",
|
115 |
-
"(GMT-06:00) Central Standard Time - Tegucigalpa" => "America/Tegucigalpa",
|
116 |
-
"(GMT-06:00) Easter Island Time" => "Pacific/Easter",
|
117 |
-
"(GMT-06:00) Galapagos Time" => "Pacific/Galapagos",
|
118 |
-
"(GMT-06:00) Mexican Pacific Time - Chihuahua" => "America/Chihuahua",
|
119 |
-
"(GMT-06:00) Mexican Pacific Time - Mazatlan" => "America/Mazatlan",
|
120 |
-
"(GMT-06:00) Mountain Time - Boise" => "America/Boise",
|
121 |
-
"(GMT-06:00) Mountain Time - Cambridge Bay" => "America/Cambridge_Bay",
|
122 |
-
"(GMT-06:00) Mountain Time - Denver" => "America/Denver",
|
123 |
-
"(GMT-06:00) Mountain Time - Edmonton" => "America/Edmonton",
|
124 |
-
"(GMT-06:00) Mountain Time - Inuvik" => "America/Inuvik",
|
125 |
-
"(GMT-06:00) Mountain Time - Ojinaga" => "America/Ojinaga",
|
126 |
-
"(GMT-06:00) Mountain Time - Yellowknife" => "America/Yellowknife",
|
127 |
-
"(GMT-05:00) Acre Standard Time - Eirunepe" => "America/Eirunepe",
|
128 |
-
"(GMT-05:00) Acre Standard Time - Rio Branco" => "America/Rio_Branco",
|
129 |
-
"(GMT-05:00) Central Time - Bahia Banderas" => "America/Bahia_Banderas",
|
130 |
-
"(GMT-05:00) Central Time - Beulah, North Dakota" => "America/North_Dakota/Beulah",
|
131 |
-
"(GMT-05:00) Central Time - Center, North Dakota" => "America/North_Dakota/Center",
|
132 |
-
"(GMT-05:00) Central Time - Chicago" => "America/Chicago",
|
133 |
-
"(GMT-05:00) Central Time - Knox, Indiana" => "America/Indiana/Knox",
|
134 |
-
"(GMT-05:00) Central Time - Matamoros" => "America/Matamoros",
|
135 |
-
"(GMT-05:00) Central Time - Menominee" => "America/Menominee",
|
136 |
-
"(GMT-05:00) Central Time - Merida" => "America/Merida",
|
137 |
-
"(GMT-05:00) Central Time - Mexico City" => "America/Mexico_City",
|
138 |
-
"(GMT-05:00) Central Time - Monterrey" => "America/Monterrey",
|
139 |
-
"(GMT-05:00) Central Time - New Salem, North Dakota" => "America/North_Dakota/New_Salem",
|
140 |
-
"(GMT-05:00) Central Time - Rainy River" => "America/Rainy_River",
|
141 |
-
"(GMT-05:00) Central Time - Rankin Inlet" => "America/Rankin_Inlet",
|
142 |
-
"(GMT-05:00) Central Time - Resolute" => "America/Resolute",
|
143 |
-
"(GMT-05:00) Central Time - Tell City, Indiana" => "America/Indiana/Tell_City",
|
144 |
-
"(GMT-05:00) Central Time - Winnipeg" => "America/Winnipeg",
|
145 |
-
"(GMT-05:00) Colombia Standard Time" => "America/Bogota",
|
146 |
-
"(GMT-05:00) Eastern Standard Time - Atikokan" => "America/Atikokan",
|
147 |
-
"(GMT-05:00) Eastern Standard Time - Cancun" => "America/Cancun",
|
148 |
-
"(GMT-05:00) Eastern Standard Time - Jamaica" => "America/Jamaica",
|
149 |
-
"(GMT-05:00) Eastern Standard Time - Panama" => "America/Panama",
|
150 |
-
"(GMT-05:00) Ecuador Time" => "America/Guayaquil",
|
151 |
-
"(GMT-05:00) Peru Standard Time" => "America/Lima",
|
152 |
-
"(GMT-04:00) Amazon Standard Time - Boa Vista" => "America/Boa_Vista",
|
153 |
-
"(GMT-04:00) Amazon Standard Time - Campo Grande" => "America/Campo_Grande",
|
154 |
-
"(GMT-04:00) Amazon Standard Time - Cuiaba" => "America/Cuiaba",
|
155 |
-
"(GMT-04:00) Amazon Standard Time - Manaus" => "America/Manaus",
|
156 |
-
"(GMT-04:00) Amazon Standard Time - Porto Velho" => "America/Porto_Velho",
|
157 |
-
"(GMT-04:00) Atlantic Standard Time - Barbados" => "America/Barbados",
|
158 |
-
"(GMT-04:00) Atlantic Standard Time - Blanc-Sablon" => "America/Blanc-Sablon",
|
159 |
-
"(GMT-04:00) Atlantic Standard Time - Cura�ao" => "America/Curacao",
|
160 |
-
"(GMT-04:00) Atlantic Standard Time - Martinique" => "America/Martinique",
|
161 |
-
"(GMT-04:00) Atlantic Standard Time - Port of Spain" => "America/Port_of_Spain",
|
162 |
-
"(GMT-04:00) Atlantic Standard Time - Puerto Rico" => "America/Puerto_Rico",
|
163 |
-
"(GMT-04:00) Atlantic Standard Time - Santo Domingo" => "America/Santo_Domingo",
|
164 |
-
"(GMT-04:00) Bolivia Time" => "America/La_Paz",
|
165 |
-
"(GMT-04:00) Chile Time" => "America/Santiago",
|
166 |
-
"(GMT-04:00) Cuba Time" => "America/Havana",
|
167 |
-
"(GMT-04:00) Eastern Time - Detroit" => "America/Detroit",
|
168 |
-
"(GMT-04:00) Eastern Time - Grand Turk" => "America/Grand_Turk",
|
169 |
-
"(GMT-04:00) Eastern Time - Indianapolis" => "America/Indiana/Indianapolis",
|
170 |
-
"(GMT-04:00) Eastern Time - Iqaluit" => "America/Iqaluit",
|
171 |
-
"(GMT-04:00) Eastern Time - Louisville" => "America/Kentucky/Louisville",
|
172 |
-
"(GMT-04:00) Eastern Time - Marengo, Indiana" => "America/Indiana/Marengo",
|
173 |
-
"(GMT-04:00) Eastern Time - Monticello, Kentucky" => "America/Kentucky/Monticello",
|
174 |
-
"(GMT-04:00) Eastern Time - Nassau" => "America/Nassau",
|
175 |
-
"(GMT-04:00) Eastern Time - New York" => "America/New_York",
|
176 |
-
"(GMT-04:00) Eastern Time - Nipigon" => "America/Nipigon",
|
177 |
-
"(GMT-04:00) Eastern Time - Pangnirtung" => "America/Pangnirtung",
|
178 |
-
"(GMT-04:00) Eastern Time - Petersburg, Indiana" => "America/Indiana/Petersburg",
|
179 |
-
"(GMT-04:00) Eastern Time - Port-au-Prince" => "America/Port-au-Prince",
|
180 |
-
"(GMT-04:00) Eastern Time - Thunder Bay" => "America/Thunder_Bay",
|
181 |
-
"(GMT-04:00) Eastern Time - Toronto" => "America/Toronto",
|
182 |
-
"(GMT-04:00) Eastern Time - Vevay, Indiana" => "America/Indiana/Vevay",
|
183 |
-
"(GMT-04:00) Eastern Time - Vincennes, Indiana" => "America/Indiana/Vincennes",
|
184 |
-
"(GMT-04:00) Eastern Time - Winamac, Indiana" => "America/Indiana/Winamac",
|
185 |
-
"(GMT-04:00) Guyana Time" => "America/Guyana",
|
186 |
-
"(GMT-04:00) Paraguay Time" => "America/Asuncion",
|
187 |
-
"(GMT-04:00) Venezuela Time" => "America/Caracas",
|
188 |
-
"(GMT-03:00) Argentina Standard Time - Buenos Aires" => "America/Argentina/Buenos_Aires",
|
189 |
-
"(GMT-03:00) Argentina Standard Time - Catamarca" => "America/Argentina/Catamarca",
|
190 |
-
"(GMT-03:00) Argentina Standard Time - Cordoba" => "America/Argentina/Cordoba",
|
191 |
-
"(GMT-03:00) Argentina Standard Time - Jujuy" => "America/Argentina/Jujuy",
|
192 |
-
"(GMT-03:00) Argentina Standard Time - La Rioja" => "America/Argentina/La_Rioja",
|
193 |
-
"(GMT-03:00) Argentina Standard Time - Mendoza" => "America/Argentina/Mendoza",
|
194 |
-
"(GMT-03:00) Argentina Standard Time - Rio Gallegos" => "America/Argentina/Rio_Gallegos",
|
195 |
-
"(GMT-03:00) Argentina Standard Time - Salta" => "America/Argentina/Salta",
|
196 |
-
"(GMT-03:00) Argentina Standard Time - San Juan" => "America/Argentina/San_Juan",
|
197 |
-
"(GMT-03:00) Argentina Standard Time - San Luis" => "America/Argentina/San_Luis",
|
198 |
-
"(GMT-03:00) Argentina Standard Time - Tucuman" => "America/Argentina/Tucuman",
|
199 |
-
"(GMT-03:00) Argentina Standard Time - Ushuaia" => "America/Argentina/Ushuaia",
|
200 |
-
"(GMT-03:00) Atlantic Time - Bermuda" => "Atlantic/Bermuda",
|
201 |
-
"(GMT-03:00) Atlantic Time - Glace Bay" => "America/Glace_Bay",
|
202 |
-
"(GMT-03:00) Atlantic Time - Goose Bay" => "America/Goose_Bay",
|
203 |
-
"(GMT-03:00) Atlantic Time - Halifax" => "America/Halifax",
|
204 |
-
"(GMT-03:00) Atlantic Time - Moncton" => "America/Moncton",
|
205 |
-
"(GMT-03:00) Atlantic Time - Thule" => "America/Thule",
|
206 |
-
"(GMT-03:00) Brasilia Standard Time - Araguaina" => "America/Araguaina",
|
207 |
-
"(GMT-03:00) Brasilia Standard Time - Bahia" => "America/Bahia",
|
208 |
-
"(GMT-03:00) Brasilia Standard Time - Belem" => "America/Belem",
|
209 |
-
"(GMT-03:00) Brasilia Standard Time - Fortaleza" => "America/Fortaleza",
|
210 |
-
"(GMT-03:00) Brasilia Standard Time - Maceio" => "America/Maceio",
|
211 |
-
"(GMT-03:00) Brasilia Standard Time - Recife" => "America/Recife",
|
212 |
-
"(GMT-03:00) Brasilia Standard Time - Santarem" => "America/Santarem",
|
213 |
-
"(GMT-03:00) Brasilia Standard Time - Sao Paulo" => "America/Sao_Paulo",
|
214 |
-
"(GMT-03:00) Chile Time" => "America/Santiago",
|
215 |
-
"(GMT-03:00) Falkland Islands Standard Time" => "Atlantic/Stanley",
|
216 |
-
"(GMT-03:00) French Guiana Time" => "America/Cayenne",
|
217 |
-
"(GMT-03:00) Palmer Time" => "Antarctica/Palmer",
|
218 |
-
"(GMT-03:00) Punta Arenas Time" => "America/Punta_Arenas",
|
219 |
-
"(GMT-03:00) Rothera Time" => "Antarctica/Rothera",
|
220 |
-
"(GMT-03:00) Suriname Time" => "America/Paramaribo",
|
221 |
-
"(GMT-03:00) Uruguay Standard Time" => "America/Montevideo",
|
222 |
-
"(GMT-02:30) Newfoundland Time" => "America/St_Johns",
|
223 |
-
"(GMT-02:00) Fernando de Noronha Standard Time" => "America/Noronha",
|
224 |
-
"(GMT-02:00) South Georgia Time" => "Atlantic/South_Georgia",
|
225 |
-
"(GMT-02:00) St. Pierre & Miquelon Time" => "America/Miquelon",
|
226 |
-
"(GMT-02:00) West Greenland Time" => "America/Nuuk",
|
227 |
-
"(GMT-01:00) Cape Verde Standard Time" => "Atlantic/Cape_Verde",
|
228 |
-
"(GMT+00:00) Azores Time" => "Atlantic/Azores",
|
229 |
-
"(GMT+00:00) Coordinated Universal Time" => "UTC",
|
230 |
-
"(GMT+00:00) East Greenland Time" => "America/Scoresbysund",
|
231 |
-
"(GMT+00:00) Greenwich Mean Time" => "Etc/GMT",
|
232 |
-
"(GMT+00:00) Greenwich Mean Time - Abidjan" => "Africa/Abidjan",
|
233 |
-
"(GMT+00:00) Greenwich Mean Time - Accra" => "Africa/Accra",
|
234 |
-
"(GMT+00:00) Greenwich Mean Time - Bissau" => "Africa/Bissau",
|
235 |
-
"(GMT+00:00) Greenwich Mean Time - Danmarkshavn" => "America/Danmarkshavn",
|
236 |
-
"(GMT+00:00) Greenwich Mean Time - Monrovia" => "Africa/Monrovia",
|
237 |
-
"(GMT+00:00) Greenwich Mean Time - Reykjavik" => "Atlantic/Reykjavik",
|
238 |
-
"(GMT+00:00) Greenwich Mean Time - S�o Tom�" => "Africa/Sao_Tome",
|
239 |
-
"(GMT+01:00) Central European Standard Time - Algiers" => "Africa/Algiers",
|
240 |
-
"(GMT+01:00) Central European Standard Time - Tunis" => "Africa/Tunis",
|
241 |
-
"(GMT+01:00) Ireland Time" => "Europe/Dublin",
|
242 |
-
"(GMT+01:00) Morocco Time" => "Africa/Casablanca",
|
243 |
-
"(GMT+01:00) United Kingdom Time" => "Europe/London",
|
244 |
-
"(GMT+01:00) West Africa Standard Time - Lagos" => "Africa/Lagos",
|
245 |
-
"(GMT+01:00) West Africa Standard Time - Ndjamena" => "Africa/Ndjamena",
|
246 |
-
"(GMT+01:00) Western European Time - Canary" => "Atlantic/Canary",
|
247 |
-
"(GMT+01:00) Western European Time - Faroe" => "Atlantic/Faroe",
|
248 |
-
"(GMT+01:00) Western European Time - Lisbon" => "Europe/Lisbon",
|
249 |
-
"(GMT+01:00) Western European Time - Madeira" => "Atlantic/Madeira",
|
250 |
-
"(GMT+01:00) Western Sahara Time" => "Africa/El_Aaiun",
|
251 |
-
"(GMT+02:00) Central Africa Time - Khartoum" => "Africa/Khartoum",
|
252 |
-
"(GMT+02:00) Central Africa Time - Maputo" => "Africa/Maputo",
|
253 |
-
"(GMT+02:00) Central Africa Time - Windhoek" => "Africa/Windhoek",
|
254 |
-
"(GMT+02:00) Central European Time - Amsterdam" => "Europe/Amsterdam",
|
255 |
-
"(GMT+02:00) Central European Time - Andorra" => "Europe/Andorra",
|
256 |
-
"(GMT+02:00) Central European Time - Belgrade" => "Europe/Belgrade",
|
257 |
-
"(GMT+02:00) Central European Time - Berlin" => "Europe/Berlin",
|
258 |
-
"(GMT+02:00) Central European Time - Brussels" => "Europe/Brussels",
|
259 |
-
"(GMT+02:00) Central European Time - Budapest" => "Europe/Budapest",
|
260 |
-
"(GMT+02:00) Central European Time - Ceuta" => "Africa/Ceuta",
|
261 |
-
"(GMT+02:00) Central European Time - Copenhagen" => "Europe/Copenhagen",
|
262 |
-
"(GMT+02:00) Central European Time - Gibraltar" => "Europe/Gibraltar",
|
263 |
-
"(GMT+02:00) Central European Time - Luxembourg" => "Europe/Luxembourg",
|
264 |
-
"(GMT+02:00) Central European Time - Madrid" => "Europe/Madrid",
|
265 |
-
"(GMT+02:00) Central European Time - Malta" => "Europe/Malta",
|
266 |
-
"(GMT+02:00) Central European Time - Monaco" => "Europe/Monaco",
|
267 |
-
"(GMT+02:00) Central European Time - Oslo" => "Europe/Oslo",
|
268 |
-
"(GMT+02:00) Central European Time - Paris" => "Europe/Paris",
|
269 |
-
"(GMT+02:00) Central European Time - Prague" => "Europe/Prague",
|
270 |
-
"(GMT+02:00) Central European Time - Rome" => "Europe/Rome",
|
271 |
-
"(GMT+02:00) Central European Time - Stockholm" => "Europe/Stockholm",
|
272 |
-
"(GMT+02:00) Central European Time - Tirane" => "Europe/Tirane",
|
273 |
-
"(GMT+02:00) Central European Time - Vienna" => "Europe/Vienna",
|
274 |
-
"(GMT+02:00) Central European Time - Warsaw" => "Europe/Warsaw",
|
275 |
-
"(GMT+02:00) Central European Time - Zurich" => "Europe/Zurich",
|
276 |
-
"(GMT+02:00) Eastern European Standard Time - Cairo" => "Africa/Cairo",
|
277 |
-
"(GMT+02:00) Eastern European Standard Time - Kaliningrad" => "Europe/Kaliningrad",
|
278 |
-
"(GMT+02:00) Eastern European Standard Time - Tripoli" => "Africa/Tripoli",
|
279 |
-
"(GMT+02:00) South Africa Standard Time" => "Africa/Johannesburg",
|
280 |
-
"(GMT+02:00) Troll Time" => "Antarctica/Troll",
|
281 |
-
"(GMT+03:00) Arabian Standard Time - Baghdad" => "Asia/Baghdad",
|
282 |
-
"(GMT+03:00) Arabian Standard Time - Qatar" => "Asia/Qatar",
|
283 |
-
"(GMT+03:00) Arabian Standard Time - Riyadh" => "Asia/Riyadh",
|
284 |
-
"(GMT+03:00) East Africa Time - Juba" => "Africa/Juba",
|
285 |
-
"(GMT+03:00) East Africa Time - Nairobi" => "Africa/Nairobi",
|
286 |
-
"(GMT+03:00) Eastern European Time - Amman" => "Asia/Amman",
|
287 |
-
"(GMT+03:00) Eastern European Time - Athens" => "Europe/Athens",
|
288 |
-
"(GMT+03:00) Eastern European Time - Beirut" => "Asia/Beirut",
|
289 |
-
"(GMT+03:00) Eastern European Time - Bucharest" => "Europe/Bucharest",
|
290 |
-
"(GMT+03:00) Eastern European Time - Chisinau" => "Europe/Chisinau",
|
291 |
-
"(GMT+03:00) Eastern European Time - Damascus" => "Asia/Damascus",
|
292 |
-
"(GMT+03:00) Eastern European Time - Gaza" => "Asia/Gaza",
|
293 |
-
"(GMT+03:00) Eastern European Time - Hebron" => "Asia/Hebron",
|
294 |
-
"(GMT+03:00) Eastern European Time - Helsinki" => "Europe/Helsinki",
|
295 |
-
"(GMT+03:00) Eastern European Time - Kiev" => "Europe/Kiev",
|
296 |
-
"(GMT+03:00) Eastern European Time - Nicosia" => "Asia/Nicosia",
|
297 |
-
"(GMT+03:00) Eastern European Time - Riga" => "Europe/Riga",
|
298 |
-
"(GMT+03:00) Eastern European Time - Sofia" => "Europe/Sofia",
|
299 |
-
"(GMT+03:00) Eastern European Time - Tallinn" => "Europe/Tallinn",
|
300 |
-
"(GMT+03:00) Eastern European Time - Uzhhorod" => "Europe/Uzhgorod",
|
301 |
-
"(GMT+03:00) Eastern European Time - Vilnius" => "Europe/Vilnius",
|
302 |
-
"(GMT+03:00) Eastern European Time - Zaporozhye" => "Europe/Zaporozhye",
|
303 |
-
"(GMT+03:00) Famagusta Time" => "Asia/Famagusta",
|
304 |
-
"(GMT+03:00) Israel Time" => "Asia/Jerusalem",
|
305 |
-
"(GMT+03:00) Kirov Time" => "Europe/Kirov",
|
306 |
-
"(GMT+03:00) Moscow Standard Time - Minsk" => "Europe/Minsk",
|
307 |
-
"(GMT+03:00) Moscow Standard Time - Moscow" => "Europe/Moscow",
|
308 |
-
"(GMT+03:00) Moscow Standard Time - Simferopol" => "Europe/Simferopol",
|
309 |
-
"(GMT+03:00) Syowa Time" => "Antarctica/Syowa",
|
310 |
-
"(GMT+03:00) Turkey Time" => "Europe/Istanbul",
|
311 |
-
"(GMT+04:00) Armenia Standard Time" => "Asia/Yerevan",
|
312 |
-
"(GMT+04:00) Astrakhan Time" => "Europe/Astrakhan",
|
313 |
-
"(GMT+04:00) Azerbaijan Standard Time" => "Asia/Baku",
|
314 |
-
"(GMT+04:00) Georgia Standard Time" => "Asia/Tbilisi",
|
315 |
-
"(GMT+04:00) Gulf Standard Time" => "Asia/Dubai",
|
316 |
-
"(GMT+04:00) Mauritius Standard Time" => "Indian/Mauritius",
|
317 |
-
"(GMT+04:00) R�union Time" => "Indian/Reunion",
|
318 |
-
"(GMT+04:00) Samara Standard Time" => "Europe/Samara",
|
319 |
-
"(GMT+04:00) Saratov Time" => "Europe/Saratov",
|
320 |
-
"(GMT+04:00) Seychelles Time" => "Indian/Mahe",
|
321 |
-
"(GMT+04:00) Ulyanovsk Time" => "Europe/Ulyanovsk",
|
322 |
-
"(GMT+04:00) Volgograd Standard Time" => "Europe/Volgograd",
|
323 |
-
"(GMT+04:30) Afghanistan Time" => "Asia/Kabul",
|
324 |
-
"(GMT+04:30) Iran Time" => "Asia/Tehran",
|
325 |
-
"(GMT+05:00) French Southern & Antarctic Time" => "Indian/Kerguelen",
|
326 |
-
"(GMT+05:00) Maldives Time" => "Indian/Maldives",
|
327 |
-
"(GMT+05:00) Mawson Time" => "Antarctica/Mawson",
|
328 |
-
"(GMT+05:00) Pakistan Standard Time" => "Asia/Karachi",
|
329 |
-
"(GMT+05:00) Tajikistan Time" => "Asia/Dushanbe",
|
330 |
-
"(GMT+05:00) Turkmenistan Standard Time" => "Asia/Ashgabat",
|
331 |
-
"(GMT+05:00) Uzbekistan Standard Time - Samarkand" => "Asia/Samarkand",
|
332 |
-
"(GMT+05:00) Uzbekistan Standard Time - Tashkent" => "Asia/Tashkent",
|
333 |
-
"(GMT+05:00) West Kazakhstan Time - Aqtau" => "Asia/Aqtau",
|
334 |
-
"(GMT+05:00) West Kazakhstan Time - Aqtobe" => "Asia/Aqtobe",
|
335 |
-
"(GMT+05:00) West Kazakhstan Time - Atyrau" => "Asia/Atyrau",
|
336 |
-
"(GMT+05:00) West Kazakhstan Time - Oral" => "Asia/Oral",
|
337 |
-
"(GMT+05:00) West Kazakhstan Time - Qyzylorda" => "Asia/Qyzylorda",
|
338 |
-
"(GMT+05:00) Yekaterinburg Standard Time" => "Asia/Yekaterinburg",
|
339 |
-
"(GMT+05:30) Indian Standard Time - Colombo" => "Asia/Colombo",
|
340 |
-
"(GMT+05:30) Indian Standard Time - Kolkata" => "Asia/Kolkata",
|
341 |
-
"(GMT+05:45) Nepal Time" => "Asia/Kathmandu",
|
342 |
-
"(GMT+06:00) Bangladesh Standard Time" => "Asia/Dhaka",
|
343 |
-
"(GMT+06:00) Bhutan Time" => "Asia/Thimphu",
|
344 |
-
"(GMT+06:00) East Kazakhstan Time - Almaty" => "Asia/Almaty",
|
345 |
-
"(GMT+06:00) East Kazakhstan Time - Kostanay" => "Asia/Qostanay",
|
346 |
-
"(GMT+06:00) Indian Ocean Time" => "Indian/Chagos",
|
347 |
-
"(GMT+06:00) Kyrgyzstan Time" => "Asia/Bishkek",
|
348 |
-
"(GMT+06:00) Omsk Standard Time" => "Asia/Omsk",
|
349 |
-
"(GMT+06:00) Urumqi Time" => "Asia/Urumqi",
|
350 |
-
"(GMT+06:00) Vostok Time" => "Antarctica/Vostok",
|
351 |
-
"(GMT+06:30) Cocos Islands Time" => "Indian/Cocos",
|
352 |
-
"(GMT+06:30) Myanmar Time" => "Asia/Yangon",
|
353 |
-
"(GMT+07:00) Barnaul Time" => "Asia/Barnaul",
|
354 |
-
"(GMT+07:00) Christmas Island Time" => "Indian/Christmas",
|
355 |
-
"(GMT+07:00) Davis Time" => "Antarctica/Davis",
|
356 |
-
"(GMT+07:00) Hovd Standard Time" => "Asia/Hovd",
|
357 |
-
"(GMT+07:00) Indochina Time - Bangkok" => "Asia/Bangkok",
|
358 |
-
"(GMT+07:00) Indochina Time - Ho Chi Minh City" => "Asia/Ho_Chi_Minh",
|
359 |
-
"(GMT+07:00) Krasnoyarsk Standard Time - Krasnoyarsk" => "Asia/Krasnoyarsk",
|
360 |
-
"(GMT+07:00) Krasnoyarsk Standard Time - Novokuznetsk" => "Asia/Novokuznetsk",
|
361 |
-
"(GMT+07:00) Novosibirsk Standard Time" => "Asia/Novosibirsk",
|
362 |
-
"(GMT+07:00) Tomsk Time" => "Asia/Tomsk",
|
363 |
-
"(GMT+07:00) Western Indonesia Time - Jakarta" => "Asia/Jakarta",
|
364 |
-
"(GMT+07:00) Western Indonesia Time - Pontianak" => "Asia/Pontianak",
|
365 |
-
"(GMT+08:00) Australian Western Standard Time - Casey" => "Antarctica/Casey",
|
366 |
-
"(GMT+08:00) Australian Western Standard Time - Perth" => "Australia/Perth",
|
367 |
-
"(GMT+08:00) Brunei Darussalam Time" => "Asia/Brunei",
|
368 |
-
"(GMT+08:00) Central Indonesia Time" => "Asia/Makassar",
|
369 |
-
"(GMT+08:00) China Standard Time - Macao" => "Asia/Macau",
|
370 |
-
"(GMT+08:00) China Standard Time - Shanghai" => "Asia/Shanghai",
|
371 |
-
"(GMT+08:00) Hong Kong Standard Time" => "Asia/Hong_Kong",
|
372 |
-
"(GMT+08:00) Irkutsk Standard Time" => "Asia/Irkutsk",
|
373 |
-
"(GMT+08:00) Malaysia Time - Kuala Lumpur" => "Asia/Kuala_Lumpur",
|
374 |
-
"(GMT+08:00) Malaysia Time - Kuching" => "Asia/Kuching",
|
375 |
-
"(GMT+08:00) Philippine Standard Time" => "Asia/Manila",
|
376 |
-
"(GMT+08:00) Singapore Standard Time" => "Asia/Singapore",
|
377 |
-
"(GMT+08:00) Taipei Standard Time" => "Asia/Taipei",
|
378 |
-
"(GMT+08:00) Ulaanbaatar Standard Time - Choibalsan" => "Asia/Choibalsan",
|
379 |
-
"(GMT+08:00) Ulaanbaatar Standard Time - Ulaanbaatar" => "Asia/Ulaanbaatar",
|
380 |
-
"(GMT+08:45) Australian Central Western Standard Time" => "Australia/Eucla",
|
381 |
-
"(GMT+09:00) East Timor Time" => "Asia/Dili",
|
382 |
-
"(GMT+09:00) Eastern Indonesia Time" => "Asia/Jayapura",
|
383 |
-
"(GMT+09:00) Japan Standard Time" => "Asia/Tokyo",
|
384 |
-
"(GMT+09:00) Korean Standard Time - Pyongyang" => "Asia/Pyongyang",
|
385 |
-
"(GMT+09:00) Korean Standard Time - Seoul" => "Asia/Seoul",
|
386 |
-
"(GMT+09:00) Palau Time" => "Pacific/Palau",
|
387 |
-
"(GMT+09:00) Yakutsk Standard Time - Chita" => "Asia/Chita",
|
388 |
-
"(GMT+09:00) Yakutsk Standard Time - Khandyga" => "Asia/Khandyga",
|
389 |
-
"(GMT+09:00) Yakutsk Standard Time - Yakutsk" => "Asia/Yakutsk",
|
390 |
-
"(GMT+09:30) Australian Central Standard Time" => "Australia/Darwin",
|
391 |
-
"(GMT+09:30) Central Australia Time - Adelaide" => "Australia/Adelaide",
|
392 |
-
"(GMT+09:30) Central Australia Time - Broken Hill" => "Australia/Broken_Hill",
|
393 |
-
"(GMT+10:00) Australian Eastern Standard Time - Brisbane" => "Australia/Brisbane",
|
394 |
-
"(GMT+10:00) Australian Eastern Standard Time - Lindeman" => "Australia/Lindeman",
|
395 |
-
"(GMT+10:00) Chamorro Standard Time" => "Pacific/Guam",
|
396 |
-
"(GMT+10:00) Chuuk Time" => "Pacific/Chuuk",
|
397 |
-
"(GMT+10:00) Dumont-d�Urville Time" => "Antarctica/DumontDUrville",
|
398 |
-
"(GMT+10:00) Eastern Australia Time - Currie" => "Australia/Currie",
|
399 |
-
"(GMT+10:00) Eastern Australia Time - Hobart" => "Australia/Hobart",
|
400 |
-
"(GMT+10:00) Eastern Australia Time - Melbourne" => "Australia/Melbourne",
|
401 |
-
"(GMT+10:00) Eastern Australia Time - Sydney" => "Australia/Sydney",
|
402 |
-
"(GMT+10:00) Papua New Guinea Time" => "Pacific/Port_Moresby",
|
403 |
-
"(GMT+10:00) Vladivostok Standard Time - Ust-Nera" => "Asia/Ust-Nera",
|
404 |
-
"(GMT+10:00) Vladivostok Standard Time - Vladivostok" => "Asia/Vladivostok",
|
405 |
-
"(GMT+10:30) Lord Howe Time" => "Australia/Lord_Howe",
|
406 |
-
"(GMT+11:00) Bougainville Time" => "Pacific/Bougainville",
|
407 |
-
"(GMT+11:00) Kosrae Time" => "Pacific/Kosrae",
|
408 |
-
"(GMT+11:00) Macquarie Island Time" => "Antarctica/Macquarie",
|
409 |
-
"(GMT+11:00) Magadan Standard Time" => "Asia/Magadan",
|
410 |
-
"(GMT+11:00) New Caledonia Standard Time" => "Pacific/Noumea",
|
411 |
-
"(GMT+11:00) Norfolk Island Time" => "Pacific/Norfolk",
|
412 |
-
"(GMT+11:00) Ponape Time" => "Pacific/Pohnpei",
|
413 |
-
"(GMT+11:00) Sakhalin Standard Time" => "Asia/Sakhalin",
|
414 |
-
"(GMT+11:00) Solomon Islands Time" => "Pacific/Guadalcanal",
|
415 |
-
"(GMT+11:00) Srednekolymsk Time" => "Asia/Srednekolymsk",
|
416 |
-
"(GMT+11:00) Vanuatu Standard Time" => "Pacific/Efate",
|
417 |
-
"(GMT+12:00) Anadyr Standard Time" => "Asia/Anadyr",
|
418 |
-
"(GMT+12:00) Fiji Time" => "Pacific/Fiji",
|
419 |
-
"(GMT+12:00) Gilbert Islands Time" => "Pacific/Tarawa",
|
420 |
-
"(GMT+12:00) Marshall Islands Time - Kwajalein" => "Pacific/Kwajalein",
|
421 |
-
"(GMT+12:00) Marshall Islands Time - Majuro" => "Pacific/Majuro",
|
422 |
-
"(GMT+12:00) Nauru Time" => "Pacific/Nauru",
|
423 |
-
"(GMT+12:00) New Zealand Time" => "Pacific/Auckland",
|
424 |
-
"(GMT+12:00) Petropavlovsk-Kamchatski Standard Time" => "Asia/Kamchatka",
|
425 |
-
"(GMT+12:00) Tuvalu Time" => "Pacific/Funafuti",
|
426 |
-
"(GMT+12:00) Wake Island Time" => "Pacific/Wake",
|
427 |
-
"(GMT+12:00) Wallis & Futuna Time" => "Pacific/Wallis",
|
428 |
-
"(GMT+12:45) Chatham Time" => "Pacific/Chatham",
|
429 |
-
"(GMT+13:00) Apia Time" => "Pacific/Apia",
|
430 |
-
"(GMT+13:00) Phoenix Islands Time" => "Pacific/Enderbury",
|
431 |
-
"(GMT+13:00) Tokelau Time" => "Pacific/Fakaofo",
|
432 |
-
"(GMT+13:00) Tonga Standard Time" => "Pacific/Tongatapu",
|
433 |
-
"(GMT+14:00) Line Islands Time" => "Pacific/Kiritimati"
|
434 |
-
);
|
435 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
miniorange_2_factor_settings.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: miniOrange 2 Factor Authentication
|
4 |
* Plugin URI: https://miniorange.com
|
5 |
* Description: This TFA plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
|
6 |
-
* Version: 5.
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* Text Domain: miniorange-2-factor-authentication
|
@@ -14,9 +14,8 @@
|
|
14 |
require dirname(__FILE__).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'email-IPaddress.php';
|
15 |
|
16 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
17 |
-
|
18 |
-
define( '
|
19 |
-
define('MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
|
20 |
define( 'MO2F_TEST_MODE', false );
|
21 |
define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
|
22 |
|
@@ -37,7 +36,7 @@
|
|
37 |
add_action( 'admin_init' , array( $this, 'miniorange_reset_save_settings' ) );
|
38 |
add_filter('manage_users_columns' , array( $this, 'mo2f_mapped_email_column' ) );
|
39 |
add_action('manage_users_custom_column' , array( $this, 'mo2f_mapped_email_column_content'), 10, 3 );
|
40 |
-
|
41 |
$actions = add_filter('user_row_actions' , array( $this, 'miniorange_reset_users' ),10 , 2 );
|
42 |
add_action( 'admin_footer' , array( $this, 'feedback_request' ) );
|
43 |
add_action('admin_notices',array( $this, 'mo_wpns_malware_notices' ) );
|
@@ -51,6 +50,7 @@
|
|
51 |
$customShort = new TwoFACustomRegFormShortcode();
|
52 |
add_action('admin_init',array( $this, 'mo2f_enable_register_shortcode' ));
|
53 |
add_action('admin_init',array( $customShort, 'mo_enqueue_shortcode' ));
|
|
|
54 |
add_shortcode('mo2f_enable_register',array($this,'mo2f_enable_register_shortcode'));
|
55 |
if(defined("DIGIMEMBER_DIR"))
|
56 |
{
|
@@ -59,6 +59,44 @@
|
|
59 |
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
public function mo2f_enable_register_shortcode()
|
63 |
{
|
64 |
$submitSelector = get_site_option('mo2f_custom_submit_selector');
|
@@ -122,7 +160,7 @@
|
|
122 |
wp_enqueue_style( 'wp-pointer' );
|
123 |
wp_enqueue_script( 'wp-pointer' );
|
124 |
wp_enqueue_script( 'utils' );
|
125 |
-
wp_enqueue_style( 'mo_wpns_admin_plugins_page_style', plugins_url( '/includes/css/style_settings.css?ver=
|
126 |
|
127 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_form.php';;
|
128 |
|
@@ -199,24 +237,19 @@
|
|
199 |
|
200 |
if( $is_2fa_enabled){
|
201 |
$menu_slug = 'mo_2fa_two_fa';
|
|
|
202 |
}
|
203 |
else{
|
204 |
$menu_slug = 'mo_2fa_dashboard';
|
205 |
}
|
206 |
-
|
207 |
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
208 |
{
|
209 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Dashboard' ,'administrator','mo_2fa_dashboard' , array( $this, 'mo_wpns'),1);
|
210 |
}
|
211 |
-
|
212 |
-
if(
|
213 |
-
{
|
214 |
-
if( $is_2fa_enabled){
|
215 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Two Factor' ,'read', 'mo_2fa_two_fa' , array( $this, 'mo_wpns'),1);
|
216 |
-
}
|
217 |
-
}
|
218 |
-
else{
|
219 |
-
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Two Factor' ,'administrator','mo_2fa_two_fa' , array( $this, 'mo_wpns'),2);
|
220 |
}
|
221 |
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
222 |
{
|
@@ -231,12 +264,16 @@
|
|
231 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Account' ,'administrator','mo_2fa_account' , array( $this, 'mo_wpns'),11);
|
232 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Addons' ,'administrator','mo_2fa_addons' , array( $this, 'mo_wpns'),10);
|
233 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Upgrade' ,'administrator','mo_2fa_upgrade' , array( $this, 'mo_wpns'),12);
|
234 |
-
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Request for Demo' ,'administrator','mo_2fa_request_demo' , array( $this, 'mo_wpns'),13);
|
235 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Notifications' ,'administrator','mo_2fa_notifications' , array( $this, 'mo_wpns'),8);
|
236 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Offers' ,'administrator','mo_2fa_request_offer' , array( $this, 'mo_wpns'),14);
|
237 |
$mo2fa_hook_page = add_users_page ('Reset 2nd Factor', null , 'manage_options', 'reset', array( $this, 'mo_reset_2fa_for_users_by_admin' ),66);
|
238 |
-
|
239 |
-
|
|
|
|
|
|
|
|
|
|
|
240 |
}
|
241 |
|
242 |
|
@@ -277,12 +314,15 @@
|
|
277 |
add_action( 'mo_auth_show_success_message', array($this, 'mo_auth_show_success_message'), 10, 1 );
|
278 |
add_action( 'mo_auth_show_error_message', array($this, 'mo_auth_show_error_message'), 10, 1 );
|
279 |
add_option( 'mo2f_onprem_admin' , $userid );
|
|
|
280 |
add_option( 'mo_wpns_last_scan_time', time());
|
281 |
update_site_option('mo2f_mail_notify_new_release','on');
|
282 |
add_site_option('mo2f_mail_notify','on');
|
283 |
if(get_site_option('mo2f_activated_time') == null){
|
284 |
add_site_option('mo2f_activated_time', time());
|
285 |
}
|
|
|
|
|
286 |
update_site_option('mo2f_plugin_redirect', true);
|
287 |
if (!wp_next_scheduled( 'mo2f_realtime_ip_block_free_hook')) {
|
288 |
wp_schedule_event( time(), 'mo2f_realtime_ipblock_free', 'mo2f_realtime_ip_block_free_hook' );
|
@@ -290,12 +330,19 @@
|
|
290 |
if(is_multisite()){
|
291 |
add_site_option('mo2fa_superadmin',1);
|
292 |
}
|
|
|
293 |
}
|
294 |
|
295 |
function mo_wpns_deactivate()
|
296 |
{
|
297 |
update_option('mo2f_activate_plugin', 1);
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
$two_fa_settings = new Miniorange_Authentication();
|
300 |
$two_fa_settings->mo_auth_deactivate();
|
301 |
$timestamp = wp_next_scheduled( 'mo2f_realtime_ip_block_free_hook' );
|
@@ -312,7 +359,6 @@
|
|
312 |
wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
|
313 |
wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
|
314 |
wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
|
315 |
-
wp_enqueue_style( 'mo_2fa_time_settings_style' , plugins_url('includes/css/datetime-style-settings.min.css', __FILE__));
|
316 |
$file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
|
317 |
|
318 |
$tour_started=get_option('mo2f_tour_started',0);
|
@@ -351,9 +397,7 @@
|
|
351 |
wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
|
352 |
wp_enqueue_script('jquery-ui-core');
|
353 |
wp_enqueue_script('jquery-ui-autocomplete');
|
354 |
-
wp_enqueue_script('jquery-ui-datepicker');
|
355 |
wp_enqueue_script('mo_2fa_select2_script', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
|
356 |
-
wp_enqueue_script('mo_2fa_timepicker_script', 'https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js');
|
357 |
}
|
358 |
}
|
359 |
|
@@ -476,9 +520,9 @@
|
|
476 |
require('handler/security_features.php');
|
477 |
require('handler/feedback_form.php');
|
478 |
require('handler/recaptcha.php');
|
479 |
-
require('handler/login.php');
|
480 |
require('handler/twofa/setup_twofa.php');
|
481 |
require('handler/twofa/two_fa_settings.php');
|
|
|
482 |
require('handler/twofa/two_fa_utility.php');
|
483 |
require('handler/twofa/two_fa_constants.php');
|
484 |
require('handler/registration.php');
|
@@ -496,7 +540,7 @@
|
|
496 |
require('controllers/malware_scanner/malware_scan_ajax.php');
|
497 |
require('controllers/duo_authenticator/duo_authenticator_ajax.php');
|
498 |
require('controllers/backup/backup_ajax.php');
|
499 |
-
|
500 |
require('controllers/twofa/two_factor_ajax.php');
|
501 |
require('controllers/dashboard_ajax.php');
|
502 |
require('handler/malware_scanner/malware_scanner_cron.php');
|
@@ -532,26 +576,29 @@
|
|
532 |
function mo_reset_2fa_for_users_by_admin(){
|
533 |
$nonce = wp_create_nonce('ResetTwoFnonce');
|
534 |
if(isset($_GET['action']) && $_GET['action']== 'reset_edit'){
|
535 |
-
$user_id = $_GET['user'];
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
|
|
|
|
542 |
|
543 |
<p>You have specified this user for reset:</p>
|
544 |
|
545 |
<ul>
|
546 |
<li>ID #<?php echo $user_info->ID; ?>: <?php echo $user_info->user_login; ?></li>
|
547 |
</ul>
|
548 |
-
<input type="hidden" name="userid" value="<?php echo $user_id; ?>">
|
549 |
<input type="hidden" name="miniorange_reset_2fa_option" value="mo_reset_2fa">
|
550 |
<input type="hidden" name="nonce" value="<?php echo $nonce;?>">
|
551 |
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Confirm Reset" ></p>
|
552 |
</div>
|
553 |
</form>
|
554 |
<?php
|
|
|
555 |
}
|
556 |
}
|
557 |
|
@@ -579,13 +626,21 @@
|
|
579 |
}
|
580 |
}
|
581 |
}
|
|
|
|
|
582 |
}
|
583 |
|
584 |
function mo2f_mapped_email_column_content($value, $column_name, $user_id) {
|
585 |
global $Mo2fdbQueries;
|
586 |
$currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user_id );
|
587 |
-
|
588 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
589 |
if ( 'current_method' == $column_name )
|
590 |
return $currentMethod;
|
591 |
return $value;
|
@@ -620,7 +675,7 @@
|
|
620 |
{
|
621 |
|
622 |
|
623 |
-
$subject = '
|
624 |
$messages = mail_tem();
|
625 |
$headers = array('Content-Type: text/html; charset=UTF-8');
|
626 |
$email = get_option('admin_email');
|
3 |
* Plugin Name: miniOrange 2 Factor Authentication
|
4 |
* Plugin URI: https://miniorange.com
|
5 |
* Description: This TFA plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
|
6 |
+
* Version: 5.5.1
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* Text Domain: miniorange-2-factor-authentication
|
14 |
require dirname(__FILE__).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'email-IPaddress.php';
|
15 |
|
16 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
17 |
+
define( 'MO2F_VERSION', '5.5.1' );
|
18 |
+
define( 'MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
|
|
|
19 |
define( 'MO2F_TEST_MODE', false );
|
20 |
define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
|
21 |
|
36 |
add_action( 'admin_init' , array( $this, 'miniorange_reset_save_settings' ) );
|
37 |
add_filter('manage_users_columns' , array( $this, 'mo2f_mapped_email_column' ) );
|
38 |
add_action('manage_users_custom_column' , array( $this, 'mo2f_mapped_email_column_content'), 10, 3 );
|
39 |
+
add_action('admin_notices' , array( $this, 'mo2f_notices' ) );
|
40 |
$actions = add_filter('user_row_actions' , array( $this, 'miniorange_reset_users' ),10 , 2 );
|
41 |
add_action( 'admin_footer' , array( $this, 'feedback_request' ) );
|
42 |
add_action('admin_notices',array( $this, 'mo_wpns_malware_notices' ) );
|
50 |
$customShort = new TwoFACustomRegFormShortcode();
|
51 |
add_action('admin_init',array( $this, 'mo2f_enable_register_shortcode' ));
|
52 |
add_action('admin_init',array( $customShort, 'mo_enqueue_shortcode' ));
|
53 |
+
add_action( 'elementor/init', array($this, 'mo2fa_login_elementor_note'));
|
54 |
add_shortcode('mo2f_enable_register',array($this,'mo2f_enable_register_shortcode'));
|
55 |
if(defined("DIGIMEMBER_DIR"))
|
56 |
{
|
59 |
|
60 |
}
|
61 |
|
62 |
+
function mo2f_notices(){
|
63 |
+
|
64 |
+
global $Mo2fdbQueries, $mo2f_db_queries;
|
65 |
+
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', wp_get_current_user()->ID ) == 'SUCCESS' ? true : false;
|
66 |
+
if(strpos($_SERVER['REQUEST_URI'], 'mo_2fa_upgrade'))
|
67 |
+
if(!get_site_option('mo2f_trial_query_sent') && !get_site_option('mo2f_donot_show_trial_notice_always') && current_user_can('administrator')){
|
68 |
+
|
69 |
+
if(!$is_customer_registered)
|
70 |
+
echo MoWpnsMessages::showMessage('FREE_TRIAL_MESSAGE_ACCOUNT_PAGE');
|
71 |
+
else
|
72 |
+
echo MoWpnsMessages::showMessage('FREE_TRIAL_MESSAGE_TRIAL_PAGE');
|
73 |
+
}
|
74 |
+
|
75 |
+
}
|
76 |
+
function mo2f_get_dismiss_days($option_name){
|
77 |
+
$one_day = 60*60*24;
|
78 |
+
$days= (time()-get_site_option($option_name))/$one_day;
|
79 |
+
return floor($days);
|
80 |
+
}
|
81 |
+
|
82 |
+
function mo2fa_login_elementor_note()
|
83 |
+
{
|
84 |
+
global $mainDir;
|
85 |
+
|
86 |
+
if(!is_user_logged_in())
|
87 |
+
{
|
88 |
+
wp_enqueue_script( 'jquery' );
|
89 |
+
wp_enqueue_script( 'mo2fa_elementor_script', $mainDir. 'includes/js/mo2fa_elementor.js' );
|
90 |
+
|
91 |
+
wp_localize_script( 'mo2fa_elementor_script', 'my_ajax_object',
|
92 |
+
array( 'ajax_url' => get_site_url() .'/login/' ,
|
93 |
+
'nonce' => wp_create_nonce( 'miniorange-2-factor-login-nonce' ),
|
94 |
+
'mo2f_login_option' => MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option'),
|
95 |
+
'mo2f_enable_login_with_2nd_factor' => get_option( 'mo2f_enable_login_with_2nd_factor' )) );
|
96 |
+
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
public function mo2f_enable_register_shortcode()
|
101 |
{
|
102 |
$submitSelector = get_site_option('mo2f_custom_submit_selector');
|
160 |
wp_enqueue_style( 'wp-pointer' );
|
161 |
wp_enqueue_script( 'wp-pointer' );
|
162 |
wp_enqueue_script( 'utils' );
|
163 |
+
wp_enqueue_style( 'mo_wpns_admin_plugins_page_style', plugins_url( '/includes/css/style_settings.css?ver=5.5.1', __FILE__ ) );
|
164 |
|
165 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_form.php';;
|
166 |
|
237 |
|
238 |
if( $is_2fa_enabled){
|
239 |
$menu_slug = 'mo_2fa_two_fa';
|
240 |
+
add_menu_page ( 'miniOrange 2-Factor' , 'miniOrange 2-Factor' , 'read', $menu_slug , array( $this, 'mo_wpns'), plugin_dir_url(__FILE__) . 'includes/images/miniorange_icon.png' );
|
241 |
}
|
242 |
else{
|
243 |
$menu_slug = 'mo_2fa_dashboard';
|
244 |
}
|
245 |
+
|
246 |
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
247 |
{
|
248 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Dashboard' ,'administrator','mo_2fa_dashboard' , array( $this, 'mo_wpns'),1);
|
249 |
}
|
250 |
+
|
251 |
+
if( $is_2fa_enabled){
|
|
|
|
|
252 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Two Factor' ,'read', 'mo_2fa_two_fa' , array( $this, 'mo_wpns'),1);
|
|
|
|
|
|
|
|
|
253 |
}
|
254 |
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
255 |
{
|
264 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Account' ,'administrator','mo_2fa_account' , array( $this, 'mo_wpns'),11);
|
265 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Addons' ,'administrator','mo_2fa_addons' , array( $this, 'mo_wpns'),10);
|
266 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Upgrade' ,'administrator','mo_2fa_upgrade' , array( $this, 'mo_wpns'),12);
|
|
|
267 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Notifications' ,'administrator','mo_2fa_notifications' , array( $this, 'mo_wpns'),8);
|
268 |
add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Offers' ,'administrator','mo_2fa_request_offer' , array( $this, 'mo_wpns'),14);
|
269 |
$mo2fa_hook_page = add_users_page ('Reset 2nd Factor', null , 'manage_options', 'reset', array( $this, 'mo_reset_2fa_for_users_by_admin' ),66);
|
270 |
+
|
271 |
+
global $Mo2fdbQueries;
|
272 |
+
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', wp_get_current_user()->ID ) == 'SUCCESS' ? true : false;
|
273 |
+
if(!$is_customer_registered)
|
274 |
+
add_submenu_page($menu_slug, 'miniOrange 2-Factor', 'Request Trial' ,'administrator','mo_2fa_account', array( $this, 'mo_wpns'), 20);
|
275 |
+
else
|
276 |
+
add_submenu_page($menu_slug, 'miniOrange 2-Factor', 'Request Trial' ,'administrator','mo2f_trial', array( $this, 'mo_wpns'), 20);
|
277 |
}
|
278 |
|
279 |
|
314 |
add_action( 'mo_auth_show_success_message', array($this, 'mo_auth_show_success_message'), 10, 1 );
|
315 |
add_action( 'mo_auth_show_error_message', array($this, 'mo_auth_show_error_message'), 10, 1 );
|
316 |
add_option( 'mo2f_onprem_admin' , $userid );
|
317 |
+
add_option('mo2f_nonce_enable_configured_methods' ,true);
|
318 |
add_option( 'mo_wpns_last_scan_time', time());
|
319 |
update_site_option('mo2f_mail_notify_new_release','on');
|
320 |
add_site_option('mo2f_mail_notify','on');
|
321 |
if(get_site_option('mo2f_activated_time') == null){
|
322 |
add_site_option('mo2f_activated_time', time());
|
323 |
}
|
324 |
+
$NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
|
325 |
+
if(!$NoOf2faUsers)
|
326 |
update_site_option('mo2f_plugin_redirect', true);
|
327 |
if (!wp_next_scheduled( 'mo2f_realtime_ip_block_free_hook')) {
|
328 |
wp_schedule_event( time(), 'mo2f_realtime_ipblock_free', 'mo2f_realtime_ip_block_free_hook' );
|
330 |
if(is_multisite()){
|
331 |
add_site_option('mo2fa_superadmin',1);
|
332 |
}
|
333 |
+
MO2f_Utility::mo2f_debug_file('Plugin activated');
|
334 |
}
|
335 |
|
336 |
function mo_wpns_deactivate()
|
337 |
{
|
338 |
update_option('mo2f_activate_plugin', 1);
|
339 |
|
340 |
+
if(!MO2F_IS_ONPREM)
|
341 |
+
{
|
342 |
+
delete_option('mo2f_customerKey');
|
343 |
+
delete_option('mo2f_api_key');
|
344 |
+
delete_option('mo2f_customer_token');
|
345 |
+
}
|
346 |
$two_fa_settings = new Miniorange_Authentication();
|
347 |
$two_fa_settings->mo_auth_deactivate();
|
348 |
$timestamp = wp_next_scheduled( 'mo2f_realtime_ip_block_free_hook' );
|
359 |
wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
|
360 |
wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
|
361 |
wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
|
|
|
362 |
$file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
|
363 |
|
364 |
$tour_started=get_option('mo2f_tour_started',0);
|
397 |
wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
|
398 |
wp_enqueue_script('jquery-ui-core');
|
399 |
wp_enqueue_script('jquery-ui-autocomplete');
|
|
|
400 |
wp_enqueue_script('mo_2fa_select2_script', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
|
|
|
401 |
}
|
402 |
}
|
403 |
|
520 |
require('handler/security_features.php');
|
521 |
require('handler/feedback_form.php');
|
522 |
require('handler/recaptcha.php');
|
|
|
523 |
require('handler/twofa/setup_twofa.php');
|
524 |
require('handler/twofa/two_fa_settings.php');
|
525 |
+
require('handler/login.php');
|
526 |
require('handler/twofa/two_fa_utility.php');
|
527 |
require('handler/twofa/two_fa_constants.php');
|
528 |
require('handler/registration.php');
|
540 |
require('controllers/malware_scanner/malware_scan_ajax.php');
|
541 |
require('controllers/duo_authenticator/duo_authenticator_ajax.php');
|
542 |
require('controllers/backup/backup_ajax.php');
|
543 |
+
|
544 |
require('controllers/twofa/two_factor_ajax.php');
|
545 |
require('controllers/dashboard_ajax.php');
|
546 |
require('handler/malware_scanner/malware_scanner_cron.php');
|
576 |
function mo_reset_2fa_for_users_by_admin(){
|
577 |
$nonce = wp_create_nonce('ResetTwoFnonce');
|
578 |
if(isset($_GET['action']) && $_GET['action']== 'reset_edit'){
|
579 |
+
$user_id = sanitize_text_field($_GET['user']);
|
580 |
+
if(is_numeric($user_id))
|
581 |
+
{
|
582 |
+
$user_info = get_userdata($user_id);
|
583 |
+
?>
|
584 |
+
<form method="post" name="reset2fa" id="reset2fa" action="<?php echo esc_url('users.php'); ?>">
|
585 |
+
|
586 |
+
<div class="wrap">
|
587 |
+
<h1>Reset 2nd Factor</h1>
|
588 |
|
589 |
<p>You have specified this user for reset:</p>
|
590 |
|
591 |
<ul>
|
592 |
<li>ID #<?php echo $user_info->ID; ?>: <?php echo $user_info->user_login; ?></li>
|
593 |
</ul>
|
594 |
+
<input type="hidden" name="userid" value="<?php echo esc_attr($user_id); ?>">
|
595 |
<input type="hidden" name="miniorange_reset_2fa_option" value="mo_reset_2fa">
|
596 |
<input type="hidden" name="nonce" value="<?php echo $nonce;?>">
|
597 |
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Confirm Reset" ></p>
|
598 |
</div>
|
599 |
</form>
|
600 |
<?php
|
601 |
+
}
|
602 |
}
|
603 |
}
|
604 |
|
626 |
}
|
627 |
}
|
628 |
}
|
629 |
+
if(isset($_POST['mo2f_dismiss_trial']) && sanitize_text_field($_POST['mo2f_dismiss_trial'] == 'mo2f_dismiss_trial'))
|
630 |
+
update_site_option('mo2f_donot_show_trial_notice_always', 1);
|
631 |
}
|
632 |
|
633 |
function mo2f_mapped_email_column_content($value, $column_name, $user_id) {
|
634 |
global $Mo2fdbQueries;
|
635 |
$currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user_id );
|
636 |
+
if(!$currentMethod){
|
637 |
+
$check_if_skipped = $Mo2fdbQueries->get_user_detail('mo2f_2factor_enable_2fa_byusers', $user_id);
|
638 |
+
if($check_if_skipped === '0'){
|
639 |
+
$currentMethod = 'Two-Factor skipped by user';
|
640 |
+
}else{
|
641 |
+
$currentMethod = 'Not Registered for 2FA';
|
642 |
+
}
|
643 |
+
}
|
644 |
if ( 'current_method' == $column_name )
|
645 |
return $currentMethod;
|
646 |
return $value;
|
675 |
{
|
676 |
|
677 |
|
678 |
+
$subject = 'miniOrange 2FA V'. MO2F_VERSION.' | What\'s New?';
|
679 |
$messages = mail_tem();
|
680 |
$headers = array('Content-Type: text/html; charset=UTF-8');
|
681 |
$email = get_option('admin_email');
|
readme.txt
CHANGED
@@ -1,463 +1,385 @@
|
|
1 |
-
|
2 |
|
3 |
-
Contributors: twofactor,
|
4 |
-
Tags:
|
5 |
Donate link: https://miniorange.com/
|
6 |
Requires at least: 3.0.1
|
7 |
-
Tested up to: 5.
|
8 |
Requires PHP: 5.3.0
|
9 |
-
Stable tag: 5.
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
13 |
-
|
14 |
|
15 |
== Description ==
|
16 |
|
17 |
-
**Google Authenticator
|
18 |
|
19 |
-
You can
|
20 |
|
21 |
[youtube https://www.youtube.com/watch?v=BS6tY-Goa1Q]
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
-
= User Identity Verification or
|
25 |
-
Login and Registration
|
26 |
-
|
27 |
-
= **Google Authenticator** and other 2 Factor ( 2FA, Two Factor Authentication ) sync on multiple websites with the same OTP =
|
28 |
-
You would not need to configure **Google Authenticator** and other Two Factor Authentication ( 2FA ) methods from second site onword. Just login with miniOrange account and your 2FA will automatically get set. This is available for Google Authenticator, Duo Authenticator, Microsoft Authenticator, Securty Questions, LastPass, Authy, miniOrange methods, OTP over SMS, OTP over Email. It is supported only if you are using our cloud services of 2 Factor.
|
29 |
-
|
30 |
-
== Plugin Integrations and Support for all methods of two factor authentication ( 2fa ) like **Google Authenticator** ==
|
31 |
-
* [Woocommerce](https://wordpress.org/plugins/woocommerce/) (Login Woocommerce using Google Authenticator - Multi Factor Authentication (2FA))
|
32 |
-
* [BuddyPress form](https://wordpress.org/plugins/buddypress/) (Login BuddyPress using Google Authenticator - Multi Factor Authentication (2FA))
|
33 |
-
* [bbpress form](https://wordpress.org/plugins/bbpress/) (Login bbpress using Google Authenticator - Two Factor Authentication (2FA))
|
34 |
-
* [Digimember](https://digimember.com/) (Login Digimember using Google Authenticator - Two Factor Authentication (2FA))
|
35 |
-
* [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) (Login Paid Memberships Pro using Google Authenticator - Two Factor Authentication (2FA))
|
36 |
-
* [Memberpress Pro](https://memberpress.com/) (Login Memberpress Pro using Google Authenticator - Two Factor Authentication (2FA))
|
37 |
-
* [Ultimate Member – User Profile & Membership Form](https://wordpress.org/plugins/ultimate-member/) (Login Ultimate Member – User Profile & Membership using Google Authenticator - Two Factor Authentication (2FA))
|
38 |
-
* [LearnDash](https://www.learndash.com/) (Login LearnDash using Google Authenticator - Two Factor Authentication (2FA))
|
39 |
-
* [LearnPress](https://wordpress.org/plugins/learnpress/) (Login LearnPress using Google Authenticator - Two Factor Authentication (2FA))
|
40 |
-
* [LifterLMS](https://wordpress.org/plugins/lifterlms/) (Login LifterLMS using Google Authenticator - Two Factor Authentication (2FA))
|
41 |
-
* [Dokan](https://wordpress.org/plugins/dokan-lite/) (Login Dokan using Google Authenticator - Multi Factor Authentication (2FA))
|
42 |
-
* And many more
|
43 |
-
|
44 |
-
== WordPress login and registration forms support and integration for all methods of two factor authentication ( 2fa ) like **Google Authenticator** ==
|
45 |
-
* [Restrict Content Pro Form](https://wordpress.org/plugins/restrict-content/) (Register and Login Restrict Content Pro using Google Authenticator - Two Factor Authentication (2FA))
|
46 |
-
* [My theme Login Form](https://wordpress.org/plugins/theme-my-login/) (Login My theme Login using Google Authenticator - Two Factor Authentication (2FA))
|
47 |
-
* [Login with ajax Form](https://wordpress.org/plugins/login-with-ajax/) (2fa (Two factor authentication | Google authenticator ) for Login with ajax login form)
|
48 |
-
* [Elementor Login Form](https://wordpress.org/plugins/elementor/) (2fa (Two factor authentication | Google authenticator ) for Elementor login form)
|
49 |
-
* [WooCommerce Login Form](https://wordpress.org/plugins/woocommerce/) (2fa (Two factor authentication | Google authenticator ) for WooCommerce login form)
|
50 |
-
* [Paid membership Pro Form](https://wordpress.org/plugins/paid-memberships-pro/) (2fa (Two factor authentication | Google authenticator ) compatible with paid membership pro)
|
51 |
-
* [User Registration – Custom Registration Form](https://wordpress.org/plugins/bbpress/) (Register and Login User Registration – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
|
52 |
-
* [Custom Login Page Customizer Form](https://wordpress.org/plugins/loginpress/) (Login Custom Login Page Customizer using Google Authenticator - Two Factor Authentication (2FA))
|
53 |
-
* [Admin Custom Login Form](https://wordpress.org/plugins/admin-custom-login/) (Login Admin Custom Login using Google Authenticator - Two Factor Authentication (2FA))
|
54 |
-
* [RegistrationMagic – Custom Registration Forms](https://wordpress.org/plugins/custom-registration-form-builder-with-submission-manager/) (Register and Login RegistrationMagic – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
|
55 |
-
* And many more
|
56 |
-
|
57 |
-
= Third Party Custom SMS Gateway for OTP Over SMS (two factor authentication) =
|
58 |
-
Premium plugin supports any third party custom SMS Gateway. If you don't have your own SMS gateway you can use miniOrange gateway. Send SMS all over the world.
|
59 |
-
* Some Famous Gateways Supported:
|
60 |
-
* Twilio : [Twilio](https://www.twilio.com/)
|
61 |
-
* Clickatell : [Clickatell](https://www.clickatell.com/)
|
62 |
-
* ClickSend : [ClickSend](https://www.clicksend.com/)
|
63 |
-
* SendGrid : [SendGrid](https://sendgrid.com/)
|
64 |
-
* Plivo : [Plivo](https://www.plivo.com/)
|
65 |
-
* GatewayApi : [GatewayApi](https://gatewayapi.com/)
|
66 |
-
|
67 |
-
Others not listed gateway can be tested on our site, Test your Gateway: [Custom Gateway](https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig)
|
68 |
-
|
69 |
-
= All Registartion Forms Supported for OTP verification and two factor authentication =
|
70 |
-
Google Authenticator - Two factor authentication( 2 Factor ) is available for all Forms. You can enable OTP Verification on all Registration forms and Google Authenticator, Security Questions, Prevent Account Sharing, Push Notifications on all the Login forms to verify users. Use this shortcode for Registration([mo2f_enable_register]). Settings in <b>Two Factor -> Registration Forms</b>.
|
71 |
-
|
72 |
-
|
73 |
-
= [google authenticator](https://plugins.miniorange.com/2-factor-authentication-for-wordpress) ( 2FA ) FREE Plugin Features =
|
74 |
-
* Simplified & easy user interface to setup Google Authenticator and other Two Factor Authentication ( 2FA ) methods.
|
75 |
-
* [Google Authenticator](https://plugins.miniorange.com/2-factor-authentication-for-wordpress) - Two Factor Authentication (2FA) for **3 User** forever FREE!
|
76 |
-
* **Variety of Two Factor Authentication Methods:** Any App supporting TOTP algorithm like Google Authenticator, Authy Authenticator, LastPass Authenticator, Microsoft Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) are supported in the plugin for multi factor authentication.
|
77 |
-
* Includes Language Translation Support. Supports a wide variety of languages for all methods of 2 factor like Google Authenticator
|
78 |
-
* Passwordless login or login with phone number, supported for Google Authenticator and other 2 Factor authentication methods.
|
79 |
-
* This plugin Supports standard TOTP + HOTP protocols for Authentication Methods. Any TOTP protocol based authenticator app can be configured using Google Authenticator option in the plugin for two factor authentication.
|
80 |
-
* Two Factor Authentication (2FA) allows authentication on login page itself for Google Authenticator & miniOrange Soft Token.
|
81 |
-
* Brute force attack prevention & IP Blocking along with two factor authentication.
|
82 |
-
* User login Monitorning with and without two-factor authentication(2FA)
|
83 |
-
* RCP Login and Registration Suppport with all login 2 factor methods like Google Authenticator, OTP Over SMS, QR code Authentication, login with Email for Login.
|
84 |
-
* OTP Verification of Ulimate Member Registartion form with methods like OTP Over SMS and Email, QR code Authentication.
|
85 |
-
* Recovery codes in case you are locked out for all Two Factor Authentication (TFA) methods like Google Authenticator, SMS verification.
|
86 |
-
* Supports multi factor authentication for methods such as Google authenticator, OTP over Email, OTP over SMS, QR code authentication and many more.
|
87 |
-
* Mobile verification - two step verification using user's mobile phone with authentication method like google authenticator, QR code authentication, etc.
|
88 |
-
|
89 |
-
= google authenticator ( 2FA ) Standard Lite Plugin Features =
|
90 |
-
|
91 |
-
* Google Authenticator - Two Factor Authentication ( 2FA ) for all users and all user roles *( Site-based pricing )*
|
92 |
-
* **Available Two Factor Authentication Methods:**Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, Security Questions(KBA), OTP Over Email, OTP Over SMS, Email Verification. *( SMS credits need to be purchased as per the need)*
|
93 |
-
* Includes language Translation Support. Supports wide variety of languages for two factor auhthentication.
|
94 |
-
* **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
|
95 |
-
* **Unlimitted Email transactions:** Unlimitted Email transactions with your SMTP server.
|
96 |
-
* **Backup Method:** KBA(Security Questions) For all TFA methods like Google Authenticator, etc.
|
97 |
-
* Multisite compatible for all WordPress 2FA methods.
|
98 |
-
* User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
|
99 |
-
* Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
|
100 |
-
|
101 |
-
= google authenticator ( 2FA ) Premium Lite Plugin Features =
|
102 |
-
|
103 |
-
* Google Authenticator - Two Factor Authentication (2FA) for all users and all user roles *( Site-based pricing )*
|
104 |
-
* **Available Two Factor Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, Security Questions(KBA), OTP Over Email, OTP Over SMS, Email Verification, Mobile Verification. *( SMS credits need to be purchased as per the need)*
|
105 |
-
* Includes language Translation Support. Supports wide variety of languages for two factor auhthentication.
|
106 |
-
* **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
|
107 |
-
* **Unlimitted Email transactions:** Unlimitted Email transactions with your SMTP server.
|
108 |
-
* **Backup Method:** KBA(Security Questions) , OTP Over Email, Backup codes For all Two Factor Authentication ( TFA ) methods like Google Authenticator, etc.
|
109 |
-
* Multisite compatible for all WordPress 2FA methods.
|
110 |
-
* Two Factor Authentication ( TFA ) for Custom login forms like User Pro, login with ajax, Theme my login, etc with all authentication methods like Google Authenticator, mobile Verification with SMS, etc.
|
111 |
-
* User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
|
112 |
-
* Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
|
113 |
-
* Role based 2 Factor - Different 2 factor like Google Authenticator, OTP Over SMS and Email, Authy Authenticator, etc based on your role [Guide](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)*
|
114 |
-
* Force Two factor for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
|
115 |
-
* Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
|
116 |
-
* Set Privacy Policy for users [Guide](https://docs.miniorange.com/documentation/privacy-policy-site)
|
117 |
-
* App Specific Password to login from mobile Apps
|
118 |
-
* Remember Device for all methods like Google Authenticator, Mobile verification with SMS, etc [Guide](https://docs.miniorange.com/documentation/remember-my-device)
|
119 |
-
* **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
|
120 |
|
|
|
|
|
121 |
|
122 |
-
= google authenticator ( 2FA ) Standard Plugin Features =
|
123 |
-
|
124 |
-
* Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
|
125 |
-
* **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification. *( SMS credits need to be purchased as per the need)*
|
126 |
-
* Includes language Translation Support. Supports wide variety of languages for two factor auhthentication.
|
127 |
-
* **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
|
128 |
-
* **Backup Method:** KBA(Security Questions)
|
129 |
-
* Multisite compatible for all WordPress 2FA methods.
|
130 |
-
* User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
|
131 |
-
* Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
|
132 |
-
|
133 |
-
= google authenticator ( 2FA ) Premium Plugin Features =
|
134 |
-
|
135 |
-
* Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
|
136 |
-
* **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token, Whatsapp based 2fa(Add-on), Telegram Based 2fa. *( SMS and Email credits need to be purchased as per the need)*
|
137 |
-
* Language Translation Support for two factor auhthentication.
|
138 |
-
* **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
|
139 |
-
* **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes [Guide](https://docs.miniorange.com/documentation/want-configure-backup-methods-users-can-configure-case-locked-site-not-able-log)
|
140 |
-
* Multisite compatible for all WordPress 2FA methods.
|
141 |
-
* Force Two factor authentication for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
|
142 |
-
* Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
|
143 |
-
* User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions), Customize acc
|
1 |
+
=== miniOrange's Google Authenticator - WordPress Two Factor Authentication (2FA , Two Factor, OTP SMS and Email) | Passwordless login ===
|
2 |
|
3 |
+
Contributors: twofactor, twofactorauthentication, hsn97,cyberlord92
|
4 |
+
Tags: google authenticator,two factor,two factor authentication, 2FA, OTP , wp 2fa, 2-factor authentication, multi factor authentication , MFA ,two step verification, TFA, mobile verification, MFA, Remember Device, OTP Over Telegram, Mobile Authentication, 2 step authentication, passwordless login, QR Code Authentication, email verification, KBA, Security Questions, login with SMS, Authy, Authy two factor , FIDO, FIDO2, Webauthn, multi factor, wordfence, IP Blocking, IP Whitelisting, SMS login, OTP Over SMS and Email, login without password, Mobile verification, password free authentication, session restriction.
|
5 |
Donate link: https://miniorange.com/
|
6 |
Requires at least: 3.0.1
|
7 |
+
Tested up to: 5.9.2
|
8 |
Requires PHP: 5.3.0
|
9 |
+
Stable tag: 5.5.1
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
13 |
+
Google Authenticator-multi Factor(WP 2FA/OTP) - Supports TOTP-based methods like Duo/Google Authenticator along with OTP Over SMS/Email & more.
|
14 |
|
15 |
== Description ==
|
16 |
|
17 |
+
**Google Authenticator - Two Factor (WP 2FA/OTP)** - Provides *secure login* to WordPress. This plugin can be configured for any **TOTP-based** methods like Duo/Microsoft/Google Authenticator. It supports OTP-based 2fa methods.
|
18 |
|
19 |
+
You can check out following video to configure google authenticator as a two factor:
|
20 |
|
21 |
[youtube https://www.youtube.com/watch?v=BS6tY-Goa1Q]
|
22 |
|
23 |
+
= Trial for Google authenticator Premium and Enterprise plugin =
|
24 |
+
We do provide 7 days trial of our Google Authenticator Premium plugins. You can test all Premium features including 2fa methods such as google authenticator, OTP Over SMS/Email.
|
25 |
+
|
26 |
+
= [Google Authenticator - Two step verification/ 2 Factor Authentication/ WP 2FA] FREE Plugin Features =
|
27 |
+
* Simplified & easy user interface to set up **Google Authenticator** and other Two-Factor Authentication ( WP 2FA/TFA/OTP ) methods.
|
28 |
+
* **3 Users** forever FREE!
|
29 |
+
* QR Code authentication, Push Notification, Soft Token and Security Questions(KBA) are supported in the plugin for multi factor authentication(WP 2FA/TFA).
|
30 |
+
* Includes Language Translation Support
|
31 |
+
* **[User Profile 2fa](https://plugins.miniorange.com/how-to-set-up-2-factor-from-wordpress-user-profile-section):** Administrators can set up Two Factor (TFA)of users via WordPress users section
|
32 |
+
* **Multi Factor Authentication(MFA):** This feature can be used to invoke any two factor method on login among multiple methods which were configured. You can configure multiple 2fa methods that can be used as a **backup 2fa method**
|
33 |
+
* **Two-Factor Authentication** ( TFA/2FA ) for Ajax login forms like User Pro, login with ajax, Theme my login, etc with all authentication methods.
|
34 |
+
* **Passwordless login** and login with phone number
|
35 |
+
* **[Prevent account sharing](prevent account sharing between users by two factor authentication)** Google Authenticator(WP 2FA) restricts users from sharing WordPress login credentials which help to secure WordPress Websites. The Google authenticator plugin also adds a session control feature that limits user sessions based on WordPress User activities.
|
36 |
+
* This plugin Supports standard TOTP
|
37 |
+
* Two-Factor Authentication (WP 2FA/TFA) allows authentication on the login page itself for Google Authenticator & miniOrange Soft Token
|
38 |
+
* **[Multiple Login Options](https://docs.miniorange.com/documentation/login-username-2nd-factor-2):** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login /Login without password /Password free authentication
|
39 |
+
* Recovery codes in case you are locked out for all Two-Factor Authentication (WP 2FA/TFA)
|
40 |
+
* **Mobile verification - two step verification** (WP 2FA/TFA) using a user's mobile phone with authentication method like google authenticator, QR code authentication, etc.
|
41 |
+
|
42 |
+
= Additional Features other than the basic Google Authenticator two-factor authentication =
|
43 |
+
|
44 |
+
* Complete Web Security suite to protect wordpress from any attacks
|
45 |
+
* Web Application Firewall (WAF): Wordpress Firewall to protect your site
|
46 |
+
* OWASP TOP 10 Protection
|
47 |
+
* Login Protection: Spam and Login Protection
|
48 |
+
* Malware scanner: Detects any virus, malware and trojan
|
49 |
+
* Backup: Taking Encrypted Backup with local storage and cloud storage
|
50 |
+
* Limit Login Attempts to stop password guessing
|
51 |
+
* Realtime Global IP Blocking
|
52 |
+
* Limit Rate of Request: Protecting resources from any security hole exploit
|
53 |
+
* Crawler Detection and blocking
|
54 |
+
* Blocking IP and Attacks
|
55 |
+
* Country Blocking and Browser Blocking
|
56 |
+
* Brute Force Attacks prevention to stop password hack
|
57 |
+
* Captcha for Bot Detection
|
58 |
+
* Google Recaptcha
|
59 |
+
* Login Form Protection
|
60 |
+
* Registration Form Protection
|
61 |
+
* Integration with different plugin - WooCommerce, Buddypress, Ultimate Member and others
|
62 |
+
* Reporting
|
63 |
+
* Audit Log
|
64 |
+
|
65 |
+
= Apps Supported by the two-factor authentication (2FA/MFA) plugin =
|
66 |
+
* Google Authenticator
|
67 |
+
* miniOrange Authenticator
|
68 |
+
* Duo Authenticator
|
69 |
+
* Microsoft Authenticator
|
70 |
+
* Authy 2 Factor Authenticator
|
71 |
+
* LastPass Authenticator
|
72 |
+
* FreeOTP Authenticator
|
73 |
|
74 |
+
= User Identity Verification or multi-factor authentication with Google Authenticator =
|
75 |
+
**Login and Registration:** Verify users on login with different two factor methods like OTP over SMS, OTP Over Email, OTP Over Telegram, Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions, and many others.
|
76 |
+
Users will receive an OTP at the time of registration which will be used to verify their identity. OTP can be received either via OTP Over email or via OTP over SMS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
+
= Plugin Integrations and Support for all methods of two-factor authentication/two step verification ( WP 2FA/TFA/OTP ) =
|
79 |
+
Our plugin is integrated with [popular Plugins](https://plugins.miniorange.com/2-factor-authentication-for-wordpress-wp-2fa#integrations) such as WooCommerce and Ultimate member.
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|