Version Description
Download this release
Release Info
Developer | cyberlord92 |
Plugin | Google Authenticator – WordPress Two Factor Authentication (2FA) |
Version | 5.4.33 |
Comparing to | |
See all releases |
Code changes from version 5.4.32 to 5.4.33
- controllers/duo_authenticator/duo_authenticator_ajax.php +74 -0
- controllers/twofa/mo2fa_common_login.php +205 -0
- controllers/twofa/mo2fa_inline_registration.php +208 -0
- database/database_functions_2fa.php +9 -1
- handler/twofa/setup_twofa.php +25 -9
- handler/twofa/two_fa_constants.php +6 -0
- handler/twofa/two_fa_duo_handler.php +428 -0
- handler/twofa/two_fa_pass2login.php +267 -9
- handler/twofa/two_fa_settings.php +198 -6
- helper/constants.php +1 -1
- includes/css/style_settings.css +13 -8
- includes/css/upgrade.css +443 -0
- includes/images/authmethods/DuoAuthenticator.png +0 -0
- includes/images/bank-transfer.png +0 -0
- miniorange_2_factor_settings.php +3 -2
- readme.txt +77 -33
- views/twofa/setup/setup_duo_authenticator.php +408 -0
- views/twofa/setup_twofa.php +8 -4
- views/twofa/test/test_twofa_duo_authenticator.php +74 -0
- views/upgrade.php +1062 -917
controllers/duo_authenticator/duo_authenticator_ajax.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Mo_2f_duo_authenticator
|
3 |
+
{
|
4 |
+
function __construct(){
|
5 |
+
add_action( 'admin_init' , array( $this, 'mo2f_duo_authenticator_functions' ) );
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
public function mo2f_duo_authenticator_functions(){
|
10 |
+
add_action('wp_ajax_mo2f_duo_authenticator_ajax', array( $this, 'mo2f_duo_authenticator_ajax' ));
|
11 |
+
add_action( 'wp_ajax_nopriv_mo2f_duo_ajax_request', array($this,'mo2f_duo_ajax_request') );
|
12 |
+
}
|
13 |
+
|
14 |
+
public function mo2f_duo_ajax_request(){
|
15 |
+
|
16 |
+
switch ($_POST['call_type']) {
|
17 |
+
case "check_duo_push_auth_status":
|
18 |
+
$this->mo2f_check_duo_push_auth_status();
|
19 |
+
break;
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
public function mo2f_duo_authenticator_ajax(){
|
24 |
+
switch($_POST['call_type'])
|
25 |
+
{
|
26 |
+
|
27 |
+
case "check_duo_push_auth_status":
|
28 |
+
$this->mo2f_check_duo_push_auth_status();
|
29 |
+
break;
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
|
34 |
+
function mo2f_check_duo_push_auth_status(){
|
35 |
+
|
36 |
+
if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-2-factor-duo-nonce'))
|
37 |
+
{
|
38 |
+
wp_send_json("ERROR");
|
39 |
+
exit;
|
40 |
+
}else{
|
41 |
+
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_duo_handler.php';
|
42 |
+
$ikey = get_site_option('mo2f_d_integration_key');
|
43 |
+
$skey = get_site_option('mo2f_d_secret_key');
|
44 |
+
$host = get_site_option('mo2f_d_api_hostname');
|
45 |
+
$current_user = wp_get_current_user();
|
46 |
+
|
47 |
+
$session_id_encrypt = isset($_POST['session_id_encrypt']) ? $_POST['session_id_encrypt'] : '';
|
48 |
+
$user_id = MO2f_Utility::mo2f_get_transient( $session_id_encrypt, 'mo2f_current_user_id' );
|
49 |
+
$user_email = get_user_meta($user_id,'current_user_email');
|
50 |
+
$user_email = isset($user_email[0])? $user_email[0]:'';
|
51 |
+
|
52 |
+
if($user_email == '' || empty($user_email))
|
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');
|
63 |
+
}else{
|
64 |
+
|
65 |
+
wp_send_json('ERROR');
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
|
70 |
+
}
|
71 |
+
|
72 |
+
}
|
73 |
+
new Mo_2f_duo_authenticator();
|
74 |
+
?>
|
controllers/twofa/mo2fa_common_login.php
CHANGED
@@ -482,6 +482,211 @@ function mo2f_backup_form($login_status, $login_message, $redirect_to, $session_
|
|
482 |
<?php
|
483 |
}
|
484 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_message, $redirect_to, $session_id_encrypt, $cookievalue ) {
|
486 |
$mo_wpns_config = new MoWpnsHandler();
|
487 |
|
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');
|
493 |
+
$mo2f_EV_txid = get_user_meta($user_id,'mo2f_EV_txid',true);
|
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 |
+
|
500 |
+
?>
|
501 |
+
|
502 |
+
<html>
|
503 |
+
<head>
|
504 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
505 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
506 |
+
<?php
|
507 |
+
echo_js_css_files(); ?>
|
508 |
+
</head>
|
509 |
+
<body>
|
510 |
+
<div class="mo2f_modal" tabindex="-1" role="dialog">
|
511 |
+
<div class="mo2f-modal-backdrop"></div>
|
512 |
+
<div class="mo_customer_validation-modal-dialog mo_customer_validation-modal-md">
|
513 |
+
<div class="login mo_customer_validation-modal-content">
|
514 |
+
<div class="mo2f_modal-header">
|
515 |
+
<h4 class="mo2f_modal-title">
|
516 |
+
<button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close"
|
517 |
+
title="<?php echo mo2f_lt( 'Back to login' ); ?>"
|
518 |
+
onclick="mologinback();"><span aria-hidden="true">×</span></button>
|
519 |
+
<?php echo mo2f_lt( 'Accept Your Transaction' ); ?></h4>
|
520 |
+
</div>
|
521 |
+
<div class="mo2f_modal-body">
|
522 |
+
<?php if ( isset( $login_message ) && ! empty( $login_message ) ) { ?>
|
523 |
+
<div id="otpMessage">
|
524 |
+
<p class="mo2fa_display_message_frontend"><?php echo $login_message; ?></p>
|
525 |
+
</div>
|
526 |
+
<?php } ?>
|
527 |
+
<div id="pushSection">
|
528 |
+
|
529 |
+
<div>
|
530 |
+
<center>
|
531 |
+
<p class="mo2f_push_oob_message"><?php echo mo2f_lt( 'Waiting for your approval...' ); ?></p>
|
532 |
+
</center>
|
533 |
+
</div>
|
534 |
+
<div id="showPushImage">
|
535 |
+
<center>
|
536 |
+
<img src="<?php echo plugins_url( 'includes/images/ajax-loader-login.gif', dirname(dirname(__FILE__)) ); ?>"/>
|
537 |
+
</center>
|
538 |
+
</div>
|
539 |
+
|
540 |
+
|
541 |
+
<span style="padding-right:2%;">
|
542 |
+
<?php if ( isset( $login_status ) && $login_status == 'MO_2_FACTOR_CHALLENGE_PUSH_NOTIFICATIONS' ) { ?>
|
543 |
+
<center>
|
544 |
+
<?php if ( $mo2f_enable_forgotphone && ! $mo2f_is_new_customer ) { ?>
|
545 |
+
<input type="button" name="miniorange_login_forgotphone"
|
546 |
+
onclick="mologinforgotphone();" id="miniorange_login_forgotphone"
|
547 |
+
class="miniorange_login_forgotphone"
|
548 |
+
value="<?php echo mo2f_lt( 'Forgot Phone?' ); ?>"/>
|
549 |
+
<?php } ?>
|
550 |
+
  
|
551 |
+
|
552 |
+
</center>
|
553 |
+
<?php } else if ( isset( $login_status ) && $login_status == 'MO_2_FACTOR_CHALLENGE_OOB_EMAIL' && $mo2f_enable_forgotphone && $mo2f_KBA_config_status ) { ?>
|
554 |
+
<center>
|
555 |
+
<a href="#mo2f_alternate_login_kba">
|
556 |
+
<p class="mo2f_push_oob_backup"><?php echo mo2f_lt( 'Didn\'t receive push nitification?' ); ?></p>
|
557 |
+
</a>
|
558 |
+
</center>
|
559 |
+
<?php } ?>
|
560 |
+
</span>
|
561 |
+
<center>
|
562 |
+
<?php
|
563 |
+
if(empty(get_user_meta($user_id, 'mo_backup_code_generated', true))){ ?>
|
564 |
+
<div>
|
565 |
+
<a href="#mo2f_backup_generate">
|
566 |
+
<p style="font-size:14px; font-weight:bold;"><?php echo __('Send backup codes on email', 'miniorange-2-factor-authentication');?></p>
|
567 |
+
</a>
|
568 |
+
</div>
|
569 |
+
<?php }else{ ?>
|
570 |
+
<div>
|
571 |
+
<a href="#mo2f_backup_option">
|
572 |
+
<p style="font-size:14px; font-weight:bold;"><?php echo __('Use Backup Codes', 'miniorange-2-factor-authentication');?></p>
|
573 |
+
</a>
|
574 |
+
</div>
|
575 |
+
<?php }
|
576 |
+
?>
|
577 |
+
<div style="padding:10px;">
|
578 |
+
<p><a href="<?php echo $mo_wpns_config->lockedOutlink();?>" target="_blank" style="color:#ca2963;font-weight:bold;">I'm locked out & unable to login.</a></p>
|
579 |
+
</div>
|
580 |
+
</center>
|
581 |
+
</div>
|
582 |
+
|
583 |
+
<?php
|
584 |
+
mo2f_customize_logo();
|
585 |
+
mo2f_create_backup_form($redirect_to, $session_id_encrypt, $login_status, $login_message);
|
586 |
+
?>
|
587 |
+
</div>
|
588 |
+
</div>
|
589 |
+
</div>
|
590 |
+
</div>
|
591 |
+
<form name="f" id="mo2f_backto_duo_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>"
|
592 |
+
class="mo2f_display_none_forms">
|
593 |
+
<input type="hidden" name="miniorange_duo_push_validation_failed_nonce"
|
594 |
+
value="<?php echo wp_create_nonce( 'miniorange-2-factor-duo-push-validation-failed-nonce' ); ?>"/>
|
595 |
+
<input type="hidden" name="option" value="miniorange_duo_push_validation_failed">
|
596 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
597 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
598 |
+
<input type="hidden" name="currentMethod" value="emailVer"/>
|
599 |
+
|
600 |
+
</form>
|
601 |
+
<form name="f" id="mo2f_duo_push_validation_form" method="post" class="mo2f_display_none_forms">
|
602 |
+
<input type="hidden" name="miniorange_duo_push_validation_nonce"
|
603 |
+
value="<?php echo wp_create_nonce( 'miniorange-2-factor-duo-validation-nonce' ); ?>"/>
|
604 |
+
<input type="hidden" name="option" value="miniorange_duo_push_validation">
|
605 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
606 |
+
<input type="hidden" name="tx_type"/>
|
607 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
608 |
+
<input type="hidden" name="TxidEmail" value="<?php echo $mo2f_EV_txid; ?>"/>
|
609 |
+
|
610 |
+
</form>
|
611 |
+
|
612 |
+
<form name="f" id="mo2f_show_forgotphone_loginform" method="post" class="mo2f_display_none_forms">
|
613 |
+
<input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
|
614 |
+
<input type="hidden" name="miniorange_forgotphone"
|
615 |
+
value="<?php echo wp_create_nonce( 'miniorange-2-factor-forgotphone' ); ?>"/>
|
616 |
+
<input type="hidden" name="option" value="miniorange_forgotphone">
|
617 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
618 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
619 |
+
</form>
|
620 |
+
<form name="f" id="mo2f_alternate_login_kbaform" method="post" class="mo2f_display_none_forms">
|
621 |
+
<input type="hidden" name="miniorange_alternate_login_kba_nonce"
|
622 |
+
value="<?php echo wp_create_nonce( 'miniorange-2-factor-alternate-login-kba-nonce' ); ?>"/>
|
623 |
+
<input type="hidden" name="option" value="miniorange_alternate_login_kba">
|
624 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
625 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
626 |
+
</form>
|
627 |
+
|
628 |
+
<script>
|
629 |
+
var timeout;
|
630 |
+
|
631 |
+
pollPushValidation();
|
632 |
+
function pollPushValidation()
|
633 |
+
{
|
634 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
635 |
+
var nonce = "<?php echo wp_create_nonce( 'miniorange-2-factor-duo-nonce' ); ?>";
|
636 |
+
var session_id_encrypt = "<?php echo $session_id_encrypt; ?>";
|
637 |
+
var data={
|
638 |
+
'action':'mo2f_duo_ajax_request',
|
639 |
+
'call_type':'check_duo_push_auth_status',
|
640 |
+
'session_id_encrypt': session_id_encrypt,
|
641 |
+
'nonce' : nonce,
|
642 |
+
|
643 |
+
|
644 |
+
};
|
645 |
+
|
646 |
+
jQuery.post(ajax_url, data, function(response){
|
647 |
+
|
648 |
+
|
649 |
+
if (response == 'SUCCESS') {
|
650 |
+
jQuery('#mo2f_duo_push_validation_form').submit();
|
651 |
+
} else if (status == 'ERROR' || status == 'FAILED' || status == 'DENIED' || status ==0) {
|
652 |
+
jQuery('#mo2f_backto_duo_mo_loginform').submit();
|
653 |
+
} else {
|
654 |
+
timeout = setTimeout(pollMobileValidation, 3000);
|
655 |
+
}
|
656 |
+
|
657 |
+
});
|
658 |
+
}
|
659 |
+
|
660 |
+
|
661 |
+
|
662 |
+
|
663 |
+
|
664 |
+
|
665 |
+
function mologinforgotphone() {
|
666 |
+
jQuery('#mo2f_show_forgotphone_loginform').submit();
|
667 |
+
}
|
668 |
+
|
669 |
+
function mologinback() {
|
670 |
+
jQuery('#mo2f_backto_duo_mo_loginform').submit();
|
671 |
+
}
|
672 |
+
|
673 |
+
jQuery('a[href="#mo2f_alternate_login_kba"]').click(function () {
|
674 |
+
jQuery('#mo2f_alternate_login_kbaform').submit();
|
675 |
+
});
|
676 |
+
jQuery('a[href="#mo2f_backup_option"]').click(function() {
|
677 |
+
jQuery('#mo2f_backup').submit();
|
678 |
+
});
|
679 |
+
jQuery('a[href="#mo2f_backup_generate"]').click(function() {
|
680 |
+
jQuery('#mo2f_create_backup_codes').submit();
|
681 |
+
});
|
682 |
+
|
683 |
+
</script>
|
684 |
+
</body>
|
685 |
+
</html>
|
686 |
+
|
687 |
+
<?php
|
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 |
|
controllers/twofa/mo2fa_inline_registration.php
CHANGED
@@ -1,6 +1,8 @@
|
|
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","OTP OVER WHATSAPP");
|
|
|
|
|
4 |
return $methods;
|
5 |
}
|
6 |
|
@@ -29,6 +31,8 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
29 |
{
|
30 |
$current_selected_method == 'OTP Over Whatsapp';
|
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 == 'GOOGLE AUTHENTICATOR' ){
|
34 |
prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id);
|
@@ -183,6 +187,14 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
183 |
<input type="radio" name="mo2f_selected_2factor_method" value="OTP OVER EMAIL" />
|
184 |
<?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
|
185 |
</label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
</span>
|
187 |
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:35%;"><?php echo __('Skip Two Factor', 'miniorange-2-factor-authentication'); ?></a>>>
|
188 |
<br />
|
@@ -494,6 +506,115 @@ function prompt_user_for_miniorange_app_setup($current_user_id, $login_status, $
|
|
494 |
</html>
|
495 |
<?php
|
496 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
497 |
|
498 |
function prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
499 |
$ga_secret = MO2f_Utility::mo2f_get_transient($session_id, 'secret_ga');
|
@@ -796,6 +917,93 @@ function initialize_inline_mobile_registration($current_user,$session_id,$qrCode
|
|
796 |
</script>
|
797 |
<?php
|
798 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
799 |
function prompt_user_for_kba_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
800 |
$current_user = get_userdata($current_user_id);
|
801 |
$opt=fetch_methods($current_user);
|
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","OTP OVER WHATSAPP");
|
4 |
+
if(get_site_option('duo_credentials_save_successfully'))
|
5 |
+
array_push($methods,"DUO");
|
6 |
return $methods;
|
7 |
}
|
8 |
|
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' ){
|
38 |
prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id);
|
187 |
<input type="radio" name="mo2f_selected_2factor_method" value="OTP OVER EMAIL" />
|
188 |
<?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
|
189 |
</label>
|
190 |
+
<br>
|
191 |
+
</span>
|
192 |
+
<span class="<?php if( !(in_array("DUO", $opt)) ){ echo "mo2f_td_hide"; }else { echo "mo2f_td_show"; } ?>" >
|
193 |
+
<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'); ?>">
|
194 |
+
<input type="radio" name="mo2f_selected_2factor_method" value=" DUO PUSH NOTIFICATIONS" />
|
195 |
+
<?php echo __('Duo Push Notification', 'miniorange-2-factor-authentication'); ?>
|
196 |
+
</label>
|
197 |
+
<br>
|
198 |
</span>
|
199 |
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:35%;"><?php echo __('Skip Two Factor', 'miniorange-2-factor-authentication'); ?></a>>>
|
200 |
<br />
|
506 |
</html>
|
507 |
<?php
|
508 |
}
|
509 |
+
function prompt_user_for_duo_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
|
510 |
+
global $Mo2fdbQueries;
|
511 |
+
$current_user = get_userdata($current_user_id);
|
512 |
+
$email = $current_user->user_email;
|
513 |
+
$opt=fetch_methods($current_user);
|
514 |
+
$mobile_registration_status = $Mo2fdbQueries->get_user_detail( 'mobile_registration_status',$current_user_id);
|
515 |
+
|
516 |
+
?>
|
517 |
+
<html>
|
518 |
+
<head> <meta charset="utf-8"/>
|
519 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
520 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
521 |
+
<?php
|
522 |
+
mo2f_inline_css_and_js();
|
523 |
+
?>
|
524 |
+
</head>
|
525 |
+
<body>
|
526 |
+
<div class="mo2f_modal" tabindex="-1" role="dialog" id="myModal5">
|
527 |
+
<div class="mo2f-modal-backdrop"></div>
|
528 |
+
<div class="mo2f_modal-dialog mo2f_modal-lg" >
|
529 |
+
<div class="login mo_customer_validation-modal-content">
|
530 |
+
<div class="mo2f_modal-header">
|
531 |
+
<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>
|
532 |
+
<?php echo __('Setup Duo', 'miniorange-2-factor-authentication'); ?> <b><?php echo __('Authenticator', 'miniorange-2-factor-authentication'); ?></b> <?php echo __('App', 'miniorange-2-factor-authentication'); ?></h4>
|
533 |
+
</div>
|
534 |
+
<div class="mo2f_modal-body">
|
535 |
+
<?php if(isset($login_message) && !empty($login_message)) { ?>
|
536 |
+
|
537 |
+
<div id="otpMessage">
|
538 |
+
<p class="mo2fa_display_message_frontend" style="text-align: left !important;"><?php echo __($login_message, 'miniorange-2-factor-authentication'); ?></p>
|
539 |
+
</div>
|
540 |
+
<?php } ?>
|
541 |
+
<div style="margin-right:7px;"><?php mo2f_inline_download_instruction_for_duo_mobile_app($mobile_registration_status);
|
542 |
+
|
543 |
+
?></div>
|
544 |
+
<div class="mo_margin_left">
|
545 |
+
<h3><?php echo __('Step-2 : Setup Duo Push Notification', 'miniorange-2-factor-authentication'); ?></h3><hr class="mo_hr">
|
546 |
+
<div id="mo2f_configurePhone"><h4><?php echo __('Please click on \'Configure your phone\' button below to setup duo push notification.', 'miniorange-2-factor-authentication'); ?></h4>
|
547 |
+
<center>
|
548 |
+
<?php if (sizeof($opt) > 1) { ?>
|
549 |
+
<input type="button" name="back" id="mo2f_inline_back_btn" class="miniorange_button" value="<?php echo __('Back', 'miniorange-2-factor-authentication'); ?>" />
|
550 |
+
<?php } ?>
|
551 |
+
<input type="button" name="submit" onclick="moconfigureapp();" class="miniorange_button" value="<?php echo __('Configure your phone', 'miniorange-2-factor-authentication'); ?>" />
|
552 |
+
</center>
|
553 |
+
</div>
|
554 |
+
<?php
|
555 |
+
|
556 |
+
if(isset($_POST['option']) && $_POST['option'] =='miniorange_inline_duo_auth_mobile_complete'){
|
557 |
+
go_for_user_enroll_on_duo($current_user,$session_id);
|
558 |
+
?>
|
559 |
+
<?php }else if(isset($_POST['option']) && $_POST['option'] == 'duo_mobile_send_push_notification_for_inline_form') {
|
560 |
+
|
561 |
+
initialize_inline_duo_auth_registration($current_user,$session_id);
|
562 |
+
?>
|
563 |
+
|
564 |
+
<?php }?>
|
565 |
+
|
566 |
+
<?php mo2f_customize_logo() ?>
|
567 |
+
</div>
|
568 |
+
<br>
|
569 |
+
<br>
|
570 |
+
</div>
|
571 |
+
</div>
|
572 |
+
</div>
|
573 |
+
</div>
|
574 |
+
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
575 |
+
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
576 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
577 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
578 |
+
</form>
|
579 |
+
<form name="f" method="post" action="" id="mo2f_inline_configureapp_form" style="display:none;">
|
580 |
+
<input type="hidden" name="option" value="miniorange_inline_show_mobile_config"/>
|
581 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
582 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
583 |
+
<input type="hidden" name="miniorange_inline_show_qrcode_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-show-qrcode-nonce'); ?>" />
|
584 |
+
</form>
|
585 |
+
<form name="f" method="post" id="mo2f_inline_duo_auth_register_form" action="" style="display:none;">
|
586 |
+
<input type="hidden" name="option" value="miniorange_inline_duo_auth_mobile_complete"/>
|
587 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
588 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
589 |
+
<input type="hidden" name="mo_auth_inline_duo_auth_mobile_registration_complete_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-duo_auth-registration-complete-nonce'); ?>" />
|
590 |
+
</form>
|
591 |
+
<?php if (sizeof($opt) > 1) { ?>
|
592 |
+
<form name="f" method="post" action="" id="mo2f_goto_two_factor_form">
|
593 |
+
<input type="hidden" name="option" value="miniorange_back_inline"/>
|
594 |
+
<input type="hidden" name="miniorange_inline_two_factor_setup" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-setup-nonce'); ?>" />
|
595 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
596 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
597 |
+
</form>
|
598 |
+
<?php } ?>
|
599 |
+
<script>
|
600 |
+
function mologinback(){
|
601 |
+
jQuery('#mo2f_backto_mo_loginform').submit();
|
602 |
+
}
|
603 |
+
function moconfigureapp(){
|
604 |
+
jQuery('#mo2f_inline_duo_auth_register_form').submit();
|
605 |
+
}
|
606 |
+
jQuery('#mo2f_inline_back_btn').click(function() {
|
607 |
+
jQuery('#mo2f_goto_two_factor_form').submit();
|
608 |
+
});
|
609 |
+
<?php
|
610 |
+
if(isset($showqrCode) && $showqrCode == 'MO_2_FACTOR_SHOW_QR_CODE' && isset($_POST['miniorange_inline_show_qrcode_nonce']) && wp_verify_nonce( $_POST['miniorange_inline_show_qrcode_nonce'], 'miniorange-2-factor-inline-show-qrcode-nonce' )){
|
611 |
+
?>
|
612 |
+
<?php } ?>
|
613 |
+
</script>
|
614 |
+
</body>
|
615 |
+
</html>
|
616 |
+
<?php
|
617 |
+
}
|
618 |
|
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');
|
917 |
</script>
|
918 |
<?php
|
919 |
}
|
920 |
+
|
921 |
+
function initialize_inline_duo_auth_registration($current_user,$session_id_encrypt){
|
922 |
+
|
923 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
924 |
+
update_user_meta($user_id,'current_user_email',$current_user->user_email);
|
925 |
+
|
926 |
+
|
927 |
+
$opt=fetch_methods($current_user);
|
928 |
+
?>
|
929 |
+
<h3><?php echo mo2f_lt( 'Test Duo Authenticator' ); ?></h3>
|
930 |
+
<hr>
|
931 |
+
<div>
|
932 |
+
<br>
|
933 |
+
<br>
|
934 |
+
<center>
|
935 |
+
<h3><?php echo mo2f_lt( 'Duo push notification is sent to your mobile phone.' ); ?>
|
936 |
+
<br>
|
937 |
+
<?php echo mo2f_lt( 'We are waiting for your approval...' ); ?></h3>
|
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="mo_wpns_button mo_wpns_button1"
|
942 |
+
value="<?php echo mo2f_lt( 'Back' ); ?>"
|
943 |
+
style="margin-top:100px;margin-left:10px;"/>
|
944 |
+
</div>
|
945 |
+
|
946 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
947 |
+
<input type="hidden" name="option" value="mo2f_go_back"/>
|
948 |
+
<input type="hidden" name="mo2f_go_back_nonce"
|
949 |
+
value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
950 |
+
</form>
|
951 |
+
<form name="f" method="post" id="mo2f_inline_duo_authenticator_success_form" action="">
|
952 |
+
<input type="hidden" name="option" value="mo2f_inline_duo_authenticator_success_form"/>
|
953 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
954 |
+
<input type="hidden" name="mo2f_duo_authenticator_success_nonce"
|
955 |
+
value="<?php echo wp_create_nonce( "mo2f-duo-authenticator-success-nonce" ) ?>"/>
|
956 |
+
</form>
|
957 |
+
<form name="f" method="post" id="mo2f_duo_authenticator_error_form" action="">
|
958 |
+
<input type="hidden" name="option" value="mo2f_inline_duo_authenticator_error"/>
|
959 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
960 |
+
<input type="hidden" name="mo2f_inline_duo_authentcator_error_nonce"
|
961 |
+
value="<?php echo wp_create_nonce( "mo2f-inline-duo-authenticator-error-nonce" ) ?>"/>
|
962 |
+
</form>
|
963 |
+
|
964 |
+
<script>
|
965 |
+
jQuery('#go_back').click(function () {
|
966 |
+
jQuery('#mo2f_go_back_form').submit();
|
967 |
+
});
|
968 |
+
jQuery("#mo2f_configurePhone").empty();
|
969 |
+
jQuery("#mo2f_app_div").hide();
|
970 |
+
var timeout;
|
971 |
+
|
972 |
+
|
973 |
+
|
974 |
+
pollMobileValidation();
|
975 |
+
function pollMobileValidation() {
|
976 |
+
var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
|
977 |
+
var nonce = "<?php echo wp_create_nonce( 'miniorange-2-factor-duo-nonce' ); ?>";
|
978 |
+
var session_id_encrypt = "<?php echo $session_id_encrypt; ?>";
|
979 |
+
|
980 |
+
var data={
|
981 |
+
'action':'mo2f_duo_ajax_request',
|
982 |
+
'call_type':'check_duo_push_auth_status',
|
983 |
+
'session_id_encrypt': session_id_encrypt,
|
984 |
+
'nonce': nonce,
|
985 |
+
|
986 |
+
};
|
987 |
+
|
988 |
+
jQuery.post(ajax_url, data, function(response){
|
989 |
+
|
990 |
+
if (response == 'SUCCESS') {
|
991 |
+
jQuery('#mo2f_inline_duo_authenticator_success_form').submit();
|
992 |
+
} else if (response == 'ERROR' || response == 'FAILED' || response == 'DENIED') {
|
993 |
+
|
994 |
+
jQuery('#mo2f_duo_authenticator_error_form').submit();
|
995 |
+
} else {
|
996 |
+
timeout = setTimeout(pollMobileValidation, 3000);
|
997 |
+
}
|
998 |
+
|
999 |
+
});
|
1000 |
+
|
1001 |
+
}
|
1002 |
+
|
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);
|
database/database_functions_2fa.php
CHANGED
@@ -47,7 +47,8 @@ class Mo2fDB {
|
|
47 |
`mo2f_GoogleAuthenticator_config_status` tinyint,
|
48 |
`mo2f_OTPOverEmail_config_status` tinyint,
|
49 |
`mo2f_OTPOverTelegram_config_status` tinyint,
|
50 |
-
`mo2f_OTPOverWhatsapp_config_status` tinyint,
|
|
|
51 |
`mobile_registration_status` tinyint,
|
52 |
`mo2f_2factor_enable_2fa_byusers` tinyint DEFAULT 1,
|
53 |
`mo2f_configured_2FA_method` mediumtext NOT NULL ,
|
@@ -69,6 +70,7 @@ class Mo2fDB {
|
|
69 |
|
70 |
$check_if_column_exists = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverEmail_config_status" );
|
71 |
$check_if_column_exists_tel = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverTelegram_config_status" );
|
|
|
72 |
|
73 |
if ( ! $check_if_column_exists ) {
|
74 |
$query = "ALTER TABLE `$tableName` ADD COLUMN `mo2f_OTPOverEmail_config_status` tinyint";
|
@@ -82,6 +84,12 @@ class Mo2fDB {
|
|
82 |
`mo2f_OTPOverWhatsapp_config_status` tinyint);";
|
83 |
$this->execute_add_column( $query );
|
84 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
|
87 |
$tableName = $this->userLoginInfoTable;
|
47 |
`mo2f_GoogleAuthenticator_config_status` tinyint,
|
48 |
`mo2f_OTPOverEmail_config_status` tinyint,
|
49 |
`mo2f_OTPOverTelegram_config_status` tinyint,
|
50 |
+
`mo2f_OTPOverWhatsapp_config_status` tinyint,
|
51 |
+
`mo2f_DuoAuthenticator_config_status` tinyint,
|
52 |
`mobile_registration_status` tinyint,
|
53 |
`mo2f_2factor_enable_2fa_byusers` tinyint DEFAULT 1,
|
54 |
`mo2f_configured_2FA_method` mediumtext NOT NULL ,
|
70 |
|
71 |
$check_if_column_exists = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverEmail_config_status" );
|
72 |
$check_if_column_exists_tel = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverTelegram_config_status" );
|
73 |
+
$check_if_column_exists_duo = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_DuoAuthenticator_config_status" );
|
74 |
|
75 |
if ( ! $check_if_column_exists ) {
|
76 |
$query = "ALTER TABLE `$tableName` ADD COLUMN `mo2f_OTPOverEmail_config_status` tinyint";
|
84 |
`mo2f_OTPOverWhatsapp_config_status` tinyint);";
|
85 |
$this->execute_add_column( $query );
|
86 |
}
|
87 |
+
if(!$check_if_column_exists_duo)
|
88 |
+
{
|
89 |
+
$query = "ALTER TABLE " . $tableName . " ADD COLUMN (
|
90 |
+
`mo2f_DuoAuthenticator_config_status` tinyint);";
|
91 |
+
$this->execute_add_column( $query );
|
92 |
+
}
|
93 |
|
94 |
|
95 |
$tableName = $this->userLoginInfoTable;
|
handler/twofa/setup_twofa.php
CHANGED
@@ -9,7 +9,9 @@
|
|
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 $test_dirName.'test_twofa_email_verification.php';
|
|
|
13 |
include $test_dirName.'test_twofa_google_authy_authenticator.php';
|
14 |
include $test_dirName.'test_twofa_miniorange_qrcode_authentication.php';
|
15 |
include $test_dirName.'test_twofa_kba_questions.php';
|
@@ -91,6 +93,7 @@
|
|
91 |
"OTP Over Email",
|
92 |
"OTP Over Telegram",
|
93 |
"OTP Over Whatsapp",
|
|
|
94 |
"Authy Authenticator",
|
95 |
"Email Verification",
|
96 |
"OTP Over SMS and Email",
|
@@ -110,7 +113,8 @@
|
|
110 |
"OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
|
111 |
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login.",
|
112 |
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your Whatsapp account to login. This method is supported with twillio",
|
113 |
-
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account to login."
|
|
|
114 |
);
|
115 |
$two_factor_methods_doc = array(
|
116 |
"Security Questions" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-security-question",
|
@@ -139,11 +143,12 @@
|
|
139 |
"OTP Over Email" => "",
|
140 |
"OTP Over SMS and Email" => "",
|
141 |
"Hardware Token" => "",
|
142 |
-
"" => ""
|
|
|
143 |
);
|
144 |
|
145 |
$two_factor_methods_EC = array_slice( $all_two_factor_methods, 0, 11 );
|
146 |
-
$two_factor_methods_NC = array_slice( $all_two_factor_methods, 0,
|
147 |
if(MO2F_IS_ONPREM or $category != 'free_plan')
|
148 |
{
|
149 |
$all_two_factor_methods = array(
|
@@ -159,7 +164,8 @@
|
|
159 |
"OTP Over SMS and Email",
|
160 |
"Hardware Token",
|
161 |
"OTP Over Whatsapp",
|
162 |
-
"OTP Over Telegram"
|
|
|
163 |
);
|
164 |
$two_factor_methods_descriptions = array(
|
165 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
@@ -175,7 +181,8 @@
|
|
175 |
"OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
|
176 |
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login.",
|
177 |
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your Whatsapp account to login. This method is supported with twillio",
|
178 |
-
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account to login."
|
|
|
179 |
);
|
180 |
}
|
181 |
|
@@ -198,7 +205,7 @@
|
|
198 |
if(MO2F_IS_ONPREM and $category =='free_plan')
|
199 |
{
|
200 |
|
201 |
-
if($auth_method != 'Email Verification' and $auth_method != 'Security Questions' and $auth_method != 'Google Authenticator' and $auth_method !='miniOrange QR Code Authentication' and $auth_method !='miniOrange Soft Token' and $auth_method != 'miniOrange Push Notification' and $auth_method != 'OTP Over SMS' and $auth_method != 'OTP Over Email')
|
202 |
{
|
203 |
//continue;
|
204 |
}
|
@@ -422,8 +429,8 @@
|
|
422 |
|
423 |
|
424 |
$cloud_methods = array('miniOrange QR Code Authentication' , 'miniOrange Soft Token','miniOrange Push Notification');
|
425 |
-
|
426 |
-
if($auth_method == 'Email Verification' || $auth_method == 'Security Questions' || $auth_method == 'Google Authenticator' || $auth_method == 'miniOrange QR Code Authentication' || $auth_method =='miniOrange Soft Token' || $auth_method == 'miniOrange Push Notification' || $auth_method == 'OTP Over SMS' || $auth_method == 'OTP Over Email' || $auth_method == 'OTP Over Telegram' || $auth_method == 'OTP Over Whatsapp')
|
427 |
{
|
428 |
$show = 1;
|
429 |
}
|
@@ -743,7 +750,13 @@ function mo2f_show_2FA_configuration_screen( $user, $selected2FAmethod ) {
|
|
743 |
echo '<div class="mo_wpns_setting_layout">';
|
744 |
mo2f_configure_otp_over_Whatsapp($user);
|
745 |
echo '</div>';
|
746 |
-
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
747 |
}
|
748 |
|
749 |
}
|
@@ -779,6 +792,9 @@ function mo2f_show_2FA_test_screen( $user, $selected2FAmethod ) {
|
|
779 |
case "OTP Over Email":
|
780 |
mo2f_test_otp_over_email($user,$selected2FAmethod);
|
781 |
break;
|
|
|
|
|
|
|
782 |
default:
|
783 |
mo2f_test_google_authy_authenticator( $user, $selected2FAmethod );
|
784 |
}
|
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';
|
15 |
include $test_dirName.'test_twofa_google_authy_authenticator.php';
|
16 |
include $test_dirName.'test_twofa_miniorange_qrcode_authentication.php';
|
17 |
include $test_dirName.'test_twofa_kba_questions.php';
|
93 |
"OTP Over Email",
|
94 |
"OTP Over Telegram",
|
95 |
"OTP Over Whatsapp",
|
96 |
+
"Duo Authenticator",
|
97 |
"Authy Authenticator",
|
98 |
"Email Verification",
|
99 |
"OTP Over SMS and Email",
|
113 |
"OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
|
114 |
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login.",
|
115 |
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your Whatsapp account to login. This method is supported with twillio",
|
116 |
+
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account to login.",
|
117 |
+
"Duo Authenticator" => "Scan the QR code from the account in your Duo Authenticator App to login."
|
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",
|
143 |
"OTP Over Email" => "",
|
144 |
"OTP Over SMS and Email" => "",
|
145 |
"Hardware Token" => "",
|
146 |
+
"" => "",
|
147 |
+
|
148 |
);
|
149 |
|
150 |
$two_factor_methods_EC = array_slice( $all_two_factor_methods, 0, 11 );
|
151 |
+
$two_factor_methods_NC = array_slice( $all_two_factor_methods, 0, 10 );
|
152 |
if(MO2F_IS_ONPREM or $category != 'free_plan')
|
153 |
{
|
154 |
$all_two_factor_methods = array(
|
164 |
"OTP Over SMS and Email",
|
165 |
"Hardware Token",
|
166 |
"OTP Over Whatsapp",
|
167 |
+
"OTP Over Telegram",
|
168 |
+
"Duo Authenticator"
|
169 |
);
|
170 |
$two_factor_methods_descriptions = array(
|
171 |
""=>"<b>All methods in the FREE Plan in addition to the following methods.</b>",
|
181 |
"OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
|
182 |
"Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login.",
|
183 |
"OTP Over Whatsapp" => "Enter the One Time Passcode sent to your Whatsapp account to login. This method is supported with twillio",
|
184 |
+
"OTP Over Telegram" => "Enter the One Time Passcode sent to your Telegram account to login.",
|
185 |
+
"Duo Authenticator" => "Scan the QR code from the account in your Duo Authenticator App to login."
|
186 |
);
|
187 |
}
|
188 |
|
205 |
if(MO2F_IS_ONPREM and $category =='free_plan')
|
206 |
{
|
207 |
|
208 |
+
if($auth_method != 'Email Verification' and $auth_method != 'Security Questions' and $auth_method != 'Google Authenticator' and $auth_method !='miniOrange QR Code Authentication' and $auth_method !='miniOrange Soft Token' and $auth_method != 'miniOrange Push Notification' and $auth_method != 'OTP Over SMS' and $auth_method != 'OTP Over Email' and $auth_method != 'Duo Authenticator')
|
209 |
{
|
210 |
//continue;
|
211 |
}
|
429 |
|
430 |
|
431 |
$cloud_methods = array('miniOrange QR Code Authentication' , 'miniOrange Soft Token','miniOrange Push Notification');
|
432 |
+
|
433 |
+
if($auth_method == 'Email Verification' || $auth_method == 'Security Questions' || $auth_method == 'Google Authenticator' || $auth_method == 'miniOrange QR Code Authentication' || $auth_method =='miniOrange Soft Token' || $auth_method == 'miniOrange Push Notification' || $auth_method == 'OTP Over SMS' || $auth_method == 'OTP Over Email' || $auth_method == 'OTP Over Telegram' || $auth_method == 'OTP Over Whatsapp' || $auth_method == 'Duo Authenticator')
|
434 |
{
|
435 |
$show = 1;
|
436 |
}
|
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="mo_wpns_setting_layout">';
|
757 |
+
mo2f_configure_duo_authenticator($user);
|
758 |
+
echo '</div>';
|
759 |
+
break;
|
760 |
}
|
761 |
|
762 |
}
|
792 |
case "OTP Over Email":
|
793 |
mo2f_test_otp_over_email($user,$selected2FAmethod);
|
794 |
break;
|
795 |
+
case "Duo Authenticator":
|
796 |
+
mo2f_test_duo_authenticator($user);
|
797 |
+
break;
|
798 |
default:
|
799 |
mo2f_test_google_authy_authenticator( $user, $selected2FAmethod );
|
800 |
}
|
handler/twofa/two_fa_constants.php
CHANGED
@@ -261,6 +261,9 @@ class Mo2fConstants {
|
|
261 |
case 'ERROR_DURING_USER_REGISTRATION':
|
262 |
Return mo2f_lt( 'Error occurred while registering the user. Please try again.' );
|
263 |
break;
|
|
|
|
|
|
|
264 |
case 'SET_AS_2ND_FACTOR':
|
265 |
Return mo2f_lt( 'is set as your 2 factor authentication method.' );
|
266 |
break;
|
@@ -393,6 +396,9 @@ class Mo2fConstants {
|
|
393 |
case 'DENIED_REQUEST':
|
394 |
Return mo2f_lt( 'You have denied the request.' );
|
395 |
break;
|
|
|
|
|
|
|
396 |
case 'DISABLED_2FA':
|
397 |
Return mo2f_lt( 'Two-Factor plugin has been disabled.' );
|
398 |
break;
|
261 |
case 'ERROR_DURING_USER_REGISTRATION':
|
262 |
Return mo2f_lt( 'Error occurred while registering the user. Please try again.' );
|
263 |
break;
|
264 |
+
case 'VALIDATE_DUO':
|
265 |
+
Return mo2f_lt( 'Duo push notification validate successfully.' );
|
266 |
+
break;
|
267 |
case 'SET_AS_2ND_FACTOR':
|
268 |
Return mo2f_lt( 'is set as your 2 factor authentication method.' );
|
269 |
break;
|
396 |
case 'DENIED_REQUEST':
|
397 |
Return mo2f_lt( 'You have denied the request.' );
|
398 |
break;
|
399 |
+
case 'DENIED_DUO_REQUEST':
|
400 |
+
Return mo2f_lt( 'You have denied the request or you have not set duo push notification yet' );
|
401 |
+
break;
|
402 |
case 'DISABLED_2FA':
|
403 |
Return mo2f_lt( 'Two-Factor plugin has been disabled.' );
|
404 |
break;
|
handler/twofa/two_fa_duo_handler.php
ADDED
@@ -0,0 +1,428 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
const INITIAL_BACKOFF_SECONDS = 1;
|
3 |
+
const MAX_BACKOFF_SECONDS = 32;
|
4 |
+
const BACKOFF_FACTOR = 2;
|
5 |
+
const RATE_LIMIT_HTTP_CODE = 429;
|
6 |
+
|
7 |
+
|
8 |
+
|
9 |
+
function ping($skey, $ikey, $host)
|
10 |
+
{
|
11 |
+
$method = "GET";
|
12 |
+
$endpoint = "/auth/v2/ping";
|
13 |
+
$params = [];
|
14 |
+
|
15 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
16 |
+
|
17 |
+
}
|
18 |
+
|
19 |
+
function check($skey, $ikey, $host)
|
20 |
+
{
|
21 |
+
$method = "GET";
|
22 |
+
$endpoint = "/auth/v2/check";
|
23 |
+
$params = [];
|
24 |
+
|
25 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
26 |
+
}
|
27 |
+
|
28 |
+
|
29 |
+
function delete($skey,$ikey,$host,$user_id)
|
30 |
+
{
|
31 |
+
$method = "DELETE";
|
32 |
+
$endpoint = "/admin/v1/users/".$user_id;
|
33 |
+
$params = [];
|
34 |
+
|
35 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
36 |
+
}
|
37 |
+
|
38 |
+
|
39 |
+
function enroll($username = null, $valid_secs = null)
|
40 |
+
{
|
41 |
+
$ikey = get_site_option('mo2f_d_integration_key');
|
42 |
+
$skey = get_site_option('mo2f_d_secret_key');
|
43 |
+
$host = get_site_option('mo2f_d_api_hostname');
|
44 |
+
assert(is_string($username) || is_null($username));
|
45 |
+
assert(is_int($valid_secs) || is_null($valid_secs));
|
46 |
+
|
47 |
+
|
48 |
+
$method = "POST";
|
49 |
+
$endpoint = "/auth/v2/enroll";
|
50 |
+
$params = [];
|
51 |
+
|
52 |
+
if ($username) {
|
53 |
+
$params["username"] = $username;
|
54 |
+
}
|
55 |
+
if ($valid_secs) {
|
56 |
+
$params["valid_secs"] = $valid_secs;
|
57 |
+
}
|
58 |
+
|
59 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
60 |
+
}
|
61 |
+
|
62 |
+
function enroll_status($user_id, $activation_code,$skey,$ikey,$host)
|
63 |
+
{
|
64 |
+
assert(is_string($user_id));
|
65 |
+
assert(is_string($activation_code));
|
66 |
+
|
67 |
+
$method = "POST";
|
68 |
+
$endpoint = "/auth/v2/enroll_status";
|
69 |
+
$params = [
|
70 |
+
"user_id" => $user_id,
|
71 |
+
"activation_code" => $activation_code,
|
72 |
+
];
|
73 |
+
|
74 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
75 |
+
}
|
76 |
+
|
77 |
+
|
78 |
+
function preauth(
|
79 |
+
$user_identifier,
|
80 |
+
$username,
|
81 |
+
$skey,
|
82 |
+
$ikey,
|
83 |
+
$host,
|
84 |
+
$ipaddr = null,
|
85 |
+
$trusted_device_token = null
|
86 |
+
|
87 |
+
) {
|
88 |
+
|
89 |
+
assert(is_string($ipaddr) || is_null($ipaddr));
|
90 |
+
assert(is_string($trusted_device_token) || is_null($trusted_device_token));
|
91 |
+
|
92 |
+
|
93 |
+
$method = "POST";
|
94 |
+
$endpoint = "/auth/v2/preauth";
|
95 |
+
$params = [];
|
96 |
+
|
97 |
+
if ($username) {
|
98 |
+
$params["username"] = $user_identifier;
|
99 |
+
} else {
|
100 |
+
$params["user_id"] = $user_identifier;
|
101 |
+
}
|
102 |
+
if ($ipaddr) {
|
103 |
+
$params["ipaddr"] = $ipaddr;
|
104 |
+
}
|
105 |
+
if ($trusted_device_token) {
|
106 |
+
$params["trusted_device_token"] = $trusted_device_token;
|
107 |
+
}
|
108 |
+
|
109 |
+
return jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
110 |
+
}
|
111 |
+
|
112 |
+
|
113 |
+
function mo2f_duo_auth(
|
114 |
+
$user_identifier,
|
115 |
+
$factor,
|
116 |
+
$factor_params,
|
117 |
+
$skey,
|
118 |
+
$ikey,
|
119 |
+
$host,
|
120 |
+
$username = true,
|
121 |
+
$ipaddr = null,
|
122 |
+
$async = false,
|
123 |
+
$timeout = 60
|
124 |
+
) {
|
125 |
+
assert(is_string($user_identifier));
|
126 |
+
assert(
|
127 |
+
is_string($factor) &&
|
128 |
+
in_array($factor, ["auto", "push", "passcode", "sms", "phone"], true)
|
129 |
+
);
|
130 |
+
assert(is_array($factor_params));
|
131 |
+
assert(is_string($ipaddr) || is_null($ipaddr));
|
132 |
+
assert(is_bool($async));
|
133 |
+
assert(is_bool($username));
|
134 |
+
|
135 |
+
$method = "POST";
|
136 |
+
$endpoint = "/auth/v2/auth";
|
137 |
+
$params = [];
|
138 |
+
|
139 |
+
if ($username) {
|
140 |
+
$params["username"] = $user_identifier;
|
141 |
+
} else {
|
142 |
+
$params["user_id"] = $user_identifier;
|
143 |
+
}
|
144 |
+
if ($ipaddr) {
|
145 |
+
$params["ipaddr"] = $ipaddr;
|
146 |
+
}
|
147 |
+
if ($async) {
|
148 |
+
$params["async"] = "1";
|
149 |
+
}
|
150 |
+
|
151 |
+
$params["factor"] = $factor;
|
152 |
+
|
153 |
+
if ($factor === "push") {
|
154 |
+
assert(array_key_exists("device", $factor_params) && is_string($factor_params["device"]));
|
155 |
+
$params["device"] = $factor_params["device"];
|
156 |
+
|
157 |
+
if (array_key_exists("type", $factor_params)) {
|
158 |
+
$params["type"] = $factor_params["type"];
|
159 |
+
}
|
160 |
+
if (array_key_exists("display_username", $factor_params)) {
|
161 |
+
$params["display_username"] = $factor_params["display_username"];
|
162 |
+
}
|
163 |
+
if (array_key_exists("pushinfo", $factor_params)) {
|
164 |
+
$params["pushinfo"] = $factor_params["pushinfo"];
|
165 |
+
}
|
166 |
+
} elseif ($factor === "passcode") {
|
167 |
+
assert(array_key_exists("passcode", $factor_params) && is_string($factor_params["passcode"]));
|
168 |
+
$params["passcode"] = $factor_params["passcode"];
|
169 |
+
} elseif ($factor === "phone") {
|
170 |
+
assert(array_key_exists("device", $factor_params) && is_string($factor_params["device"]));
|
171 |
+
$params["device"] = $factor_params["device"];
|
172 |
+
} elseif ($factor === "sms") {
|
173 |
+
assert(array_key_exists("device", $factor_params) && is_string($factor_params["device"]));
|
174 |
+
$params["device"] = $factor_params["device"];
|
175 |
+
} elseif ($factor === "auto") {
|
176 |
+
assert(array_key_exists("device", $factor_params) && is_string($factor_params["device"]));
|
177 |
+
$params["device"] = $factor_params["device"];
|
178 |
+
}
|
179 |
+
|
180 |
+
|
181 |
+
$options = [
|
182 |
+
"timeout" => $timeout,
|
183 |
+
];
|
184 |
+
$requester_timeout = array_key_exists("timeout", $options) ? $options["timeout"] : null;
|
185 |
+
if (!$requester_timeout || $requester_timeout < $timeout) {
|
186 |
+
setRequesterOption("timeout", $timeout);
|
187 |
+
}
|
188 |
+
|
189 |
+
try {
|
190 |
+
$result = jsonApiCall($method, $endpoint, $params,$skey,$ikey,$host);
|
191 |
+
} finally {
|
192 |
+
|
193 |
+
if ($requester_timeout) {
|
194 |
+
setRequesterOption("timeout", $requester_timeout);
|
195 |
+
} else {
|
196 |
+
unset($options["timeout"]);
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
return $result;
|
201 |
+
}
|
202 |
+
function setRequesterOption($option, $value)
|
203 |
+
{
|
204 |
+
$options[$option] = $value;
|
205 |
+
return $options;
|
206 |
+
}
|
207 |
+
|
208 |
+
function mo2f_sleep($seconds)
|
209 |
+
{
|
210 |
+
usleep($seconds * 1000000);
|
211 |
+
}
|
212 |
+
|
213 |
+
|
214 |
+
function options($options)
|
215 |
+
{
|
216 |
+
|
217 |
+
$ch = curl_init();
|
218 |
+
assert(is_array($options));
|
219 |
+
|
220 |
+
|
221 |
+
$possible_options = [
|
222 |
+
CURLOPT_TIMEOUT => "timeout",
|
223 |
+
CURLOPT_CAINFO => "ca",
|
224 |
+
CURLOPT_USERAGENT => "user_agent",
|
225 |
+
CURLOPT_PROXY => "proxy_url",
|
226 |
+
CURLOPT_PROXYPORT => "proxy_port",
|
227 |
+
];
|
228 |
+
|
229 |
+
$curl_options = array_filter($possible_options, function ($option) use ($options) {
|
230 |
+
return array_key_exists($option, $options);
|
231 |
+
});
|
232 |
+
|
233 |
+
foreach ($curl_options as $key => $value) {
|
234 |
+
$curl_options[$key] = $options[$value];
|
235 |
+
}
|
236 |
+
|
237 |
+
|
238 |
+
$curl_options[CURLOPT_RETURNTRANSFER] = 1;
|
239 |
+
$curl_options[CURLOPT_FOLLOWLOCATION] = 1;
|
240 |
+
$curl_options[CURLOPT_SSL_VERIFYPEER] = true;
|
241 |
+
$curl_options[CURLOPT_SSL_VERIFYHOST] = 2;
|
242 |
+
|
243 |
+
curl_setopt_array($ch, $curl_options);
|
244 |
+
}
|
245 |
+
|
246 |
+
function execute($url, $method, $headers, $body = null)
|
247 |
+
{
|
248 |
+
$ch = curl_init();
|
249 |
+
assert(is_string($url));
|
250 |
+
assert(is_string($method));
|
251 |
+
assert(is_array($headers));
|
252 |
+
assert(is_string($body) || is_null($body));
|
253 |
+
|
254 |
+
$headers = array_map(function ($key, $value) {
|
255 |
+
return sprintf("%s: %s", $key, $value);
|
256 |
+
}, array_keys($headers), array_values($headers));
|
257 |
+
|
258 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
259 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
260 |
+
|
261 |
+
if ($method === "POST") {
|
262 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
263 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
|
264 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, null);
|
265 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
266 |
+
} elseif ($method === "GET") {
|
267 |
+
curl_setopt($ch, CURLOPT_HTTPGET, true);
|
268 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, null);
|
269 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
270 |
+
} else {
|
271 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
|
272 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
273 |
+
}
|
274 |
+
$result = curl_exec($ch);
|
275 |
+
|
276 |
+
$http_status_code = null;
|
277 |
+
$success = true;
|
278 |
+
if ($result === false) {
|
279 |
+
$error = curl_error($ch);
|
280 |
+
$errno = curl_errno($ch);
|
281 |
+
|
282 |
+
|
283 |
+
$result = json_encode(
|
284 |
+
[
|
285 |
+
'stat' => 'FAIL',
|
286 |
+
'code' => $errno,
|
287 |
+
'message' => $error,
|
288 |
+
]
|
289 |
+
);
|
290 |
+
$success = false;
|
291 |
+
} else {
|
292 |
+
$http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
293 |
+
}
|
294 |
+
|
295 |
+
return [
|
296 |
+
"response" => $result,
|
297 |
+
"success" => $success,
|
298 |
+
"http_status_code" => $http_status_code
|
299 |
+
];
|
300 |
+
}
|
301 |
+
|
302 |
+
function jsonApiCall($method, $path, $params,$skey,$ikey,$host)
|
303 |
+
{
|
304 |
+
assert(is_string($method));
|
305 |
+
assert(is_string($path));
|
306 |
+
assert(is_array($params));
|
307 |
+
|
308 |
+
$result = apiCall($method, $path, $params,$skey,$ikey,$host);
|
309 |
+
|
310 |
+
$result["response"] = json_decode($result["response"], true);
|
311 |
+
return $result;
|
312 |
+
}
|
313 |
+
|
314 |
+
|
315 |
+
|
316 |
+
function urlEncodeParameters($params)
|
317 |
+
{
|
318 |
+
assert(is_array($params));
|
319 |
+
|
320 |
+
ksort($params);
|
321 |
+
$args = array_map(function ($key, $value) {
|
322 |
+
return sprintf("%s=%s", rawurlencode($key), rawurlencode($value));
|
323 |
+
}, array_keys($params), array_values($params));
|
324 |
+
return implode("&", $args);
|
325 |
+
}
|
326 |
+
function canonicalize($method, $host, $path, $params, $now)
|
327 |
+
{
|
328 |
+
assert(is_string($method));
|
329 |
+
assert(is_string($host));
|
330 |
+
assert(is_string($path));
|
331 |
+
assert(is_array($params));
|
332 |
+
assert(is_string($now));
|
333 |
+
|
334 |
+
$args = urlEncodeParameters($params);
|
335 |
+
$canon = array($now, strtoupper($method), strtolower($host), $path, $args);
|
336 |
+
|
337 |
+
$canon = implode("\n", $canon);
|
338 |
+
|
339 |
+
return $canon;
|
340 |
+
}
|
341 |
+
function sign($msg, $key)
|
342 |
+
{
|
343 |
+
assert(is_string($msg));
|
344 |
+
assert(is_string($key));
|
345 |
+
|
346 |
+
return hash_hmac("sha1", $msg, $key);
|
347 |
+
}
|
348 |
+
|
349 |
+
function signParameters($method, $host, $path, $params, $skey, $ikey, $now)
|
350 |
+
{
|
351 |
+
assert(is_string($method));
|
352 |
+
assert(is_string($host));
|
353 |
+
assert(is_string($path));
|
354 |
+
assert(is_array($params));
|
355 |
+
assert(is_string($skey));
|
356 |
+
assert(is_string($ikey));
|
357 |
+
assert(is_string($now));
|
358 |
+
|
359 |
+
$canon = canonicalize($method, $host, $path, $params, $now);
|
360 |
+
|
361 |
+
$signature = sign($canon, $skey);
|
362 |
+
$auth = sprintf("%s:%s", $ikey, $signature);
|
363 |
+
$b64auth = base64_encode($auth);
|
364 |
+
|
365 |
+
return sprintf("Basic %s", $b64auth);
|
366 |
+
}
|
367 |
+
|
368 |
+
|
369 |
+
function makeRequest($method, $uri, $body, $headers,$host)
|
370 |
+
{
|
371 |
+
|
372 |
+
assert(is_string($method));
|
373 |
+
assert(is_string($uri));
|
374 |
+
assert(is_string($body) || is_null($body));
|
375 |
+
assert(is_array($headers));
|
376 |
+
$url = "https://" . $host . $uri;
|
377 |
+
|
378 |
+
$options = [
|
379 |
+
"timeout" => 10,
|
380 |
+
];
|
381 |
+
|
382 |
+
options($options);
|
383 |
+
$backoff_seconds = INITIAL_BACKOFF_SECONDS;
|
384 |
+
while (true) {
|
385 |
+
$result = execute($url, $method, $headers, $body);
|
386 |
+
|
387 |
+
if ($result["http_status_code"] != RATE_LIMIT_HTTP_CODE || $backoff_seconds > MAX_BACKOFF_SECONDS) {
|
388 |
+
return $result;
|
389 |
+
}
|
390 |
+
|
391 |
+
mo2f_sleep($backoff_seconds + (rand(0, 1000) / 1000.0));
|
392 |
+
$backoff_seconds *= BACKOFF_FACTOR;
|
393 |
+
}
|
394 |
+
}
|
395 |
+
function apiCall($method, $path, $params,$skey,$ikey,$host)
|
396 |
+
{
|
397 |
+
assert(is_string($method));
|
398 |
+
assert(is_string($path));
|
399 |
+
assert(is_array($params));
|
400 |
+
|
401 |
+
$now = date(DateTime::RFC2822);
|
402 |
+
|
403 |
+
$headers = [];
|
404 |
+
$headers["Date"] = $now;
|
405 |
+
$headers["Host"] = $host;
|
406 |
+
$headers["Authorization"] = signParameters(
|
407 |
+
$method,
|
408 |
+
$host,
|
409 |
+
$path,
|
410 |
+
$params,
|
411 |
+
$skey,
|
412 |
+
$ikey,
|
413 |
+
$now
|
414 |
+
);
|
415 |
+
|
416 |
+
if (in_array($method, ["POST", "PUT"], true)) {
|
417 |
+
|
418 |
+
$body = http_build_query($params);
|
419 |
+
$headers["Content-Type"] = "application/x-www-form-urlencoded";
|
420 |
+
$headers["Content-Length"] = strval(strlen($body));
|
421 |
+
$uri = $path;
|
422 |
+
} else {
|
423 |
+
$body = null;
|
424 |
+
$uri = $path . (!empty($params) ? "?" . urlEncodeParameters($params) : "");
|
425 |
+
}
|
426 |
+
|
427 |
+
return makeRequest($method, $uri, $body, $headers,$host);
|
428 |
+
}
|
handler/twofa/two_fa_pass2login.php
CHANGED
@@ -783,6 +783,96 @@ class Miniorange_Password_2Factor_Login {
|
|
783 |
|
784 |
}
|
785 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
786 |
function mo2f_inline_setup_success($current_user_id,$redirect_to,$session_id){
|
787 |
global $Mo2fdbQueries;
|
788 |
$Mo2fdbQueries->update_user_details( $current_user_id, array('mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS') );
|
@@ -1191,7 +1281,22 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1191 |
}
|
1192 |
|
1193 |
|
1194 |
-
}else{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1195 |
//inline for others
|
1196 |
if(!MO2F_IS_ONPREM or $selected_method == 'MOBILE AUTHENTICATION' or $selected_method == 'PUSH NOTIFICATIONS' or $selected_method == 'SOFT TOKEN' )
|
1197 |
{
|
@@ -1404,6 +1509,45 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1404 |
$this->mo2f_pass2login_kba_verification( $user_id, $redirect_to,$session_id_encrypt );
|
1405 |
}
|
1406 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1407 |
function check_miniorange_mobile_validation($POSTED){
|
1408 |
/*check mobile validation */
|
1409 |
|
@@ -1469,6 +1613,66 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1469 |
|
1470 |
}
|
1471 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1472 |
function check_miniorange_forgotphone($POSTED){
|
1473 |
$nonce = $POSTED['miniorange_forgotphone'];
|
1474 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
|
@@ -1979,10 +2183,26 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1979 |
$this->check_miniorange_mobile_validation($_POST);
|
1980 |
break;
|
1981 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1982 |
case 'miniorange_mobile_validation_failed':
|
1983 |
$this->check_miniorange_mobile_validation_failed($_POST);
|
1984 |
break;
|
1985 |
|
|
|
|
|
|
|
|
|
1986 |
case 'miniorange_softtoken':
|
1987 |
$this->check_miniorange_softtoken($_POST);
|
1988 |
|
@@ -2025,7 +2245,12 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2025 |
case 'miniorange_inline_complete_mobile':
|
2026 |
$this->mo2f_inline_validate_mobile_authentication();
|
2027 |
break;
|
2028 |
-
|
|
|
|
|
|
|
|
|
|
|
2029 |
case 'mo2f_inline_kba_option':
|
2030 |
$this->mo2f_inline_validate_kba();
|
2031 |
break;
|
@@ -2265,6 +2490,13 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2265 |
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
|
2266 |
exit;
|
2267 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2268 |
case 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL':
|
2269 |
mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt );
|
2270 |
exit;
|
@@ -2529,6 +2761,19 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2529 |
|
2530 |
}
|
2531 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2532 |
function mo2f_pass2login_push_oobemail_verification( $current_user, $mo2f_second_factor, $redirect_to, $session_id=null ) {
|
2533 |
|
2534 |
global $Mo2fdbQueries;
|
@@ -2920,6 +3165,8 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2920 |
$mo2f_second_factor = 'GOOGLE AUTHENTICATOR';
|
2921 |
else if($mo2f_second_factor == 'OTP Over SMS')
|
2922 |
$mo2f_second_factor = 'SMS';
|
|
|
|
|
2923 |
else if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
|
2924 |
$mo2f_second_factor = "EMAIL";
|
2925 |
|
@@ -2953,7 +3200,11 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2953 |
$this->mo2f_pass2login_otp_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
|
2954 |
} else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
|
2955 |
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
|
2956 |
-
}
|
|
|
|
|
|
|
|
|
2957 |
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
2958 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2959 |
else
|
@@ -3135,8 +3386,18 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
3135 |
global $Mo2fdbQueries;
|
3136 |
|
3137 |
$session_id = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
3138 |
-
|
3139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3140 |
$mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $currentuser->ID );
|
3141 |
$cloud_methods = array("MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","SOFT TOKEN");
|
3142 |
if (MO2F_IS_ONPREM && $mo2f_configured_2FA_method=='Security Questions')
|
@@ -3194,7 +3455,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
3194 |
|
3195 |
if(isset($_POST['mo_woocommerce_login_prompt'])){
|
3196 |
|
3197 |
-
$this->miniorange_initiate_2nd_factor( $currentuser, "",
|
3198 |
}
|
3199 |
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3200 |
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Please enter the One Time Passcode', );
|
@@ -3211,9 +3472,6 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
3211 |
}
|
3212 |
$attributes = isset( $_POST['miniorange_rba_attribures'] ) ? $_POST['miniorange_rba_attribures'] : null;
|
3213 |
$session_id = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
3214 |
-
|
3215 |
-
$redirect_to = isset( $_REQUEST['redirect_to'] ) ? esc_url_raw($_REQUEST['redirect_to']) : null;
|
3216 |
-
|
3217 |
if(is_null($session_id)) {
|
3218 |
$session_id=$this->create_session();
|
3219 |
}
|
783 |
|
784 |
}
|
785 |
|
786 |
+
function mo2f_duo_mobile_send_push_notification_for_inline_form(){
|
787 |
+
if(isset($_POST['duo_mobile_send_push_notification_inline_form_nonce'])){
|
788 |
+
$nonce = sanitize_text_field($_POST['duo_mobile_send_push_notification_inline_form_nonce']);
|
789 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-send-duo-push-notification-inline-nonce' ) ) {
|
790 |
+
$error = new WP_Error();
|
791 |
+
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
792 |
+
return $error;
|
793 |
+
} else {
|
794 |
+
|
795 |
+
global $Mo2fdbQueries;
|
796 |
+
$this->miniorange_pass2login_start_session();
|
797 |
+
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
798 |
+
MO2f_Utility::unset_temp_user_details_in_table( 'mo2f_transactionId',$session_id_encrypt );
|
799 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
800 |
+
$redirect_to = isset( $_POST['redirect_to'] ) ? esc_url_raw($_POST['redirect_to']) : null;
|
801 |
+
|
802 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
803 |
+
'mobile_registration_status' =>true,
|
804 |
+
) );
|
805 |
+
$mo2fa_login_message = '';
|
806 |
+
|
807 |
+
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
808 |
+
|
809 |
+
|
810 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
811 |
+
|
812 |
+
}
|
813 |
+
}
|
814 |
+
}
|
815 |
+
|
816 |
+
function mo2f_inline_validate_duo_authentication(){
|
817 |
+
if(isset($_POST['mo_auth_inline_duo_auth_mobile_registration_complete_nonce'])){
|
818 |
+
$nonce = sanitize_text_field($_POST['mo_auth_inline_duo_auth_mobile_registration_complete_nonce']);
|
819 |
+
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-inline-duo_auth-registration-complete-nonce' ) ) {
|
820 |
+
$error = new WP_Error();
|
821 |
+
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
822 |
+
return $error;
|
823 |
+
} else {
|
824 |
+
|
825 |
+
global $Mo2fdbQueries;
|
826 |
+
$this->miniorange_pass2login_start_session();
|
827 |
+
$session_id_encrypt = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
828 |
+
MO2f_Utility::unset_temp_user_details_in_table( 'mo2f_transactionId',$session_id_encrypt );
|
829 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
830 |
+
$redirect_to = isset( $_POST['redirect_to'] ) ? esc_url_raw($_POST['redirect_to']) : null;
|
831 |
+
$selected_2factor_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$user_id);
|
832 |
+
$email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user_id);
|
833 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
834 |
+
'mobile_registration_status' =>true,
|
835 |
+
) );
|
836 |
+
$mo2fa_login_message = '';
|
837 |
+
|
838 |
+
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_duo_handler.php';
|
839 |
+
$ikey = get_site_option('mo2f_d_integration_key');
|
840 |
+
$skey = get_site_option('mo2f_d_secret_key');
|
841 |
+
$host = get_site_option('mo2f_d_api_hostname');
|
842 |
+
|
843 |
+
|
844 |
+
|
845 |
+
$duo_preauth = preauth( $email ,true, $skey, $ikey, $host);
|
846 |
+
|
847 |
+
|
848 |
+
if(isset($duo_preauth['response']['stat']) && $duo_preauth['response']['stat'] == 'OK'){
|
849 |
+
|
850 |
+
if(isset($duo_preauth['response']['response']['status_msg']) && $duo_preauth['response']['response']['status_msg'] == 'Account is active'){
|
851 |
+
$mo2fa_login_message = $email.' user is already exists, please go for step B duo will send push notification on your configured mobile.';
|
852 |
+
|
853 |
+
}else if(isset($duo_preauth['response']['response']['enroll_portal_url'])){
|
854 |
+
$duo_enroll_url = $duo_preauth['response']['response']['enroll_portal_url'];
|
855 |
+
update_user_meta( $user_id , 'user_not_enroll_on_duo_before', $duo_enroll_url );
|
856 |
+
update_user_meta( $user_id , 'user_not_enroll', true );
|
857 |
+
|
858 |
+
}else{
|
859 |
+
$mo2fa_login_message = 'Your account is inactive from duo side, please contact to your administrator.';
|
860 |
+
}
|
861 |
+
|
862 |
+
}else{
|
863 |
+
$mo2fa_login_message = 'Error through during preauth.';
|
864 |
+
|
865 |
+
}
|
866 |
+
|
867 |
+
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
868 |
+
|
869 |
+
|
870 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
871 |
+
|
872 |
+
}
|
873 |
+
}
|
874 |
+
}
|
875 |
+
|
876 |
function mo2f_inline_setup_success($current_user_id,$redirect_to,$session_id){
|
877 |
global $Mo2fdbQueries;
|
878 |
$Mo2fdbQueries->update_user_details( $current_user_id, array('mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS') );
|
1281 |
}
|
1282 |
|
1283 |
|
1284 |
+
}else if($selected_method == "DUO PUSH NOTIFICATIONS"){
|
1285 |
+
$this->miniorange_pass2login_start_session();
|
1286 |
+
$mo2fa_login_message = '';
|
1287 |
+
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
1288 |
+
|
1289 |
+
$selected_method = "Duo Authenticator";
|
1290 |
+
|
1291 |
+
$Mo2fdbQueries->update_user_details( $current_user->ID, array(
|
1292 |
+
'mo2f_configured_2FA_method' =>$selected_method
|
1293 |
+
) );
|
1294 |
+
|
1295 |
+
|
1296 |
+
|
1297 |
+
|
1298 |
+
}
|
1299 |
+
else{
|
1300 |
//inline for others
|
1301 |
if(!MO2F_IS_ONPREM or $selected_method == 'MOBILE AUTHENTICATION' or $selected_method == 'PUSH NOTIFICATIONS' or $selected_method == 'SOFT TOKEN' )
|
1302 |
{
|
1509 |
$this->mo2f_pass2login_kba_verification( $user_id, $redirect_to,$session_id_encrypt );
|
1510 |
}
|
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();
|
1517 |
+
$error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
|
1518 |
+
return $error;
|
1519 |
+
} else {
|
1520 |
+
$this->miniorange_pass2login_start_session();
|
1521 |
+
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1522 |
+
//if the php session folder has insufficient permissions, cookies to be used
|
1523 |
+
// $mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId',$session_id_encrypt );
|
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 |
+
|
1532 |
+
}
|
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);
|
1546 |
+
|
1547 |
+
}
|
1548 |
+
|
1549 |
+
}
|
1550 |
+
|
1551 |
function check_miniorange_mobile_validation($POSTED){
|
1552 |
/*check mobile validation */
|
1553 |
|
1613 |
|
1614 |
}
|
1615 |
}
|
1616 |
+
|
1617 |
+
function check_mo2f_duo_authenticator_success_form($POSTED){
|
1618 |
+
if(isset($POSTED['mo2f_duo_authenticator_success_nonce'])){
|
1619 |
+
$nonce = sanitize_text_field($POSTED['mo2f_duo_authenticator_success_nonce']);
|
1620 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-duo-authenticator-success-nonce' ) ) {
|
1621 |
+
$error = new WP_Error();
|
1622 |
+
$error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
|
1623 |
+
return $error;
|
1624 |
+
} else {
|
1625 |
+
|
1626 |
+
global $Mo2fdbQueries;
|
1627 |
+
$this->miniorange_pass2login_start_session();
|
1628 |
+
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1629 |
+
MO2f_Utility::unset_temp_user_details_in_table( 'mo2f_transactionId',$session_id_encrypt );
|
1630 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
1631 |
+
$redirect_to = isset( $POSTED['redirect_to'] ) ? esc_url_raw($POSTED['redirect_to']) : null;
|
1632 |
+
$selected_2factor_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$user_id);
|
1633 |
+
$email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user_id);
|
1634 |
+
$mo2fa_login_message = '';
|
1635 |
+
|
1636 |
+
|
1637 |
+
delete_user_meta($user_id,'user_not_enroll');
|
1638 |
+
delete_site_option('current_user_email');
|
1639 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
1640 |
+
'mobile_registration_status' =>true,
|
1641 |
+
'mo2f_DuoAuthenticator_config_status' => true,
|
1642 |
+
'mo2f_configured_2FA_method' =>$selected_2factor_method ,
|
1643 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
1644 |
+
) );
|
1645 |
+
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
1646 |
+
|
1647 |
+
|
1648 |
+
$this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
1649 |
+
|
1650 |
+
}
|
1651 |
+
}
|
1652 |
+
}
|
1653 |
+
function check_inline_mo2f_duo_authenticator_error($POSTED){
|
1654 |
+
$nonce = $POSTED['mo2f_inline_duo_authentcator_error_nonce'];
|
1655 |
+
|
1656 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-inline-duo-authenticator-error-nonce' ) ) {
|
1657 |
+
$error = new WP_Error();
|
1658 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1659 |
+
|
1660 |
+
return $error;
|
1661 |
+
} else {
|
1662 |
+
global $Mo2fdbQueries;
|
1663 |
+
$this->miniorange_pass2login_start_session();
|
1664 |
+
$session_id_encrypt = isset( $POSTED['session_id'] ) ? sanitize_text_field($POSTED['session_id']) : null;
|
1665 |
+
MO2f_Utility::unset_temp_user_details_in_table( 'mo2f_transactionId',$session_id_encrypt );
|
1666 |
+
$user_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
1667 |
+
|
1668 |
+
|
1669 |
+
|
1670 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
1671 |
+
'mobile_registration_status' =>false,
|
1672 |
+
) );
|
1673 |
+
|
1674 |
+
}
|
1675 |
+
}
|
1676 |
function check_miniorange_forgotphone($POSTED){
|
1677 |
$nonce = $POSTED['miniorange_forgotphone'];
|
1678 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
|
2183 |
$this->check_miniorange_mobile_validation($_POST);
|
2184 |
break;
|
2185 |
|
2186 |
+
case 'miniorange_duo_push_validation':
|
2187 |
+
$this->check_miniorange_duo_push_validation($_POST);
|
2188 |
+
break;
|
2189 |
+
|
2190 |
+
case 'mo2f_inline_duo_authenticator_success_form':
|
2191 |
+
$this->check_mo2f_duo_authenticator_success_form($_POST);
|
2192 |
+
break;
|
2193 |
+
|
2194 |
+
case 'mo2f_inline_duo_authenticator_error':
|
2195 |
+
$this->check_inline_mo2f_duo_authenticator_error($_POST);
|
2196 |
+
break;
|
2197 |
+
|
2198 |
case 'miniorange_mobile_validation_failed':
|
2199 |
$this->check_miniorange_mobile_validation_failed($_POST);
|
2200 |
break;
|
2201 |
|
2202 |
+
case 'miniorange_duo_push_validation_failed':
|
2203 |
+
$this->check_miniorange_duo_push_validation_failed($_POST);
|
2204 |
+
break;
|
2205 |
+
|
2206 |
case 'miniorange_softtoken':
|
2207 |
$this->check_miniorange_softtoken($_POST);
|
2208 |
|
2245 |
case 'miniorange_inline_complete_mobile':
|
2246 |
$this->mo2f_inline_validate_mobile_authentication();
|
2247 |
break;
|
2248 |
+
case 'miniorange_inline_duo_auth_mobile_complete':
|
2249 |
+
$this->mo2f_inline_validate_duo_authentication();
|
2250 |
+
break;
|
2251 |
+
case 'duo_mobile_send_push_notification_for_inline_form':
|
2252 |
+
$this->mo2f_duo_mobile_send_push_notification_for_inline_form();
|
2253 |
+
break;
|
2254 |
case 'mo2f_inline_kba_option':
|
2255 |
$this->mo2f_inline_validate_kba();
|
2256 |
break;
|
2490 |
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id );
|
2491 |
exit;
|
2492 |
break;
|
2493 |
+
case 'MO_2_FACTOR_CHALLENGE_DUO_PUSH_NOTIFICATIONS':
|
2494 |
+
$user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
|
2495 |
+
mo2f_get_duo_push_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id
|
2496 |
+
);
|
2497 |
+
exit;
|
2498 |
+
break;
|
2499 |
+
|
2500 |
case 'MO_2_FACTOR_CHALLENGE_KBA_AND_OTP_OVER_EMAIL':
|
2501 |
mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt );
|
2502 |
exit;
|
2761 |
|
2762 |
}
|
2763 |
|
2764 |
+
function mo2f_pass2login_duo_push_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt ){
|
2765 |
+
global $Mo2fdbQueries;
|
2766 |
+
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_duo_handler.php';
|
2767 |
+
if (is_null($session_id_encrypt)){
|
2768 |
+
$session_id_encrypt=$this->create_session();
|
2769 |
+
}
|
2770 |
+
|
2771 |
+
$mo2fa_login_message ='';
|
2772 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_DUO_PUSH_NOTIFICATIONS';
|
2773 |
+
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null,$session_id_encrypt);
|
2774 |
+
|
2775 |
+
}
|
2776 |
+
|
2777 |
function mo2f_pass2login_push_oobemail_verification( $current_user, $mo2f_second_factor, $redirect_to, $session_id=null ) {
|
2778 |
|
2779 |
global $Mo2fdbQueries;
|
3165 |
$mo2f_second_factor = 'GOOGLE AUTHENTICATOR';
|
3166 |
else if($mo2f_second_factor == 'OTP Over SMS')
|
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 |
|
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
|
3386 |
global $Mo2fdbQueries;
|
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' ]) ) {
|
3393 |
+
$redirect_to = $_REQUEST[ '_wp_http_referer' ];
|
3394 |
+
} else {
|
3395 |
+
$redirect_to = wc_get_page_permalink( 'myaccount' );
|
3396 |
+
}
|
3397 |
+
}else{
|
3398 |
+
$redirect_to = isset($_REQUEST[ 'redirect_to' ]) ? $_REQUEST[ 'redirect_to' ] : (isset($_REQUEST[ 'redirect' ]) ? $_REQUEST[ 'redirect' ] : null);
|
3399 |
+
}
|
3400 |
+
$redirect_to = esc_url_raw($redirect_to);
|
3401 |
$mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $currentuser->ID );
|
3402 |
$cloud_methods = array("MOBILE AUTHENTICATION","PUSH NOTIFICATIONS","SOFT TOKEN");
|
3403 |
if (MO2F_IS_ONPREM && $mo2f_configured_2FA_method=='Security Questions')
|
3455 |
|
3456 |
if(isset($_POST['mo_woocommerce_login_prompt'])){
|
3457 |
|
3458 |
+
$this->miniorange_initiate_2nd_factor( $currentuser, "", $redirect_to,"",$session_id);
|
3459 |
}
|
3460 |
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
3461 |
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Please enter the One Time Passcode', );
|
3472 |
}
|
3473 |
$attributes = isset( $_POST['miniorange_rba_attribures'] ) ? $_POST['miniorange_rba_attribures'] : null;
|
3474 |
$session_id = isset( $_POST['session_id'] ) ? sanitize_text_field($_POST['session_id']) : null;
|
|
|
|
|
|
|
3475 |
if(is_null($session_id)) {
|
3476 |
$session_id=$this->create_session();
|
3477 |
}
|
handler/twofa/two_fa_settings.php
CHANGED
@@ -1669,7 +1669,48 @@ class Miniorange_Authentication {
|
|
1669 |
$this->mo_auth_show_error_message();
|
1670 |
}
|
1671 |
|
1672 |
-
}else if ( isset( $_POST['option'] ) &&
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1673 |
|
1674 |
$nonce = sanitize_text_field($_POST['mo2f_validate_google_authy_test_nonce']);
|
1675 |
|
@@ -1856,7 +1897,36 @@ class Miniorange_Authentication {
|
|
1856 |
|
1857 |
}
|
1858 |
}
|
1859 |
-
}else if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1860 |
$nonce = $_POST['mo2f_configure_authy_authenticator_nonce'];
|
1861 |
|
1862 |
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-authy-authenticator-nonce' ) ) {
|
@@ -2545,9 +2615,124 @@ class Miniorange_Authentication {
|
|
2545 |
}
|
2546 |
}
|
2547 |
|
2548 |
-
}else if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2549 |
|
2550 |
-
$nonce =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2551 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-save-form-auth-methods-nonce' ) ) {
|
2552 |
$error = new WP_Error();
|
2553 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
@@ -2571,7 +2756,7 @@ class Miniorange_Authentication {
|
|
2571 |
}
|
2572 |
$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" );
|
2573 |
$selected_2FA_method = sanitize_text_field($selected_2FA_method);
|
2574 |
-
|
2575 |
$Mo2fdbQueries->insert_user( $user->ID );
|
2576 |
if(MO2F_IS_ONPREM && ! in_array($selected_2FA_method, $onprem_methods) ){
|
2577 |
foreach ($cloud_methods as $cloud_method) {
|
@@ -2653,9 +2838,11 @@ class Miniorange_Authentication {
|
|
2653 |
$selected_2FA_method = 'OTP Over Telegram';
|
2654 |
if($selected_2FA_method == 'OTPOverWhatsapp')
|
2655 |
$selected_2FA_method = 'OTP Over Whatsapp';
|
|
|
|
|
2656 |
}
|
2657 |
|
2658 |
-
|
2659 |
$is_customer_registered = 1;
|
2660 |
|
2661 |
if ( $is_customer_registered ) {
|
@@ -2674,6 +2861,8 @@ class Miniorange_Authentication {
|
|
2674 |
$selected_2FA_method = 'OTP Over Telegram';
|
2675 |
if($selected_2FA_method == 'OTPOverWhatsapp')
|
2676 |
$selected_2FA_method = 'OTP Over Whatsapp';
|
|
|
|
|
2677 |
if ( $selected_action == "select2factor" ) {
|
2678 |
|
2679 |
if ( $selected_2FA_method == 'OTP Over SMS' && $user_phone == 'false' ) {
|
@@ -3026,6 +3215,9 @@ class Miniorange_Authentication {
|
|
3026 |
} else if ( $selected_2FA_method == 'Email Verification' ) {
|
3027 |
$this->miniorange_email_verification_call( $user );
|
3028 |
}
|
|
|
|
|
|
|
3029 |
|
3030 |
|
3031 |
update_user_meta( $user->ID, 'mo2f_2FA_method_to_test', $selected_2FA_method );
|
1669 |
$this->mo_auth_show_error_message();
|
1670 |
}
|
1671 |
|
1672 |
+
}else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_duo_authenticator_success_form' ) {
|
1673 |
+
$nonce = $_POST['mo2f_duo_authenticator_success_nonce'];
|
1674 |
+
|
1675 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-duo-authenticator-success-nonce' ) ) {
|
1676 |
+
$error = new WP_Error();
|
1677 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1678 |
+
|
1679 |
+
return $error;
|
1680 |
+
}else{
|
1681 |
+
|
1682 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1683 |
+
|
1684 |
+
delete_user_meta( $user->ID, 'test_2FA' );
|
1685 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
1686 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
1687 |
+
'mo2f_DuoAuthenticator_config_status' => true
|
1688 |
+
) );
|
1689 |
+
|
1690 |
+
$this->mo_auth_show_success_message();
|
1691 |
+
|
1692 |
+
}
|
1693 |
+
}else if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_duo_authenticator_error' ) { //push and out of band email denied
|
1694 |
+
$nonce = $_POST['mo2f_duo_authentcator_error_nonce'];
|
1695 |
+
|
1696 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-duo-authenticator-error-nonce' ) ) {
|
1697 |
+
$error = new WP_Error();
|
1698 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1699 |
+
|
1700 |
+
return $error;
|
1701 |
+
} else {
|
1702 |
+
global $Mo2fdbQueries;
|
1703 |
+
|
1704 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "DENIED_DUO_REQUEST" ) );
|
1705 |
+
delete_user_meta( $user->ID, 'test_2FA' );
|
1706 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
1707 |
+
'mobile_registration_status' =>false,
|
1708 |
+
) );
|
1709 |
+
$this->mo_auth_show_error_message();
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
}
|
1713 |
+
else if ( isset( $_POST['option'] ) && sanitize_text_field($_POST['option']) == 'mo2f_validate_google_authy_test' ) {
|
1714 |
|
1715 |
$nonce = sanitize_text_field($_POST['mo2f_validate_google_authy_test_nonce']);
|
1716 |
|
1897 |
|
1898 |
}
|
1899 |
}
|
1900 |
+
}else if(isset( $_POST['option'] ) && sanitize_text_field($_POST['option']) == 'mo2f_configure_duo_authenticator_validate_nonce'){
|
1901 |
+
|
1902 |
+
$nonce = sanitize_text_field($_POST['mo2f_configure_duo_authenticator_validate_nonce']);
|
1903 |
+
|
1904 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-duo-authenticator-validate-nonce' ) ) {
|
1905 |
+
$error = new WP_Error();
|
1906 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
1907 |
+
|
1908 |
+
return $error;
|
1909 |
+
}else{
|
1910 |
+
|
1911 |
+
delete_user_meta( $user->ID, 'mo2f_2FA_method_to_configure' );
|
1912 |
+
|
1913 |
+
delete_user_meta( $user->ID, 'configure_2FA' );
|
1914 |
+
delete_user_meta($user->ID,'user_not_enroll');
|
1915 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
1916 |
+
'mo2f_DuoAuthenticator_config_status' => true,
|
1917 |
+
|
1918 |
+
'mo2f_configured_2FA_method' => "Duo Authenticator",
|
1919 |
+
'user_registration_with_miniorange' => 'SUCCESS',
|
1920 |
+
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
1921 |
+
) );
|
1922 |
+
|
1923 |
+
update_user_meta( $user->ID, 'mo2f_external_app_type', "Duo Authenticator" );
|
1924 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "VALIDATE_DUO" ) );
|
1925 |
+
$this->mo_auth_show_success_message();
|
1926 |
+
}
|
1927 |
+
|
1928 |
+
}
|
1929 |
+
else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_authy_authenticator' ) {
|
1930 |
$nonce = $_POST['mo2f_configure_authy_authenticator_nonce'];
|
1931 |
|
1932 |
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-authy-authenticator-nonce' ) ) {
|
2615 |
}
|
2616 |
}
|
2617 |
|
2618 |
+
}else if(isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_duo_authenticator'){
|
2619 |
+
|
2620 |
+
$nonce = $_POST['mo2f_configure_duo_authenticator_nonce'];
|
2621 |
+
|
2622 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-duo-authenticator' ) ) {
|
2623 |
+
$error = new WP_Error();
|
2624 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2625 |
+
|
2626 |
+
return $error;
|
2627 |
+
} else {
|
2628 |
+
if($_POST['ikey'] == '' || $_POST['skey'] == '' || $_POST['apihostname'] == '' ){
|
2629 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Some field is missing, please fill all required details." ) );
|
2630 |
+
$this->mo_auth_show_error_message();
|
2631 |
+
return;
|
2632 |
+
}else{
|
2633 |
+
update_site_option('mo2f_d_integration_key',isset($_POST['ikey'])? sanitize_text_field($_POST['ikey']):'');
|
2634 |
+
update_site_option('mo2f_d_secret_key',isset($_POST['skey'])? sanitize_text_field($_POST['skey']):'');
|
2635 |
+
update_site_option('mo2f_d_api_hostname',isset($_POST['apihostname'])? sanitize_text_field($_POST['apihostname']):'');
|
2636 |
+
|
2637 |
+
$ikey = sanitize_text_field($_POST['ikey']);
|
2638 |
+
$skey = sanitize_text_field($_POST['skey']);
|
2639 |
+
$host = sanitize_text_field($_POST['apihostname']);
|
2640 |
+
|
2641 |
+
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_duo_handler.php';
|
2642 |
+
|
2643 |
+
|
2644 |
+
$duo_up_response = ping($skey,$ikey,$host);
|
2645 |
+
|
2646 |
+
if($duo_up_response['response']['stat'] == 'OK'){
|
2647 |
+
|
2648 |
+
$duo_check_credentials = check($skey, $ikey, $host);
|
2649 |
+
|
2650 |
+
if($duo_check_credentials['response']['stat'] == 'OK'){
|
2651 |
+
|
2652 |
+
|
2653 |
+
}else{
|
2654 |
+
|
2655 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Not the valid credential, please enter valid keys" ) );
|
2656 |
+
$this->mo_auth_show_error_message();
|
2657 |
+
return;
|
2658 |
+
}
|
2659 |
+
|
2660 |
+
}else{
|
2661 |
+
|
2662 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Duo server is not responding right now, please try after some time" ) );
|
2663 |
+
$this->mo_auth_show_error_message();
|
2664 |
+
return;
|
2665 |
+
}
|
2666 |
+
update_site_option('duo_credentials_save_successfully',1);
|
2667 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Setting saved successfully." ) );
|
2668 |
+
$this->mo_auth_show_success_message();
|
2669 |
+
return;
|
2670 |
+
}
|
2671 |
+
}
|
2672 |
+
}else if(isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_configure_duo_authenticator_abc'){
|
2673 |
+
|
2674 |
+
$nonce = $_POST['mo2f_configure_duo_authenticator_nonce'];
|
2675 |
+
|
2676 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-configure-duo-authenticator-nonce' ) ) {
|
2677 |
+
$error = new WP_Error();
|
2678 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2679 |
+
|
2680 |
+
return $error;
|
2681 |
+
}else{
|
2682 |
+
include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_duo_handler.php';
|
2683 |
+
$ikey = get_site_option('mo2f_d_integration_key');
|
2684 |
+
$skey = get_site_option('mo2f_d_secret_key');
|
2685 |
+
$host = get_site_option('mo2f_d_api_hostname');
|
2686 |
+
|
2687 |
+
$user_email = $user->user_email;
|
2688 |
+
|
2689 |
+
$duo_preauth = preauth( $user_email ,true, $skey, $ikey, $host);
|
2690 |
+
|
2691 |
+
|
2692 |
+
if($duo_preauth['response']['stat'] == 'OK'){
|
2693 |
+
|
2694 |
+
if(isset($duo_preauth['response']['response']['status_msg']) && $duo_preauth['response']['response']['status_msg'] == 'Account is active'){
|
2695 |
+
update_user_meta( $user->ID , 'user_not_enroll', true );
|
2696 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "This user is already available on duo, please send push notification to setup push notification as two factor." ) );
|
2697 |
+
$this->mo_auth_show_success_message();
|
2698 |
+
return;
|
2699 |
+
}else if(isset($duo_preauth['response']['response']['enroll_portal_url'])){
|
2700 |
+
|
2701 |
+
$duo_enroll_url = $duo_preauth['response']['response']['enroll_portal_url'];
|
2702 |
+
update_user_meta( $user->ID , 'user_not_enroll_on_duo_before', $duo_enroll_url );
|
2703 |
+
update_user_meta( $user->ID , 'user_not_enroll', true );
|
2704 |
+
}else{
|
2705 |
+
|
2706 |
+
|
2707 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Your account is inactive from duo side, please contact to your administrator." ) );
|
2708 |
+
$this->mo_auth_show_error_message();
|
2709 |
+
return;
|
2710 |
+
}
|
2711 |
+
|
2712 |
+
}else{
|
2713 |
+
|
2714 |
+
|
2715 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "Invalid or missing parameters, or a user with this name already exists." ) );
|
2716 |
+
$this->mo_auth_show_error_message();
|
2717 |
+
return;
|
2718 |
+
|
2719 |
+
}
|
2720 |
+
}
|
2721 |
+
}else if(isset( $_POST['option'] ) && $_POST['option'] == 'duo_mobile_send_push_notification_inside_plugin'){
|
2722 |
|
2723 |
+
$nonce = $_POST['duo_mobile_send_push_notification_inside_plugin_nonce'];
|
2724 |
+
|
2725 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-send-duo-push-notification-inside-plugin-nonce' ) ) {
|
2726 |
+
$error = new WP_Error();
|
2727 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
2728 |
+
|
2729 |
+
return $error;
|
2730 |
+
}else{
|
2731 |
+
|
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();
|
2738 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
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','OTPOverWhatsapp','DuoAuthenticator');
|
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) {
|
2838 |
$selected_2FA_method = 'OTP Over Telegram';
|
2839 |
if($selected_2FA_method == 'OTPOverWhatsapp')
|
2840 |
$selected_2FA_method = 'OTP Over Whatsapp';
|
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 ) {
|
2861 |
$selected_2FA_method = 'OTP Over Telegram';
|
2862 |
if($selected_2FA_method == 'OTPOverWhatsapp')
|
2863 |
$selected_2FA_method = 'OTP Over Whatsapp';
|
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' ) {
|
3215 |
} else if ( $selected_2FA_method == 'Email Verification' ) {
|
3216 |
$this->miniorange_email_verification_call( $user );
|
3217 |
}
|
3218 |
+
else if($selected_2FA_method == 'Duo Authenticator'){
|
3219 |
+
|
3220 |
+
}
|
3221 |
|
3222 |
|
3223 |
update_user_meta( $user->ID, 'mo2f_2FA_method_to_test', $selected_2FA_method );
|
helper/constants.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
const ERR_403 = "403";
|
12 |
const DEFAULT_CUSTOMER_KEY = "16555";
|
13 |
const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
|
14 |
-
const DB_VERSION =
|
15 |
const DB_FEATURE_MAIL = 1;
|
16 |
const SUPPORT_EMAIL = 'info@xecurify.com';
|
17 |
const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
|
11 |
const ERR_403 = "403";
|
12 |
const DEFAULT_CUSTOMER_KEY = "16555";
|
13 |
const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
|
14 |
+
const DB_VERSION = 155;
|
15 |
const DB_FEATURE_MAIL = 1;
|
16 |
const SUPPORT_EMAIL = 'info@xecurify.com';
|
17 |
const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
|
includes/css/style_settings.css
CHANGED
@@ -346,6 +346,7 @@
|
|
346 |
{
|
347 |
text-align: center;
|
348 |
margin-top: -1%;
|
|
|
349 |
}
|
350 |
.mo_upgrade_toggle_2fa
|
351 |
{
|
@@ -423,7 +424,7 @@
|
|
423 |
border-radius:2%;
|
424 |
/* height:463px;
|
425 |
overflow: hidden;*/
|
426 |
-
width:
|
427 |
border:1px solid #ecebeb;
|
428 |
box-sizing:border-box;
|
429 |
text-align:center!important;
|
@@ -473,6 +474,7 @@
|
|
473 |
float: left;
|
474 |
border: 2px solid black;
|
475 |
border-top: none;
|
|
|
476 |
}
|
477 |
.mo_wpns_upgrade_title_2fa_lite
|
478 |
{
|
@@ -549,7 +551,7 @@
|
|
549 |
}
|
550 |
.mo_wpns_upgrade_pade_pricing
|
551 |
{
|
552 |
-
color: #
|
553 |
font-size: 350%;
|
554 |
}
|
555 |
.mo_wpns_upgrade_page_starting_price
|
@@ -1280,8 +1282,8 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1280 |
}*/
|
1281 |
.mo_wpns_upgrade_page_button
|
1282 |
{
|
1283 |
-
border: 2px solid
|
1284 |
-
background-color: #
|
1285 |
color: white;
|
1286 |
padding: 12px 0px;
|
1287 |
width: 50.5%;
|
@@ -1295,8 +1297,8 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1295 |
{
|
1296 |
/*border: 2px solid #74a9a7;*/
|
1297 |
/*background-color: #74a9a7;*/
|
1298 |
-
border: 2px solid #
|
1299 |
-
background-color: #
|
1300 |
color: white;
|
1301 |
cursor: pointer;
|
1302 |
/*box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);*/
|
@@ -3492,7 +3494,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3492 |
}
|
3493 |
.mo2f_active_plan
|
3494 |
{
|
3495 |
-
background-color: #
|
3496 |
border-radius: 50em;
|
3497 |
}
|
3498 |
.mo_wpns_upgrade_page_2fa_ns_styles
|
@@ -3655,15 +3657,18 @@ input:checked + .slider:before {
|
|
3655 |
}
|
3656 |
.mo2f_upgrade_main_div
|
3657 |
{
|
|
|
3658 |
background: white;
|
3659 |
width: 34.33%;
|
3660 |
min-height: 600px;
|
3661 |
margin: 1.5%;
|
3662 |
float: left;
|
|
|
3663 |
}
|
3664 |
.mo2f_upgrade_main_div:hover
|
3665 |
{
|
3666 |
-
|
|
|
3667 |
margin-top: 0%;
|
3668 |
transition: 1s;
|
3669 |
}
|
346 |
{
|
347 |
text-align: center;
|
348 |
margin-top: -1%;
|
349 |
+
margin-bottom: 2%;
|
350 |
}
|
351 |
.mo_upgrade_toggle_2fa
|
352 |
{
|
424 |
border-radius:2%;
|
425 |
/* height:463px;
|
426 |
overflow: hidden;*/
|
427 |
+
width:26%;
|
428 |
border:1px solid #ecebeb;
|
429 |
box-sizing:border-box;
|
430 |
text-align:center!important;
|
474 |
float: left;
|
475 |
border: 2px solid black;
|
476 |
border-top: none;
|
477 |
+
margin-bottom: 1em;
|
478 |
}
|
479 |
.mo_wpns_upgrade_title_2fa_lite
|
480 |
{
|
551 |
}
|
552 |
.mo_wpns_upgrade_pade_pricing
|
553 |
{
|
554 |
+
color: #2a80ca;
|
555 |
font-size: 350%;
|
556 |
}
|
557 |
.mo_wpns_upgrade_page_starting_price
|
1282 |
}*/
|
1283 |
.mo_wpns_upgrade_page_button
|
1284 |
{
|
1285 |
+
border: 2px solid ##2a80ca;
|
1286 |
+
background-color: #2a80ca;
|
1287 |
color: white;
|
1288 |
padding: 12px 0px;
|
1289 |
width: 50.5%;
|
1297 |
{
|
1298 |
/*border: 2px solid #74a9a7;*/
|
1299 |
/*background-color: #74a9a7;*/
|
1300 |
+
border: 2px solid #8d86f5;
|
1301 |
+
background-color: #8d86f5;
|
1302 |
color: white;
|
1303 |
cursor: pointer;
|
1304 |
/*box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);*/
|
3494 |
}
|
3495 |
.mo2f_active_plan
|
3496 |
{
|
3497 |
+
background-color: #7c9fcb;
|
3498 |
border-radius: 50em;
|
3499 |
}
|
3500 |
.mo_wpns_upgrade_page_2fa_ns_styles
|
3657 |
}
|
3658 |
.mo2f_upgrade_main_div
|
3659 |
{
|
3660 |
+
background: ffffffad;
|
3661 |
background: white;
|
3662 |
width: 34.33%;
|
3663 |
min-height: 600px;
|
3664 |
margin: 1.5%;
|
3665 |
float: left;
|
3666 |
+
width: 25%;
|
3667 |
}
|
3668 |
.mo2f_upgrade_main_div:hover
|
3669 |
{
|
3670 |
+
background: ffffffad;
|
3671 |
+
box-shadow:0 1px 0px 0px #c0c0c0;
|
3672 |
margin-top: 0%;
|
3673 |
transition: 1s;
|
3674 |
}
|
includes/css/upgrade.css
ADDED
@@ -0,0 +1,443 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.mo2fa_pricing_feature_collection_supporter{
|
2 |
+
height: 32em;
|
3 |
+
}
|
4 |
+
.mo2fa_pricing_head_supporter{
|
5 |
+
height: 4em;
|
6 |
+
padding: 2px 1px 1px 1px;
|
7 |
+
margin-bottom: 1em;
|
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;
|
20 |
+
}
|
21 |
+
.fa, .fas {
|
22 |
+
font-weight: 900;
|
23 |
+
margin-right: 21px;
|
24 |
+
margin-top: 1em;
|
25 |
+
color: #b6abab;
|
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 |
+
color: #00000;
|
42 |
+
font-weight: 500;
|
43 |
+
}
|
44 |
+
.mo2fa_sec{
|
45 |
+
width: 27em;
|
46 |
+
border-radius: 4px;
|
47 |
+
box-shadow: 1px 0px 11px 0px #ccc;
|
48 |
+
height: 70em;
|
49 |
+
border: 1px solid #ccc;
|
50 |
+
padding-top: 2em;
|
51 |
+
}
|
52 |
+
.mo2fa_upgrade_my_plan{
|
53 |
+
border: none;
|
54 |
+
top: 50%;
|
55 |
+
left: 50%;
|
56 |
+
color: white;
|
57 |
+
padding: 15px 32px;
|
58 |
+
width: auto;
|
59 |
+
min-width: 70%;
|
60 |
+
border-radius: 26px;
|
61 |
+
text-align: center;
|
62 |
+
text-decoration: none;
|
63 |
+
display: inline-block;
|
64 |
+
background: #2a80ca;
|
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;
|
73 |
+
}
|
74 |
+
.mo2fa_plugins{
|
75 |
+
width: 12%;
|
76 |
+
}
|
77 |
+
.mo2fa_pricing_tabs_mo{
|
78 |
+
width: auto;
|
79 |
+
border-radius: 4px;
|
80 |
+
height: 88em;
|
81 |
+
border: 1px solid #ccc;
|
82 |
+
padding-top: 2em;
|
83 |
+
}
|
84 |
+
.mo2fa_make_my_plan_mo{
|
85 |
+
border: none;
|
86 |
+
color: white;
|
87 |
+
padding: 15px 32px;
|
88 |
+
width: 55%;
|
89 |
+
border-radius: 26px;
|
90 |
+
text-align: center;
|
91 |
+
text-decoration: none;
|
92 |
+
display: inline-block;
|
93 |
+
background: #2a80ca;
|
94 |
+
font-size: 16px;
|
95 |
+
height: auto;
|
96 |
+
}
|
97 |
+
.mo2fa_make_my_plan_mo:hover{
|
98 |
+
border: none;
|
99 |
+
color: white;
|
100 |
+
background: #8d86f5;
|
101 |
+
}
|
102 |
+
.mo2fa_pricing_head_mo_2fa{
|
103 |
+
font-size: 33px;
|
104 |
+
font-weight: bold;
|
105 |
+
color: black;
|
106 |
+
margin-bottom: 3%;
|
107 |
+
/*margin-top: 10%;*/
|
108 |
+
}
|
109 |
+
.mo2fa_method-list-size{
|
110 |
+
font-size: 11px;
|
111 |
+
margin-bottom: -3px!important;
|
112 |
+
list-style: none!important;
|
113 |
+
margin-left: 2em;
|
114 |
+
font-weight: 450;
|
115 |
+
}
|
116 |
+
|
117 |
+
.mo2fa_method-list-mo-size-cross{
|
118 |
+
font-size: 11px;
|
119 |
+
color: #b6abab;
|
120 |
+
margin-bottom: -3px!important;
|
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:auto;
|
145 |
+
min-width: 85%;
|
146 |
+
color: black;
|
147 |
+
font-size: 11px;
|
148 |
+
background: #c9dbdb75;
|
149 |
+
border-radius: 3px;
|
150 |
+
min-height: 27px;
|
151 |
+
margin-left: -10px;
|
152 |
+
margin-right: 3px;
|
153 |
+
}
|
154 |
+
.mo2fa_feature{
|
155 |
+
margin-top: -0.5em;
|
156 |
+
margin-bottom: 0.5em;
|
157 |
+
font-size:16px;
|
158 |
+
}
|
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;
|
165 |
+
margin-top: 1em;
|
166 |
+
font-weight:bold;
|
167 |
+
color:#4545ff;
|
168 |
+
text-align: center;
|
169 |
+
}
|
170 |
+
.mo2fa_class{
|
171 |
+
background: aliceblue;
|
172 |
+
width: 85%;
|
173 |
+
}
|
174 |
+
.mo2fa_pricing{
|
175 |
+
padding: 16px 55px 12px 41px;
|
176 |
+
margin-top: 9em;
|
177 |
+
height: 25em;
|
178 |
+
}
|
179 |
+
.mo2fa_pricing_p{
|
180 |
+
font-size: 10px;
|
181 |
+
margin-bottom: -21px;
|
182 |
+
}
|
183 |
+
.mo2fa_dollar{
|
184 |
+
font-size: 46px;
|
185 |
+
font-weight: 600;
|
186 |
+
padding: 5px 5px 5px 5px;
|
187 |
+
margin-top: 18px;
|
188 |
+
color:black;
|
189 |
+
}
|
190 |
+
.mo2fa_country{
|
191 |
+
margin-top: 2px;
|
192 |
+
}
|
193 |
+
.mo2fa_payment_p{
|
194 |
+
font-size: 110%;
|
195 |
+
}
|
196 |
+
.mo2fa_card{
|
197 |
+
size: landscape;
|
198 |
+
width: 100px;
|
199 |
+
height: 27px;
|
200 |
+
margin-bottom: 4px;
|
201 |
+
margin-top: 4px;
|
202 |
+
opacity: 1;
|
203 |
+
padding-left: 8px;
|
204 |
+
}
|
205 |
+
.mo2fa_hr{
|
206 |
+
border-top: 2px solid #143af4;
|
207 |
+
}
|
208 |
+
.mo2fa_form_control1{
|
209 |
+
border-radius:5px;
|
210 |
+
width:70%;
|
211 |
+
}
|
212 |
+
.mo2fa_starting_from{
|
213 |
+
font-size: 10px;
|
214 |
+
margin-left: -24px;
|
215 |
+
/*margin-top: -17px;*/
|
216 |
+
}
|
217 |
+
.mo2fa_center{
|
218 |
+
text-align: center;
|
219 |
+
}
|
220 |
+
.mo2fa_pricing_tabs_mo_premium_lite{
|
221 |
+
background: ffffffad;
|
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;
|
230 |
+
}
|
231 |
+
.mo2fa_pricing_tabs_mo_enterprise{
|
232 |
+
background: ffffffad;
|
233 |
+
border: none!important;
|
234 |
+
}
|
235 |
+
.mo2f_upgrade_super_div{
|
236 |
+
display: flex;
|
237 |
+
justify-content: center;
|
238 |
+
align-content: center;
|
239 |
+
}
|
240 |
+
.mo2fa_recommended{
|
241 |
+
width: 100%;
|
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;
|
249 |
+
margin-bottom: 2em;
|
250 |
+
padding: 10px 1px 1px 1px;
|
251 |
+
}
|
252 |
+
.mo2fa_purchase_limit_mo{
|
253 |
+
font-size: 16px;
|
254 |
+
}
|
255 |
+
.mo2fa_pricing_head_h5{
|
256 |
+
margin :0.67em;
|
257 |
+
}
|
258 |
+
.mo2fa_h4{
|
259 |
+
font-size: 1.5em;
|
260 |
+
margin: 0.33em 0;
|
261 |
+
font-weight: 400;
|
262 |
+
}
|
263 |
+
.mo2fa_note_color{
|
264 |
+
color: red;
|
265 |
+
}
|
266 |
+
.mo2fa_note{
|
267 |
+
font-size:17px;
|
268 |
+
}
|
269 |
+
.mo2fa_setting_layout{
|
270 |
+
width: 81.5%;
|
271 |
+
margin-left: 8%;
|
272 |
+
margin-top: 1%;
|
273 |
+
box-shadow: 0px 2px 25px 0px #ccc;
|
274 |
+
}
|
275 |
+
.mo2fa_bank_transfer{
|
276 |
+
height: 28px;
|
277 |
+
width:auto;
|
278 |
+
}
|
279 |
+
.category_feature_mo_2fa{
|
280 |
+
font-size: 16px;
|
281 |
+
font-weight: 600;
|
282 |
+
padding-bottom: 0.3em;
|
283 |
+
padding-top: 0.3em;
|
284 |
+
}
|
285 |
+
.mo2fa_main_category_header{
|
286 |
+
background: #d5d5d5!important;
|
287 |
+
margin-top: 0.3em;
|
288 |
+
margin-bottom: 0.3em;
|
289 |
+
}
|
290 |
+
.bg_category_main_mo_2fa{
|
291 |
+
font-size: 17px;
|
292 |
+
border :0.5px solid #c1c1c1 ;
|
293 |
+
background: #c9dbdb!important
|
294 |
+
}
|
295 |
+
.description_mo_2fa{
|
296 |
+
font-size: 13px!important;
|
297 |
+
font-weight: 400;
|
298 |
+
}
|
299 |
+
table.mo2fa_table_features{
|
300 |
+
border: 1px 1px 1px 1px;
|
301 |
+
}
|
302 |
+
table.mo2fa_table_features th,table.mo2fa_table_features tr{
|
303 |
+
text-align: left;
|
304 |
+
padding-left: 1em;
|
305 |
+
padding-right: 1em;
|
306 |
+
height:25px;
|
307 |
+
}
|
308 |
+
table.mo2fa_table_features,table.mo2fa_table_features th,table.mo2fa_table_features td {
|
309 |
+
border-left: 1px solid #c1c1c1;
|
310 |
+
border-right: 1px solid #c1c1c1;
|
311 |
+
border-collapse: collapse;
|
312 |
+
}
|
313 |
+
table.mo2fa_table_features tr:nth-child(odd){
|
314 |
+
background-color: #f6f6f6;
|
315 |
+
}
|
316 |
+
table.mo2fa_table_features tr:last-child
|
317 |
+
{
|
318 |
+
border-bottom: 1px solid #c1c1c1;
|
319 |
+
}
|
320 |
+
.mo2fa_hide{
|
321 |
+
display: none !important
|
322 |
+
}
|
323 |
+
|
324 |
+
.mo2fa_hide1{
|
325 |
+
display: none;
|
326 |
+
}
|
327 |
+
.mo2fa_comparison{
|
328 |
+
font-size: 18px;
|
329 |
+
width: 20%;
|
330 |
+
}
|
331 |
+
.mo2fa_compare1{
|
332 |
+
min-width: 22%!important;
|
333 |
+
width:10%;
|
334 |
+
}
|
335 |
+
.mo2fa_tooltip_methodlist {
|
336 |
+
position: relative;
|
337 |
+
display: inline-block;
|
338 |
+
}
|
339 |
+
|
340 |
+
.mo2fa_tooltip_methodlist .methodlist {
|
341 |
+
visibility: hidden;
|
342 |
+
width: 15em;
|
343 |
+
background-color: #000000b8;
|
344 |
+
color: #fff;
|
345 |
+
text-align: left;
|
346 |
+
border-radius: 6px;
|
347 |
+
padding: 7px 0px 8px 61px;
|
348 |
+
position: absolute;
|
349 |
+
z-index: 1;
|
350 |
+
top: -141px;
|
351 |
+
left: 107%;
|
352 |
+
}
|
353 |
+
|
354 |
+
.mo2fa_tooltip_methodlist .methodlist::after {
|
355 |
+
content: "";
|
356 |
+
position: absolute;
|
357 |
+
top: 50%;
|
358 |
+
right: 100%;
|
359 |
+
margin-top: -5px;
|
360 |
+
border-width: 5px;
|
361 |
+
border-style: solid;
|
362 |
+
border-color: transparent black transparent transparent;
|
363 |
+
}
|
364 |
+
.mo2fa_tooltip_methodlist:hover .methodlist {
|
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: 7px 0px 8px 61px;
|
381 |
+
position: absolute;
|
382 |
+
z-index: 1;
|
383 |
+
top: -11em;
|
384 |
+
left: 107%;
|
385 |
+
}
|
386 |
+
|
387 |
+
.mo2fa_tooltip_methodlist .methodlist::after {
|
388 |
+
content: "";
|
389 |
+
position: absolute;
|
390 |
+
top: 50%;
|
391 |
+
right: 100%;
|
392 |
+
margin-top: -5px;
|
393 |
+
border-width: 5px;
|
394 |
+
border-style: solid;
|
395 |
+
border-color: transparent black transparent transparent;
|
396 |
+
}
|
397 |
+
.mo2fa_tooltip_methodlist:hover .methodlist {
|
398 |
+
visibility: visible;
|
399 |
+
}
|
400 |
+
.mo2fa_enterprise_getting_started{
|
401 |
+
margin-top: -1em;
|
402 |
+
}
|
403 |
+
.mo2fa_table-scrollbar{
|
404 |
+
overflow-y: scroll;
|
405 |
+
overflow-x:scroll;
|
406 |
+
height: 50%;
|
407 |
+
}
|
408 |
+
.mo2fa_fa-check{
|
409 |
+
color: #fff!important;
|
410 |
+
}
|
411 |
+
@media only screen and (max-width: 600px) {
|
412 |
+
.mo2f_upgrade_super_div{
|
413 |
+
display: block;
|
414 |
+
}
|
415 |
+
.mo2f_upgrade_main_div{
|
416 |
+
width: 96%;
|
417 |
+
margin-bottom: 6em;
|
418 |
+
height: 93em;
|
419 |
+
}
|
420 |
+
.mo2fa_compare1{
|
421 |
+
width: 101%;
|
422 |
+
margin-top: -2em;
|
423 |
+
}
|
424 |
+
.mo2fa_setting_layout{
|
425 |
+
margin-left: 4%;
|
426 |
+
}
|
427 |
+
.mo_2fa_card-deck{
|
428 |
+
display: block;
|
429 |
+
}
|
430 |
+
.mo_2fa_card{
|
431 |
+
width: 98%;
|
432 |
+
}
|
433 |
+
.mo_upgrade_toggle_2fa_lable{
|
434 |
+
font-size: 1em;
|
435 |
+
width: 12em;
|
436 |
+
}
|
437 |
+
.mo_wpns_upgrade_security_title{
|
438 |
+
width: 97%;
|
439 |
+
}
|
440 |
+
.mo_ns_features_only{
|
441 |
+
display: grid;
|
442 |
+
}
|
443 |
+
}
|
includes/images/authmethods/DuoAuthenticator.png
ADDED
Binary file
|
includes/images/bank-transfer.png
ADDED
Binary file
|
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.4.
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* Text Domain: miniorange-2-factor-authentication
|
@@ -15,7 +15,7 @@
|
|
15 |
|
16 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
17 |
|
18 |
-
define( 'MO2F_VERSION', '5.4.
|
19 |
define('MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
|
20 |
define( 'MO2F_TEST_MODE', false );
|
21 |
define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
|
@@ -494,6 +494,7 @@
|
|
494 |
require('handler/twofa/two_fa_short_custom.php');
|
495 |
require('controllers/wpns-loginsecurity-ajax.php');
|
496 |
require('controllers/malware_scanner/malware_scan_ajax.php');
|
|
|
497 |
require('controllers/backup/backup_ajax.php');
|
498 |
require('controllers/tour/tour_ajax.php');
|
499 |
require('controllers/twofa/two_factor_ajax.php');
|
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.4.33
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* Text Domain: miniorange-2-factor-authentication
|
15 |
|
16 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
17 |
|
18 |
+
define( 'MO2F_VERSION', '5.4.33' );
|
19 |
define('MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
|
20 |
define( 'MO2F_TEST_MODE', false );
|
21 |
define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
|
494 |
require('handler/twofa/two_fa_short_custom.php');
|
495 |
require('controllers/wpns-loginsecurity-ajax.php');
|
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 |
require('controllers/tour/tour_ajax.php');
|
500 |
require('controllers/twofa/two_factor_ajax.php');
|
readme.txt
CHANGED
@@ -1,30 +1,35 @@
|
|
1 |
-
=== Google Authenticator - WordPress Two Factor Authentication (2FA , MFA) ===
|
2 |
|
3 |
-
Contributors:
|
4 |
-
Tags: google authenticator, two factor authentication, OTP ,
|
5 |
Donate link: https://miniorange.com/
|
6 |
Requires at least: 3.0.1
|
7 |
-
Tested up to: 5.7
|
8 |
Requires PHP: 5.3.0
|
9 |
-
Stable tag: 5.4.
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
13 |
-
Google Authenticator
|
14 |
|
15 |
== Description ==
|
16 |
|
17 |
-
Google Authenticator - Two Factor Authentication (2FA) plugin provides a completely Secure login to your WordPress website. Google Authenticator-
|
18 |
|
19 |
-
|
20 |
-
Login and Registration: Verify users on login and Registration with different authentication methods like Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions and many others. Easy OTP Verification with SMS Verification and Email Verification. We provide complete two factor authentication security.
|
21 |
|
22 |
-
|
23 |
-
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.
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
* [bbpress form](https://wordpress.org/plugins/bbpress/) (Login bbpress using Google Authenticator - Two Factor Authentication (2FA))
|
29 |
* [Digimember](https://digimember.com/) (Login Digimember using Google Authenticator - Two Factor Authentication (2FA))
|
30 |
* [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) (Login Paid Memberships Pro using Google Authenticator - Two Factor Authentication (2FA))
|
@@ -33,12 +38,16 @@ You would not need to configure Google Authenticator and other Two Factor Authen
|
|
33 |
* [LearnDash](https://www.learndash.com/) (Login LearnDash using Google Authenticator - Two Factor Authentication (2FA))
|
34 |
* [LearnPress](https://wordpress.org/plugins/learnpress/) (Login LearnPress using Google Authenticator - Two Factor Authentication (2FA))
|
35 |
* [LifterLMS](https://wordpress.org/plugins/lifterlms/) (Login LifterLMS using Google Authenticator - Two Factor Authentication (2FA))
|
36 |
-
* [Dokan](https://wordpress.org/plugins/dokan-lite/) (Login Dokan using Google Authenticator -
|
37 |
* And many more
|
38 |
|
39 |
-
== WordPress login and registration forms support and integration for all methods of two factor authentication like Google Authenticator ==
|
40 |
* [Restrict Content Pro Form](https://wordpress.org/plugins/restrict-content/) (Register and Login Restrict Content Pro using Google Authenticator - Two Factor Authentication (2FA))
|
41 |
* [My theme Login Form](https://wordpress.org/plugins/theme-my-login/) (Login My theme Login using Google Authenticator - Two Factor Authentication (2FA))
|
|
|
|
|
|
|
|
|
42 |
* [User Registration – Custom Registration Form](https://wordpress.org/plugins/bbpress/) (Register and Login User Registration – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
|
43 |
* [Custom Login Page Customizer Form](https://wordpress.org/plugins/loginpress/) (Login Custom Login Page Customizer using Google Authenticator - Two Factor Authentication (2FA))
|
44 |
* [Admin Custom Login Form](https://wordpress.org/plugins/admin-custom-login/) (Login Admin Custom Login using Google Authenticator - Two Factor Authentication (2FA))
|
@@ -61,9 +70,9 @@ Others not listed gateway can be tested on our site, Test your Gateway: [Custom
|
|
61 |
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>.
|
62 |
|
63 |
|
64 |
-
= FREE Plugin Features =
|
65 |
* Simplified & easy user interface to setup Google Authenticator and other Two Factor Authentication ( 2FA ) methods.
|
66 |
-
* Google Authenticator - Two Factor Authentication (2FA) for **3 User** forever FREE!
|
67 |
* **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.
|
68 |
* Includes Language Translation Support. Supports a wide variety of languages for all methods of 2 factor like Google Authenticator
|
69 |
* Passwordless login or login with phone number, supported for Google Authenticator and other 2 Factor authentication methods.
|
@@ -75,11 +84,12 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
75 |
* OTP Verification of Ulimate Member Registartion form with methods like OTP Over SMS and Email, QR code Authentication.
|
76 |
* Recovery codes in case you are locked out for all Two Factor Authentication (TFA) methods like Google Authenticator, SMS verification.
|
77 |
* Supports multi factor authentication for methods such as Google authenticator, OTP over Email, OTP over SMS, QR code authentication and many more.
|
|
|
78 |
|
79 |
-
= Standard Lite Plugin Features =
|
80 |
|
81 |
-
* Google Authenticator - Two Factor Authentication (2FA) for all users and all user roles *( Site-based pricing )*
|
82 |
-
* **Available Two Factor Authentication Methods:**
|
83 |
* Includes language Translation Support. Supports wide variety of languages for two factor auhthentication.
|
84 |
* **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)
|
85 |
* **Unlimitted Email transactions:** Unlimitted Email transactions with your SMTP server.
|
@@ -88,7 +98,7 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
88 |
* 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)
|
89 |
* Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
|
90 |
|
91 |
-
= Premium Lite Plugin Features =
|
92 |
|
93 |
* Google Authenticator - Two Factor Authentication (2FA) for all users and all user roles *( Site-based pricing )*
|
94 |
* **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)*
|
@@ -109,7 +119,7 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
109 |
* **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
|
110 |
|
111 |
|
112 |
-
= Standard Plugin Features =
|
113 |
|
114 |
* Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
|
115 |
* **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)*
|
@@ -120,7 +130,7 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
120 |
* 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)
|
121 |
* Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
|
122 |
|
123 |
-
= Premium Plugin Features =
|
124 |
|
125 |
* Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
|
126 |
* **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)*
|
@@ -138,9 +148,9 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
138 |
* Remember Device to skip the two factor authentication( 2FA ) for trusted devices [Guide](https://docs.miniorange.com/documentation/remember-my-device)
|
139 |
* **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
|
140 |
|
141 |
-
= Enterprise Plugin Features =
|
142 |
|
143 |
-
* Google Authenticator - Two Factor Authentication (
|
144 |
* **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. *( SMS and Email credits need to be purchased as per the need)*
|
145 |
* Language Translation Support for two factor authenticaion.
|
146 |
* **Multiple Login Options:** Username + password + two factor Authentication (or) Username + two factor authentication i.e. Passwordless login.
|
@@ -158,20 +168,36 @@ Google Authenticator - Two factor authentication( 2 Factor ) is available for al
|
|
158 |
= PASSWORDLESS LOGIN ( login without password) =
|
159 |
Passwordless login is a new way of login in which you and your users can login without entering the password. The login can be done by username and 2 factor or only username which can be decided based on the user role. If a role is not allowed for passwordless login they will login with password and username. miniOrange supports many two factor authentication methods for passwordless login. You can use google authenticator, webauthn, fingerprint login, otp over sms and email for login without password.
|
160 |
|
161 |
-
= WebAuthn (FIDO2) Passwordless login =
|
162 |
WebAuthn is a browser-based API that allows for web applications to simplify and secure user authentication by using registered devices (phones, laptops, etc) as factors. It uses public key cryptography to protect users from advanced phishing attacks. It will allow you to provide your users an option for usernameless login. With the help of webauthn your users can login with fingerprint, FaceID, TouchID, etc.
|
163 |
|
164 |
-
= Device restriction with webauthn =
|
165 |
Webauthn allows you to restrict the number of devices per user. You can allow a user any number of devices they can use to login to your website. Webauthn also covers passwordless and usernameless login in which your users can login from the allowed device without password and username.
|
166 |
|
|
|
|
|
|
|
167 |
== Prevent Account Sharing Between Users ==
|
168 |
Many video sharing and E-learning platforms want to prevent sharing of account between the users. This can be done using miniOrange Two factor plugin (TFA) with WordPress 2FA methods like QR code Authentication , Mobile Verification, etc. Also, e-learning portals can use this to their advantage. It can be used on any websites which create and sell courses. It can be integrated with plugins like Learndash.
|
169 |
Other sites like premium video content or any premium content where you want users not to share passwords between friends and Family then you can go for this solution. Multiple two factor authentication methods are supported to achieve prevent account sharing.
|
170 |
|
171 |
-
== Multi factor authentication ( MFA ) ==
|
172 |
You can configure multiple WordPress 2FA methods like google authenticator, OTP over Email, OTP over SMS, etc and choose which method do you want to login to your website from a list of configured methods. Multi factor authentication is helpful for cases such as when you do not have your phone and cannot access your TOTP app for login. You can then use other method like OTP over Email to login.
|
173 |
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
* **Complete Web Security suite to protect wordpress from any attacks**
|
176 |
* **Web Application Firewall (WAF) : Wordpress Firewall to protect your site**
|
177 |
* **OWASP TOP 10 Protection**
|
@@ -196,9 +222,9 @@ You can configure multiple WordPress 2FA methods like google authenticator, OTP
|
|
196 |
|
197 |
Check all the features other than two factor authentication here: [miniOrange Website](https://security.miniorange.com/)
|
198 |
|
199 |
-
= Why do you need to register? =
|
200 |
|
201 |
-
miniOrange Two factor authentication Plugin (TFA) uses miniOrange APIs to communicate between your WP and miniOrange. To keep this communication secure, we ask you to register and assign you API keys specific to your account. This way your account and users calls can be only accessed by API keys assigned to you.
|
202 |
Adding to this, you can also use the same account on multiple applications and your users do not have to maintain multiple accounts or WordPress 2FA like Google Authenticator. Single code generated in Google Authenticator will be enough to login to all sites. With this you can also achieve sync of two factor authentication on multiple sites.
|
203 |
|
204 |
|
@@ -224,11 +250,13 @@ Adding to this, you can also use the same account on multiple applications and y
|
|
224 |
= Apps Supported by the two factor authentication plugin =
|
225 |
* Google Authenticator
|
226 |
* miniOrange Authenticator
|
227 |
-
* Duo Authenticator
|
228 |
* Microsoft Authenticator
|
229 |
* Authy 2 Factor Authenticator
|
230 |
* LastPass Authenticator
|
231 |
* FreeOTP Authenticator
|
|
|
|
|
232 |
|
233 |
<h4>Useful blog posts about two factor authenticaion ( 2FA ) plugin </h4>
|
234 |
*[Beginner’s Guide: How to Add Two Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
|
@@ -399,6 +427,12 @@ miniOrange authentication service has 15+ authentication methods.One time passco
|
|
399 |
|
400 |
== Changelog ==
|
401 |
|
|
|
|
|
|
|
|
|
|
|
|
|
402 |
= 5.4.32=
|
403 |
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
404 |
* Replaced sessions with transient.
|
@@ -1005,6 +1039,16 @@ More descriptive setup messages and UI changes.
|
|
1005 |
|
1006 |
== Upgrade Notice ==
|
1007 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1008 |
= 5.4.31=
|
1009 |
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
1010 |
* OTP over Email as two factor fix
|
1 |
+
=== miniOrange's Google Authenticator - WordPress Two Factor Authentication (2FA , MFA, OTP SMS and Email) | Passwordless login ===
|
2 |
|
3 |
+
Contributors: twofactor, cyberlord92, hsn97
|
4 |
+
Tags: google authenticator, two factor authentication, 2FA, OTP , two-factor, 2-factor authentication, multi factor authentication ,two-step verification, wp 2fa, two factor, mobile verification, TFA, MFA, 2 factor authentication, Multi factor authentication, Remember Device, WordPress otp, Clef,SMS, email, signup security, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions, login OTP, login with SMS, mobile login, phone login, OTP login, knowledge based authentication, authy, authy two factor , yubico, security, user security, Twilio WordPress, SMS gateway, Solutions Infini, FIDO, FIDO2, FIDO 2, Webauthn, Usernameless login ,Clickatell, BulkSMS, MSG91, Nexmo, SMS Country, message, woocommerce, website security, login security, multi factor, wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, SMS login, passwordless login, auth, login with OTP WordPress, OTP Over SMS and Email, two-step authentication, login without password, passwordless authentication, secure login, temporary login, temporary access, one time passcode, email verification, security, website security, login security, multi-factor authentication, woocommerce, smartphone, WordPress otp, register with OTP, user OTP verification, SMS OTP, OTP Email, registration with OTP verification, registration verification, smartphone authentication, Login with fingerprint, faceID, touchID, session restriction, device restriction, password free authentication,
|
5 |
Donate link: https://miniorange.com/
|
6 |
Requires at least: 3.0.1
|
7 |
+
Tested up to: 5.7.1
|
8 |
Requires PHP: 5.3.0
|
9 |
+
Stable tag: 5.4.33
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
13 |
+
**Google Authenticator**, Two Factor Authentication (2 Factor)/ Multi factor authentication, Two step verification, OTP verificaion - SMS and Email , mobile verification, Apps like Microsoft, Duo, LastPass & more on login and Registration for all forms. Google Authenticator also Supports QR Code, Push Notification and Security Questions along with the Google Authenticator itself. Google authenticator plugin can also be used for multi factor authentication.
|
14 |
|
15 |
== Description ==
|
16 |
|
17 |
+
**Google Authenticator** - Two Factor Authentication (2FA) / Multi factor authentication plugin provides a completely Secure login to your WordPress website. Google Authenticator - multi Factor Authentication (2FA) is a FREE, Simple & very easy to setup plugin. Google Authenticator ( 2FA ) provides two factor authentication (2FA, MFA) whenever login to your WordPress website ensuring no unauthorised access to your website. Google Authenticator - multi factor authentication can be configured for any TOTP based Authentication Method for providing addtional layer of security of Two Factor Authentication(multi factor authentication). miniOrange also supports OTP Over SMS and OTP Over Email for login and registration.
|
18 |
|
19 |
+
You can checkout the following video to configure the plugin with your Identity Provider:
|
|
|
20 |
|
21 |
+
[youtube https://www.youtube.com/watch?v=BS6tY-Goa1Q]
|
|
|
22 |
|
23 |
+
|
24 |
+
= User Identity Verification or **OTP** Verification (Two Factor Authentication) =
|
25 |
+
Login and Registration: Verify users on login and Registration with different authentication methods like OTP over SMS, OTP Over Email, Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions and many others. Easy OTP Verification with SMS Verification and Email Verification. We provide complete two factor authentication security.
|
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))
|
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))
|
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.
|
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.
|
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)*
|
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)*
|
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)*
|
148 |
* Remember Device to skip the two factor authentication( 2FA ) for trusted devices [Guide](https://docs.miniorange.com/documentation/remember-my-device)
|
149 |
* **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
|
150 |
|
151 |
+
= google authenticator ( 2FA ) Enterprise Plugin Features =
|
152 |
|
153 |
+
* [Google Authenticator - Two Factor Authentication] (https://plugins.miniorange.com/2-factor-authentication-for-wordpress) - 2FA for Users as per the upgrade *( User-based pricing )*
|
154 |
* **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. *( SMS and Email credits need to be purchased as per the need)*
|
155 |
* Language Translation Support for two factor authenticaion.
|
156 |
* **Multiple Login Options:** Username + password + two factor Authentication (or) Username + two factor authentication i.e. Passwordless login.
|
168 |
= PASSWORDLESS LOGIN ( login without password) =
|
169 |
Passwordless login is a new way of login in which you and your users can login without entering the password. The login can be done by username and 2 factor or only username which can be decided based on the user role. If a role is not allowed for passwordless login they will login with password and username. miniOrange supports many two factor authentication methods for passwordless login. You can use google authenticator, webauthn, fingerprint login, otp over sms and email for login without password.
|
170 |
|
171 |
+
= WebAuthn (FIDO2) Passwordless login (Login without password by using FIDO 2 WebAuthn) =
|
172 |
WebAuthn is a browser-based API that allows for web applications to simplify and secure user authentication by using registered devices (phones, laptops, etc) as factors. It uses public key cryptography to protect users from advanced phishing attacks. It will allow you to provide your users an option for usernameless login. With the help of webauthn your users can login with fingerprint, FaceID, TouchID, etc.
|
173 |
|
174 |
+
= Device restriction with webauthn ( FIDO 2 )=
|
175 |
Webauthn allows you to restrict the number of devices per user. You can allow a user any number of devices they can use to login to your website. Webauthn also covers passwordless and usernameless login in which your users can login from the allowed device without password and username.
|
176 |
|
177 |
+
== login without password with webauthn and two step verification ==
|
178 |
+
Google authenticato - two step verification along with webauthn allows you to login to your website without using username and password for login. You can login with your device's password or by using any other authentication method like google authenticator, OTP Over SMS, OTP Over Email, etc.
|
179 |
+
|
180 |
== Prevent Account Sharing Between Users ==
|
181 |
Many video sharing and E-learning platforms want to prevent sharing of account between the users. This can be done using miniOrange Two factor plugin (TFA) with WordPress 2FA methods like QR code Authentication , Mobile Verification, etc. Also, e-learning portals can use this to their advantage. It can be used on any websites which create and sell courses. It can be integrated with plugins like Learndash.
|
182 |
Other sites like premium video content or any premium content where you want users not to share passwords between friends and Family then you can go for this solution. Multiple two factor authentication methods are supported to achieve prevent account sharing.
|
183 |
|
184 |
+
== ** Multi factor authentication ** ( MFA ) ==
|
185 |
You can configure multiple WordPress 2FA methods like google authenticator, OTP over Email, OTP over SMS, etc and choose which method do you want to login to your website from a list of configured methods. Multi factor authentication is helpful for cases such as when you do not have your phone and cannot access your TOTP app for login. You can then use other method like OTP over Email to login.
|
186 |
|
187 |
+
== ** Two Factor authentication ** ( 2FA ) for specific user and user roles ==
|
188 |
+
With google authenticator 2-factor authentication you can enable 2fa for specific user roles and specific users.
|
189 |
+
|
190 |
+
== Sync 2-factor authentication ( 2FA ) in multiple websites ==
|
191 |
+
Google authentication - Two factor authentication can be used for creating same 2-factor authentication code for the same users exists in multiple sites.
|
192 |
+
|
193 |
+
|
194 |
+
== Session Control with Two Factor authentication 2FA ==
|
195 |
+
You can control the number of sessions a user can have concurrently in your website.
|
196 |
+
|
197 |
+
== Customize two factor authentication screen as per your website ==
|
198 |
+
You can customize the 2fa screen as per your website's design.
|
199 |
+
|
200 |
+
= Additional Features other than the two factor authentication ( 2FA ) and multi factor authentication =
|
201 |
* **Complete Web Security suite to protect wordpress from any attacks**
|
202 |
* **Web Application Firewall (WAF) : Wordpress Firewall to protect your site**
|
203 |
* **OWASP TOP 10 Protection**
|
222 |
|
223 |
Check all the features other than two factor authentication here: [miniOrange Website](https://security.miniorange.com/)
|
224 |
|
225 |
+
= Why do you need to register for google authenticator? =
|
226 |
|
227 |
+
miniOrange's google authentiactor - Two factor authentication Plugin (TFA) uses miniOrange APIs to communicate between your WP and miniOrange. To keep this communication secure, we ask you to register and assign you API keys specific to your account. This way your account and users calls can be only accessed by API keys assigned to you.
|
228 |
Adding to this, you can also use the same account on multiple applications and your users do not have to maintain multiple accounts or WordPress 2FA like Google Authenticator. Single code generated in Google Authenticator will be enough to login to all sites. With this you can also achieve sync of two factor authentication on multiple sites.
|
229 |
|
230 |
|
250 |
= Apps Supported by the two factor authentication plugin =
|
251 |
* Google Authenticator
|
252 |
* miniOrange Authenticator
|
253 |
+
* Duo Authenticator
|
254 |
* Microsoft Authenticator
|
255 |
* Authy 2 Factor Authenticator
|
256 |
* LastPass Authenticator
|
257 |
* FreeOTP Authenticator
|
258 |
+
* Duo Authenticator push notification
|
259 |
+
* Authy push notification
|
260 |
|
261 |
<h4>Useful blog posts about two factor authenticaion ( 2FA ) plugin </h4>
|
262 |
*[Beginner’s Guide: How to Add Two Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
|
427 |
|
428 |
== Changelog ==
|
429 |
|
430 |
+
= 5.4.33=
|
431 |
+
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
432 |
+
* New pricing page for two factor auhthentication
|
433 |
+
* Added Duo Authenticator push notification method.
|
434 |
+
* Woocommerce redirect issue fix.
|
435 |
+
|
436 |
= 5.4.32=
|
437 |
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
438 |
* Replaced sessions with transient.
|
1039 |
|
1040 |
== Upgrade Notice ==
|
1041 |
|
1042 |
+
= 5.4.33=
|
1043 |
+
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
1044 |
+
* New pricing page for two factor auhthentication
|
1045 |
+
* Added Duo Authenticator push notification method.
|
1046 |
+
* Woocommerce redirect issue fix.
|
1047 |
+
|
1048 |
+
= 5.4.32=
|
1049 |
+
* Google Authenticator – Two Factor Authentication (2FA, TFA) :
|
1050 |
+
* Replaced sessions with transient.
|
1051 |
+
|
1052 |
= 5.4.31=
|
1053 |
* Google Authenticator - Two Factor Authentication (2FA, OTP) :
|
1054 |
* OTP over Email as two factor fix
|
views/twofa/setup/setup_duo_authenticator.php
ADDED
@@ -0,0 +1,408 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
function mo2f_configure_duo_authenticator( $user ) {
|
4 |
+
global $Mo2fdbQueries;
|
5 |
+
$mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user->ID );
|
6 |
+
$user_phone = $mo2f_user_phone ? $mo2f_user_phone : get_option( 'user_phone_temp' );
|
7 |
+
|
8 |
+
?>
|
9 |
+
|
10 |
+
<?php if(isset($_POST['option']) && $_POST['option'] == 'duo_mobile_send_push_notification_inside_plugin'){
|
11 |
+
mo2f_setup_duo_authenticator(); //4
|
12 |
+
}else if(get_user_meta($user->ID,'user_not_enroll')){
|
13 |
+
mo2f_inside_plugin_go_for_user_enroll_on_duo($user);// 3 //initialize_duo_mobile_registration($user);
|
14 |
+
}else if(get_site_option('duo_credentials_save_successfully') ) {
|
15 |
+
mo2f_download_instruction_for_duo_mobile_app(); //2
|
16 |
+
}else{
|
17 |
+
mo2f_save_duo_configuration_credentials(); //1
|
18 |
+
?>
|
19 |
+
|
20 |
+
<?php
|
21 |
+
}
|
22 |
+
|
23 |
+
}
|
24 |
+
|
25 |
+
function mo2f_setup_duo_authenticator(){
|
26 |
+
|
27 |
+
?>
|
28 |
+
<h3><?php echo mo2f_lt( 'Test Duo Authenticator' ); ?></h3>
|
29 |
+
<hr>
|
30 |
+
<div>
|
31 |
+
<br>
|
32 |
+
<br>
|
33 |
+
<center>
|
34 |
+
<h3><?php echo mo2f_lt( 'Duo push notification is sent to your mobile phone.' ); ?>
|
35 |
+
<br>
|
36 |
+
<?php echo mo2f_lt( 'We are waiting for your approval...' ); ?></h3>
|
37 |
+
<img src="<?php echo plugins_url( 'includes/images/ajax-loader-login.gif', dirname(dirname(dirname(__FILE__))) ); ?>"/>
|
38 |
+
</center>
|
39 |
+
|
40 |
+
<input type="button" name="back" id="go_back" class="mo_wpns_button mo_wpns_button1"
|
41 |
+
value="<?php echo mo2f_lt( 'Back' ); ?>"
|
42 |
+
style="margin-top:100px;margin-left:10px;"/>
|
43 |
+
</div>
|
44 |
+
|
45 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
46 |
+
<input type="hidden" name="option" value="mo2f_go_back"/>
|
47 |
+
<input type="hidden" name="mo2f_go_back_nonce"
|
48 |
+
value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
49 |
+
</form>
|
50 |
+
<form name="f" method="post" id="duo_mobile_register_form" action="">
|
51 |
+
<input type="hidden" name="option" value="mo2f_configure_duo_authenticator_validate_nonce"/>
|
52 |
+
<input type="hidden" name="mo2f_configure_duo_authenticator_validate_nonce"
|
53 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-duo-authenticator-validate-nonce" ) ?>"/>
|
54 |
+
</form>
|
55 |
+
<form name="f" method="post" id="mo2f_duo_authenticator_error_form" action="">
|
56 |
+
<input type="hidden" name="option" value="mo2f_duo_authenticator_error"/>
|
57 |
+
|
58 |
+
<input type="hidden" name="mo2f_duo_authentcator_error_nonce"
|
59 |
+
value="<?php echo wp_create_nonce( "mo2f-duo-authenticator-error-nonce" ) ?>"/>
|
60 |
+
</form>
|
61 |
+
|
62 |
+
<script>
|
63 |
+
jQuery('#go_back').click(function () {
|
64 |
+
jQuery('#mo2f_go_back_form').submit();
|
65 |
+
});
|
66 |
+
|
67 |
+
var timeout;
|
68 |
+
|
69 |
+
|
70 |
+
|
71 |
+
pollMobileValidation();
|
72 |
+
function pollMobileValidation() {
|
73 |
+
var nonce = "<?php echo wp_create_nonce( 'miniorange-2-factor-duo-nonce' ); ?>";
|
74 |
+
var data={
|
75 |
+
'action':'mo2f_duo_authenticator_ajax',
|
76 |
+
'call_type':'check_duo_push_auth_status',
|
77 |
+
'nonce': nonce,
|
78 |
+
|
79 |
+
};
|
80 |
+
|
81 |
+
jQuery.post(ajaxurl, data, function(response){
|
82 |
+
|
83 |
+
if (response == 'SUCCESS') {
|
84 |
+
jQuery('#duo_mobile_register_form').submit();
|
85 |
+
} else if (response == 'ERROR' || response == 'FAILED' || response == 'DENIED') {
|
86 |
+
jQuery('#mo2f_duo_authenticator_error_form').submit();
|
87 |
+
} else {
|
88 |
+
timeout = setTimeout(pollMobileValidation, 3000);
|
89 |
+
}
|
90 |
+
|
91 |
+
});
|
92 |
+
|
93 |
+
}
|
94 |
+
|
95 |
+
</script>
|
96 |
+
<?php
|
97 |
+
}
|
98 |
+
|
99 |
+
function mo2f_inside_plugin_go_for_user_enroll_on_duo($user){
|
100 |
+
$regis = get_user_meta($user->ID,'user_not_enroll_on_duo_before');
|
101 |
+
$regis = isset($regis[0]) ? $regis[0]:'https://plugins.miniorange.com/2-factor-authentication-for-wordpress';
|
102 |
+
?>
|
103 |
+
<div style = " background-color: #d9eff6;">
|
104 |
+
<p style = "font-size: 17px;">
|
105 |
+
<?php echo mo2f_lt( 'Register push notification as Two Factor Authentication using the below link.');?>
|
106 |
+
<?php echo mo2f_lt( 'After registration if you have not received authenticate requestyet, please click on ');?><b><?php echo mo2f_lt( 'Send Me Push Notification.');?></b>
|
107 |
+
</p>
|
108 |
+
</div>
|
109 |
+
<br>
|
110 |
+
<p style = " font-size: 17px;"><b>Step : 1 </b></p>
|
111 |
+
<div style = " background-color: #d9eff6;" >
|
112 |
+
<p style = " font-size: 17px;">
|
113 |
+
<b> <a href="<?php echo $regis ;?>" target="_blank">Click Here</a></b> <?php echo mo2f_lt( 'to configure DUO Push Notification. Once done with registration click on ');?><b><?php echo mo2f_lt( 'Send Me Push Notification Button.');?></b>
|
114 |
+
</p>
|
115 |
+
</div>
|
116 |
+
<br>
|
117 |
+
<form name="f" method="post" id="duo_mobile_send_push_notification_inside_plugin" action="" >
|
118 |
+
<input type="hidden" name="option" value="duo_mobile_send_push_notification_inside_plugin" />
|
119 |
+
<input type="hidden" name="duo_mobile_send_push_notification_inside_plugin_nonce"
|
120 |
+
value="<?php echo wp_create_nonce( "mo2f-send-duo-push-notification-inside-plugin-nonce" ) ?>"/>
|
121 |
+
<p style = " font-size: 17px;"><b>Step : 2 </b></p>
|
122 |
+
<input type="submit" name="validate" id="validate" class="mo_wpns_button mo_wpns_button1"
|
123 |
+
value="<?php echo mo2f_lt( 'Send Me Push Notification' ); ?>"/>
|
124 |
+
<br><br><br>
|
125 |
+
<input type="button" name="back" id="go_back_form" class="mo_wpns_button mo_wpns_button1" value="<?php echo mo2f_lt('Back');?>" />
|
126 |
+
</form>
|
127 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
128 |
+
<input type="hidden" name="option" value="mo2f_go_back" />
|
129 |
+
<input type="hidden" name="mo2f_go_back_nonce" value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
130 |
+
</form>
|
131 |
+
<script>
|
132 |
+
jQuery('#go_back_form').click(function() {
|
133 |
+
jQuery('#mo2f_go_back_form').submit();
|
134 |
+
});
|
135 |
+
jQuery("#mo2f_configurePhone").empty();
|
136 |
+
jQuery("#mo2f_app_div").hide();
|
137 |
+
</script>
|
138 |
+
|
139 |
+
<?php
|
140 |
+
}
|
141 |
+
|
142 |
+
|
143 |
+
function go_for_user_enroll_on_duo($user,$session_id){
|
144 |
+
$regis = get_user_meta($user->ID,'user_not_enroll_on_duo_before');
|
145 |
+
$regis = isset($regis[0]) ? $regis[0]:'https://plugins.miniorange.com/2-factor-authentication-for-wordpress';
|
146 |
+
?>
|
147 |
+
<div style = " background-color: #d9eff6;">
|
148 |
+
<p style = "font-size: 17px;">
|
149 |
+
<?php echo mo2f_lt( 'Register push notification as Two Factor Authentication using the below link.');?>
|
150 |
+
<?php echo mo2f_lt( 'After registration if you have not received authenticate requestyet, please click on ');?><b><?php echo mo2f_lt( 'Send Me Push Notification.');?></b>
|
151 |
+
</p>
|
152 |
+
</div>
|
153 |
+
<br>
|
154 |
+
<p style = " font-size: 17px;"><b>Step : A </b></p>
|
155 |
+
<div style = " background-color: #d9eff6;" >
|
156 |
+
<p style = " font-size: 17px;">
|
157 |
+
<a href="<?php echo $regis;?>" target="_blank">Click Here</a> <?php echo mo2f_lt( 'to configure DUO Push Notification. Once done with registration click on ');?><b><?php echo mo2f_lt( 'Send Me Push Notification.');?></b>
|
158 |
+
</p>
|
159 |
+
</div>
|
160 |
+
|
161 |
+
<form name="f" method="post" id="duo_mobile_send_push_notification_for_inline_form" action="" >
|
162 |
+
<input type="hidden" name="option" value="duo_mobile_send_push_notification_for_inline_form" />
|
163 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id ?>" />
|
164 |
+
<input type="hidden" name="duo_mobile_send_push_notification_inline_form_nonce"
|
165 |
+
value="<?php echo wp_create_nonce( "mo2f-send-duo-push-notification-inline-nonce" ) ?>"/>
|
166 |
+
<p style = " font-size: 17px;"><b>Step : B </b></p>
|
167 |
+
<input type="submit" name="validate" id="validate" class="mo_wpns_button mo_wpns_button1"
|
168 |
+
value="<?php echo mo2f_lt( 'Send Me Push Notification' ); ?>"/>
|
169 |
+
<br><br><br>
|
170 |
+
<input type="button" name="back" id="go_back_form" class="mo_wpns_button mo_wpns_button1" value="<?php echo mo2f_lt('Back');?>" />
|
171 |
+
</form>
|
172 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
173 |
+
<input type="hidden" name="option" value="mo2f_go_back" />
|
174 |
+
<input type="hidden" name="mo2f_go_back_nonce" value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
175 |
+
</form>
|
176 |
+
<script>
|
177 |
+
jQuery('#go_back_form').click(function() {
|
178 |
+
jQuery('#mo2f_go_back_form').submit();
|
179 |
+
});
|
180 |
+
jQuery("#mo2f_configurePhone").empty();
|
181 |
+
jQuery("#mo2f_app_div").hide();
|
182 |
+
</script>
|
183 |
+
|
184 |
+
<?php
|
185 |
+
}
|
186 |
+
|
187 |
+
function mo2f_download_instruction_for_duo_mobile_app(){
|
188 |
+
|
189 |
+
?>
|
190 |
+
|
191 |
+
<form name="f" method="post" id="duo_mobile_register_form" action="">
|
192 |
+
<input type="hidden" name="option" value="mo2f_configure_duo_authenticator_abc"/>
|
193 |
+
<input type="hidden" name="mo2f_configure_duo_authenticator_nonce"
|
194 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-duo-authenticator-nonce" ) ?>"/>
|
195 |
+
<a class="mo_app_link" data-toggle="collapse" href="#mo2f_sub_header_app" aria-expanded="false">
|
196 |
+
<h3 class="mo2f_authn_header"><?php echo mo2f_lt('Step-1 : Download the Duo');?> <span style="color: #F78701;"> <?php echo mo2f_lt('Authenticator');?></span> <?php echo mo2f_lt('App');?>
|
197 |
+
</h3>
|
198 |
+
</a>
|
199 |
+
<hr class="mo_hr">
|
200 |
+
<div class="mo2f_collapse in" id="mo2f_sub_header_app">
|
201 |
+
<table width="100%;" id="mo2f_inline_table">
|
202 |
+
<tr id="mo2f_inline_table">
|
203 |
+
<td style="padding:10px;">
|
204 |
+
<h4 id="user_phone_id"><?php echo mo2f_lt('iPhone Users');?></h4>
|
205 |
+
<hr>
|
206 |
+
<ol>
|
207 |
+
<li>
|
208 |
+
<?php echo mo2f_lt( 'Go to App Store');?>
|
209 |
+
</li>
|
210 |
+
<li>
|
211 |
+
<?php echo mo2f_lt( 'Search for');?> <b><?php echo mo2f_lt('Duo Authenticator');?></b>
|
212 |
+
</li>
|
213 |
+
<li>
|
214 |
+
<?php echo mo2f_lt( 'Download and install ');?><span style="color: #F78701;"><?php echo mo2f_lt('Duo');?><b> <?php echo mo2f_lt('Authenticator');?></b></span>
|
215 |
+
<?php echo mo2f_lt( 'app ');?>(<b><?php echo mo2f_lt('NOT Duo');?></b>)
|
216 |
+
</li>
|
217 |
+
</ol>
|
218 |
+
<br>
|
219 |
+
<a style="margin-left:10%" target="_blank" href="https://apps.apple.com/app/id1482362759"><img src="<?php echo plugins_url( 'includes/images/appstore.png' , dirname(dirname(dirname(__FILE__))) );?>" style="width:120px; height:45px; margin-left:6px;">
|
220 |
+
</a>
|
221 |
+
</td>
|
222 |
+
<td style="padding:10px;">
|
223 |
+
<h4 id="user_phone_id"><?php echo mo2f_lt('Android Users');?></h4>
|
224 |
+
<hr>
|
225 |
+
<ol>
|
226 |
+
<li>
|
227 |
+
<?php echo mo2f_lt( 'Go to Google Play Store.');?>
|
228 |
+
</li>
|
229 |
+
<li>
|
230 |
+
<?php echo mo2f_lt( 'Search for ');?><b><?php echo mo2f_lt('Duo Authenticator.');?></b>
|
231 |
+
</li>
|
232 |
+
<li>
|
233 |
+
<?php echo mo2f_lt( 'Download and install');?> <span style="color: #F78701;"><b><?php echo mo2f_lt('Authenticator');?></b></span>
|
234 |
+
<?php echo mo2f_lt( 'app');?> (<b><?php echo mo2f_lt('NOT Duo');?> </b>)
|
235 |
+
</li>
|
236 |
+
</ol>
|
237 |
+
<br>
|
238 |
+
<a style="margin-left:10%" target="_blank" href="https://play.google.com/store/apps/details?id=com.miniorange.android.authenticator&hl=en"><img src="<?php echo plugins_url( 'includes/images/playStore.png' , dirname(dirname(dirname(__FILE__))) );?>" style="width:120px; height:=45px; margin-left:6px;"></a>
|
239 |
+
</td>
|
240 |
+
</tr>
|
241 |
+
</table>
|
242 |
+
|
243 |
+
<input type="button" name="back" id="mo2f_inline_back_btn" class="mo_wpns_button mo_wpns_button1" value="<?php echo __('Back', 'miniorange-2-factor-authentication'); ?>" />
|
244 |
+
|
245 |
+
<input type="submit" name="submit" id="mo2f_plugin_configure_btn" class="mo_wpns_button mo_wpns_button1" value="<?php echo __('Configure your phone', 'miniorange-2-factor-authentication'); ?>" />
|
246 |
+
</div>
|
247 |
+
</form>
|
248 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
249 |
+
<input type="hidden" name="option" value="mo2f_go_back" />
|
250 |
+
<input type="hidden" name="mo2f_go_back_nonce" value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
251 |
+
</form>
|
252 |
+
<script>
|
253 |
+
jQuery('#mo2f_inline_back_btn').click(function() {
|
254 |
+
jQuery('#mo2f_go_back_form').submit();
|
255 |
+
});
|
256 |
+
|
257 |
+
|
258 |
+
</script>
|
259 |
+
|
260 |
+
|
261 |
+
|
262 |
+
<?php
|
263 |
+
}
|
264 |
+
|
265 |
+
function mo2f_inline_download_instruction_for_duo_mobile_app($mobile_registration_status = false){
|
266 |
+
|
267 |
+
?>
|
268 |
+
<div id="mo2f_app_div" class="mo_margin_left">
|
269 |
+
<a class="mo_app_link" data-toggle="collapse" href="#mo2f_sub_header_app" aria-expanded="false">
|
270 |
+
<h3 class="mo2f_authn_header"><?php echo mo2f_lt('Step-1 : Download the Duo');?> <span style="color: #F78701;"> <?php echo mo2f_lt('Authenticator');?></span> <?php echo mo2f_lt('App');?>
|
271 |
+
</h3>
|
272 |
+
</a>
|
273 |
+
<hr class="mo_hr">
|
274 |
+
<div class="mo2f_collapse in" id="mo2f_sub_header_app">
|
275 |
+
<table width="100%;" id="mo2f_inline_table">
|
276 |
+
<tr id="mo2f_inline_table">
|
277 |
+
<td style="padding:10px;">
|
278 |
+
<h4 id="user_phone_id"><?php echo mo2f_lt('iPhone Users');?></h4>
|
279 |
+
<hr>
|
280 |
+
<ol>
|
281 |
+
<li>
|
282 |
+
<?php echo mo2f_lt( 'Go to App Store');?>
|
283 |
+
</li>
|
284 |
+
<li>
|
285 |
+
<?php echo mo2f_lt( 'Search for');?> <b><?php echo mo2f_lt('Duo Authenticator');?></b>
|
286 |
+
</li>
|
287 |
+
<li>
|
288 |
+
<?php echo mo2f_lt( 'Download and install ');?><span style="color: #F78701;"><?php echo mo2f_lt('Duo');?><b> <?php echo mo2f_lt('Authenticator');?></b></span>
|
289 |
+
<?php echo mo2f_lt( 'app ');?>(<b><?php echo mo2f_lt('NOT Duo');?></b>)
|
290 |
+
</li>
|
291 |
+
</ol>
|
292 |
+
<br>
|
293 |
+
<a style="margin-left:10%" target="_blank" href="https://apps.apple.com/app/id1482362759"><img src="<?php echo plugins_url( 'includes/images/appstore.png' , dirname(dirname(dirname(__FILE__))) );?>" style="width:120px; height:45px; margin-left:6px;">
|
294 |
+
</a>
|
295 |
+
</td>
|
296 |
+
<td style="padding:10px;">
|
297 |
+
<h4 id="user_phone_id"><?php echo mo2f_lt('Android Users');?></h4>
|
298 |
+
<hr>
|
299 |
+
<ol>
|
300 |
+
<li>
|
301 |
+
<?php echo mo2f_lt( 'Go to Google Play Store.');?>
|
302 |
+
</li>
|
303 |
+
<li>
|
304 |
+
<?php echo mo2f_lt( 'Search for ');?><b><?php echo mo2f_lt('Duo Authenticator.');?></b>
|
305 |
+
</li>
|
306 |
+
<li>
|
307 |
+
<?php echo mo2f_lt( 'Download and install');?> <span style="color: #F78701;"><b><?php echo mo2f_lt('Authenticator');?></b></span>
|
308 |
+
<?php echo mo2f_lt( 'app');?> (<b><?php echo mo2f_lt('NOT Duo');?> </b>)
|
309 |
+
</li>
|
310 |
+
</ol>
|
311 |
+
<br>
|
312 |
+
<a style="margin-left:10%" target="_blank" href="https://play.google.com/store/apps/details?id=com.miniorange.android.authenticator&hl=en"><img src="<?php echo plugins_url( 'includes/images/playStore.png' , dirname(dirname(dirname(__FILE__))) );?>" style="width:120px; height:=45px; margin-left:6px;"></a>
|
313 |
+
</td>
|
314 |
+
</tr>
|
315 |
+
</table>
|
316 |
+
</div>
|
317 |
+
</div>
|
318 |
+
<?php
|
319 |
+
if( $mobile_registration_status) { ?>
|
320 |
+
<script>
|
321 |
+
jQuery("#mo2f_app_div").hide();
|
322 |
+
</script>
|
323 |
+
<?php } else{ ?>
|
324 |
+
|
325 |
+
<script>
|
326 |
+
jQuery("#mo2f_app_div").show();
|
327 |
+
</script>
|
328 |
+
<?php } ?>
|
329 |
+
|
330 |
+
<?php
|
331 |
+
}
|
332 |
+
|
333 |
+
function mo2f_save_duo_configuration_credentials(){
|
334 |
+
|
335 |
+
?>
|
336 |
+
<h3><?php echo mo2f_lt( 'Please enter required details' ); ?>
|
337 |
+
</h3>
|
338 |
+
<p style = "font-size: 17px;">
|
339 |
+
<?php echo mo2f_lt( '1. If you do not have an account in duo, please'); ?> <a href="https://signup.duo.com/" target="_blank">Click Here </a><?php echo mo2f_lt( 'to create an account.'); ?>
|
340 |
+
|
341 |
+
</p>
|
342 |
+
<p style = "font-size: 17px;">
|
343 |
+
<?php echo mo2f_lt( '2. Follow these steps( ') ?> <a href=" https://duo.com/docs/authapi#first-steps" target="_blank">Click Here </a> <?php echo mo2f_lt( ') to create AUTH API application on duo side. After creating auth API, you will get the all credentials which you need to enter below.'); ?>
|
344 |
+
|
345 |
+
</p>
|
346 |
+
<br>
|
347 |
+
<div>
|
348 |
+
<form name="f" method="post" action="" id="mo2f_save_duo_configration">
|
349 |
+
<input type="hidden" name="option" value="mo2f_configure_duo_authenticator"/>
|
350 |
+
<input type="hidden" name="mo2f_configure_duo_authenticator_nonce"
|
351 |
+
value="<?php echo wp_create_nonce( "mo2f-configure-duo-authenticator" ) ?>"/>
|
352 |
+
|
353 |
+
<p><?php echo mo2f_lt( 'Integration key' ); ?>
|
354 |
+
    <input class="mo2f_table_textbox" style="width:400px;" autofocus="true" type="text" name="ikey"
|
355 |
+
placeholder="<?php echo mo2f_lt( 'Integration key' ); ?>" style="width:95%;"/>
|
356 |
+
|
357 |
+
</p>
|
358 |
+
<br><br>
|
359 |
+
<p><?php echo mo2f_lt( 'Secret Key' ); ?>
|
360 |
+
           <input class="mo2f_table_textbox" style="width:400px;" autofocus="true" type="text" name="skey"
|
361 |
+
placeholder="<?php echo mo2f_lt( 'Secret key' ); ?>" style="width:95%;"/>
|
362 |
+
|
363 |
+
</p>
|
364 |
+
<br><br>
|
365 |
+
<p><?php echo mo2f_lt( 'API Hostname' ); ?>
|
366 |
+
    <input class="mo2f_table_textbox" style="width:400px;" autofocus="true" type="text" name="apihostname"
|
367 |
+
placeholder="<?php echo mo2f_lt( 'API Hostname' ); ?>" style="width:95%;"/>
|
368 |
+
|
369 |
+
</p>
|
370 |
+
<br><br>
|
371 |
+
<input type="button" name="back" id="go_back" class="mo_wpns_button mo_wpns_button1"
|
372 |
+
value="<?php echo mo2f_lt( 'Back' ); ?>"/>
|
373 |
+
<input type="submit" name="validate" id="validate" class="mo_wpns_button mo_wpns_button1"
|
374 |
+
value="<?php echo mo2f_lt( 'Save' ); ?>"/>
|
375 |
+
</form><br>
|
376 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
377 |
+
<input type="hidden" name="option" value="mo2f_go_back"/>
|
378 |
+
<input type="hidden" name="mo2f_go_back_nonce"
|
379 |
+
value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
380 |
+
</form>
|
381 |
+
<script>
|
382 |
+
jQuery('#go_back').click(function() {
|
383 |
+
jQuery('#mo2f_go_back_form').submit();
|
384 |
+
});
|
385 |
+
</script>
|
386 |
+
|
387 |
+
|
388 |
+
|
389 |
+
|
390 |
+
</div>
|
391 |
+
|
392 |
+
<script>
|
393 |
+
jQuery("#phone").intlTelInput();
|
394 |
+
jQuery('#go_back').click(function () {
|
395 |
+
jQuery('#mo2f_go_back_form').submit();
|
396 |
+
});
|
397 |
+
jQuery('a[href=\"#resendsmslink\"]').click(function (e) {
|
398 |
+
jQuery('#mo2f_verifyphone_form').submit();
|
399 |
+
});
|
400 |
+
|
401 |
+
</script>
|
402 |
+
|
403 |
+
<?php
|
404 |
+
|
405 |
+
|
406 |
+
}
|
407 |
+
|
408 |
+
?>
|
views/twofa/setup_twofa.php
CHANGED
@@ -72,7 +72,8 @@
|
|
72 |
"Google Authenticator",
|
73 |
"Authy Authenticator",
|
74 |
"OTP Over Telegram",
|
75 |
-
"OTP Over Whatsapp"
|
|
|
76 |
|
77 |
);
|
78 |
|
@@ -85,7 +86,8 @@
|
|
85 |
"miniOrange QR Code Authentication",
|
86 |
"miniOrange Push Notification",
|
87 |
"OTP Over Telegram",
|
88 |
-
"OTP Over Whatsapp"
|
|
|
89 |
);
|
90 |
|
91 |
$standard_plan_existing_user = array(
|
@@ -119,7 +121,8 @@
|
|
119 |
"miniOrange Soft Token",
|
120 |
"miniOrange Push Notification",
|
121 |
"OTP Over Telegram",
|
122 |
-
"OTP Over Whatsapp"
|
|
|
123 |
|
124 |
);
|
125 |
|
@@ -132,7 +135,8 @@
|
|
132 |
"miniOrange Soft Token",
|
133 |
"miniOrange Push Notification",
|
134 |
"OTP Over Telegram",
|
135 |
-
"OTP Over Whatsapp"
|
|
|
136 |
|
137 |
);
|
138 |
$premium_plan = array(
|
72 |
"Google Authenticator",
|
73 |
"Authy Authenticator",
|
74 |
"OTP Over Telegram",
|
75 |
+
"OTP Over Whatsapp",
|
76 |
+
"Duo Authenticator"
|
77 |
|
78 |
);
|
79 |
|
86 |
"miniOrange QR Code Authentication",
|
87 |
"miniOrange Push Notification",
|
88 |
"OTP Over Telegram",
|
89 |
+
"OTP Over Whatsapp",
|
90 |
+
"Duo Authenticator"
|
91 |
);
|
92 |
|
93 |
$standard_plan_existing_user = array(
|
121 |
"miniOrange Soft Token",
|
122 |
"miniOrange Push Notification",
|
123 |
"OTP Over Telegram",
|
124 |
+
"OTP Over Whatsapp",
|
125 |
+
"Duo Authenticator"
|
126 |
|
127 |
);
|
128 |
|
135 |
"miniOrange Soft Token",
|
136 |
"miniOrange Push Notification",
|
137 |
"OTP Over Telegram",
|
138 |
+
"OTP Over Whatsapp",
|
139 |
+
"Duo Authenticator"
|
140 |
|
141 |
);
|
142 |
$premium_plan = array(
|
views/twofa/test/test_twofa_duo_authenticator.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php function mo2f_test_duo_authenticator($current_user) { ?>
|
2 |
+
|
3 |
+
<h3><?php echo mo2f_lt( 'Test Duo Authenticator' ); ?></h3>
|
4 |
+
<hr>
|
5 |
+
<div>
|
6 |
+
<br>
|
7 |
+
<br>
|
8 |
+
<center>
|
9 |
+
<h3><?php echo mo2f_lt( 'Duo push notification is sent to your mobile phone.' ); ?>
|
10 |
+
<br>
|
11 |
+
<?php echo mo2f_lt( 'We are waiting for your approval...' ); ?></h3>
|
12 |
+
<img src="<?php echo plugins_url( 'includes/images/ajax-loader-login.gif', dirname(dirname(dirname(__FILE__))) ); ?>"/>
|
13 |
+
</center>
|
14 |
+
|
15 |
+
<input type="button" name="back" id="go_back" class="mo_wpns_button mo_wpns_button1"
|
16 |
+
value="<?php echo mo2f_lt( 'Back' ); ?>"
|
17 |
+
style="margin-top:100px;margin-left:10px;"/>
|
18 |
+
</div>
|
19 |
+
|
20 |
+
<form name="f" method="post" action="" id="mo2f_go_back_form">
|
21 |
+
<input type="hidden" name="option" value="mo2f_go_back"/>
|
22 |
+
<input type="hidden" name="mo2f_go_back_nonce"
|
23 |
+
value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
|
24 |
+
</form>
|
25 |
+
<form name="f" method="post" id="mo2f_duo_authenticator_success_form" action="">
|
26 |
+
<input type="hidden" name="option" value="mo2f_duo_authenticator_success_form"/>
|
27 |
+
<input type="hidden" name="mo2f_duo_authenticator_success_nonce"
|
28 |
+
value="<?php echo wp_create_nonce( "mo2f-duo-authenticator-success-nonce" ) ?>"/>
|
29 |
+
</form>
|
30 |
+
<form name="f" method="post" id="mo2f_duo_authenticator_error_form" action="">
|
31 |
+
<input type="hidden" name="option" value="mo2f_duo_authenticator_error"/>
|
32 |
+
|
33 |
+
<input type="hidden" name="mo2f_duo_authentcator_error_nonce"
|
34 |
+
value="<?php echo wp_create_nonce( "mo2f-duo-authenticator-error-nonce" ) ?>"/>
|
35 |
+
</form>
|
36 |
+
|
37 |
+
<script>
|
38 |
+
jQuery('#go_back').click(function () {
|
39 |
+
jQuery('#mo2f_go_back_form').submit();
|
40 |
+
});
|
41 |
+
|
42 |
+
var timeout;
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
+
pollMobileValidation();
|
47 |
+
function pollMobileValidation() {
|
48 |
+
var nonce = "<?php echo wp_create_nonce( 'miniorange-2-factor-duo-nonce' ); ?>";
|
49 |
+
var data={
|
50 |
+
'action':'mo2f_duo_authenticator_ajax',
|
51 |
+
'call_type':'check_duo_push_auth_status',
|
52 |
+
'nonce' : nonce,
|
53 |
+
|
54 |
+
};
|
55 |
+
|
56 |
+
jQuery.post(ajaxurl, data, function(response){
|
57 |
+
|
58 |
+
if (response == 'SUCCESS') {
|
59 |
+
jQuery('#mo2f_duo_authenticator_success_form').submit();
|
60 |
+
} else if (response == 'ERROR' || response == 'FAILED' || response == 'DENIED') {
|
61 |
+
jQuery('#mo2f_duo_authenticator_error_form').submit();
|
62 |
+
} else {
|
63 |
+
timeout = setTimeout(pollMobileValidation, 3000);
|
64 |
+
}
|
65 |
+
|
66 |
+
});
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
</script>
|
71 |
+
|
72 |
+
<?php }
|
73 |
+
|
74 |
+
?>
|
views/upgrade.php
CHANGED
@@ -1,8 +1,7 @@
|
|
1 |
<?php
|
2 |
-
global $Mo2fdbQueries;
|
3 |
$user = wp_get_current_user();
|
4 |
$is_NC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
5 |
-
$network_security_enabled = get_option('mo_wpns_2fa_with_network_security');
|
6 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
7 |
|
8 |
$mo2f_2fa_method_list = array(
|
@@ -41,7 +40,7 @@
|
|
41 |
$mo2f_2fa_method_description_set = array(
|
42 |
"Enter the soft token from the account in your Google Authenticator App to login.",
|
43 |
"Answer the three security questions you had set, to login.",
|
44 |
-
"Enter the soft token from the account in your Authy Authenticator
|
45 |
"Accept the verification link sent to your email to login.",
|
46 |
"You will receive a one time passcode via Email.",
|
47 |
"You will receive a One Time Passcode via SMS on your Phone",
|
@@ -106,7 +105,7 @@
|
|
106 |
"According to user's role the particular user will be redirected to specific location",
|
107 |
"Have your own gateway? You can use it, no need to purchase SMS then",
|
108 |
"For access wordpress on different moblie apps, app specific passwords can be set",
|
109 |
-
"This protects your site from attacks which tries to gain access
|
110 |
"Allows you to manually/automatically block any IP address that seems malicious from accessing your website. ",
|
111 |
"Monitor activity of your users. For ex:- login activity, error report",
|
112 |
"Enforce users to set a strong password.",
|
@@ -171,669 +170,520 @@ echo '
|
|
171 |
?>
|
172 |
<br><br>
|
173 |
|
174 |
-
|
|
|
|
|
|
|
175 |
<div class="mo_upgrade_toggle">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
|
177 |
-
<p class="mo_upgrade_toggle_2fa">
|
178 |
|
179 |
-
|
180 |
-
|
181 |
-
<label for="regular_plans" id="mo_2fa_cloud_licensing_plans_title1" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan">Unlimited Sites</label>
|
182 |
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
-
|
186 |
-
|
|
|
|
|
|
|
187 |
|
188 |
-
|
189 |
-
|
190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
|
192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
|
194 |
-
|
195 |
-
<label for="Recharge" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan" id="mo_ns_licensing_plans_title1" style="display: none;">Website Security</label>
|
196 |
-
<?php
|
197 |
-
}
|
198 |
-
?>
|
199 |
-
<span class="cd-switch"></span>
|
200 |
-
|
201 |
-
</p>
|
202 |
-
</div>
|
203 |
-
<br><br>
|
204 |
|
|
|
|
|
|
|
|
|
205 |
|
|
|
206 |
|
|
|
207 |
|
|
|
208 |
|
|
|
|
|
|
|
|
|
|
|
209 |
|
|
|
210 |
|
|
|
211 |
|
212 |
|
|
|
|
|
213 |
|
214 |
|
215 |
-
<div
|
|
|
216 |
|
217 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
echo $feature_set;
|
299 |
-
if ($feature_set == "Force Two Factor") {
|
300 |
-
echo " for all users";
|
301 |
-
echo mo2f_feature_on_hover_2fa_upgrade("Enforce administrators to setup 2nd factor during registration");
|
302 |
-
|
303 |
-
}
|
304 |
-
else
|
305 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_feature_description_set[$i]);
|
306 |
-
|
307 |
-
?>
|
308 |
-
</div>
|
309 |
-
<br>
|
310 |
-
<?php
|
311 |
-
}
|
312 |
-
?>
|
313 |
-
|
314 |
-
<h3 style="text-align: center;">Custom SMS Gateway
|
315 |
-
<a style="text-decoration:none;" href="https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig" target="_blank">Test Now</a>
|
316 |
-
</h3>
|
317 |
-
|
318 |
-
<?php
|
319 |
-
for ( $i = 0; $i < 6; $i ++ )
|
320 |
-
{
|
321 |
-
$feature_set = $mo2f_custom_sms_gateways[ $i ];
|
322 |
-
|
323 |
-
$f_feature_set_with_plan = $mo2f_custom_sms_gateways_feature_set[ $feature_set ];
|
324 |
-
?>
|
325 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
326 |
-
<?php
|
327 |
-
|
328 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[0] );
|
329 |
-
echo $feature_set;
|
330 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_custom_sms_gateways_description_set[$i]);
|
331 |
-
|
332 |
-
?>
|
333 |
-
</div>
|
334 |
-
<br>
|
335 |
-
<?php
|
336 |
-
}
|
337 |
-
|
338 |
-
?>
|
339 |
-
<h3 style="text-align: center;">Addons</h3>
|
340 |
-
|
341 |
-
<?php
|
342 |
-
for ( $i = 0; $i < 3; $i ++ )
|
343 |
-
{
|
344 |
-
$feature_set = $mo2f_addons_set[ $i ];
|
345 |
-
|
346 |
-
$f_feature_set_with_plan = $mo2f_addons[ $feature_set ];
|
347 |
-
?>
|
348 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
349 |
-
<?php
|
350 |
-
|
351 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[0] );
|
352 |
-
echo $feature_set;
|
353 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_addons_description_set[$i]);
|
354 |
-
|
355 |
-
?>
|
356 |
-
</div>
|
357 |
-
<br>
|
358 |
-
<?php
|
359 |
-
}
|
360 |
-
|
361 |
-
?>
|
362 |
-
</div>
|
363 |
-
|
364 |
-
<div class="mo2f_upgrade_main_div" style="box-shadow: 0 1px 34px 0px #c0c0c0;min-height: 633px;">
|
365 |
-
<div class="mo2f_upgrade_plan_name box">
|
366 |
-
<h1 class="mo2f_upgrade_plan_name_title">Enterprise</h1>
|
367 |
-
<div>
|
368 |
-
<div class="ribbon ribbon-top-right"><span>Popular</span></div>
|
369 |
-
</div>
|
370 |
-
</div>
|
371 |
-
|
372 |
-
<div class="mo2f_upgrade_center_align">
|
373 |
-
<p style="margin-bottom: -16px;">Starting at</p>
|
374 |
-
<h1 class="mo2f_upgrade_plan_amount">$59<span class="mo2f_upgrade_yearly">/year</span></h1>
|
375 |
-
</div>
|
376 |
-
<hr class="mo2f_upgrade_hr">
|
377 |
-
<div class="mo2f_upgrade_site_details" style="margin-left: 11%;">
|
378 |
-
<div class="mo2f_upgrade_site_details_left">
|
379 |
-
<span class="dashicons dashicons-thumbs-up mo2f_upgrade_thumb_icon"></span>
|
380 |
-
</div>
|
381 |
-
<div class="mo2f_upgrade_site_details_right">
|
382 |
-
<p class="mo2f_upgrade_site_details_name">Complete<b> Login Security</b></p>
|
383 |
-
</div>
|
384 |
-
</div>
|
385 |
-
|
386 |
-
<hr class="mo2f_upgrade_hr">
|
387 |
-
<div style="text-align: center;margin-top: 7%;margin-bottom: 7%;">
|
388 |
-
|
389 |
-
<?php
|
390 |
-
if( isset($is_customer_registered) && $is_customer_registered) {
|
391 |
-
?>
|
392 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" >Upgrade</button>
|
393 |
-
<?php
|
394 |
-
}else{ ?>
|
395 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_register_and_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" >Upgrade</button>
|
396 |
-
<?php }
|
397 |
-
?>
|
398 |
-
|
399 |
-
|
400 |
-
</div>
|
401 |
-
|
402 |
-
|
403 |
-
<p style="margin-top: 20px;text-align: center;">
|
404 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>All</b> Premium Features</span><br>
|
405 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>Force Two Factor </b>for <b>Users</b></span><br>
|
406 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details">Basic <b>Security </b>Features</span>
|
407 |
-
</p>
|
408 |
-
<br>
|
409 |
-
<hr class="mo2f_upgrade_hr">
|
410 |
-
<?php echo mo2f_yearly_all_inclusive_pricing_plan(); ?>
|
411 |
-
|
412 |
-
<hr class="mo2f_upgrade_hr">
|
413 |
-
<br>
|
414 |
-
<h3 style="text-align: center;">Authentication Methods</h3>
|
415 |
-
<?php
|
416 |
-
for ( $i = 0; $i < 13; $i ++ )
|
417 |
-
{
|
418 |
-
$feature_set = $mo2f_2fa_method_list[ $i ];
|
419 |
-
|
420 |
-
$f_feature_set_with_plan = $mo2f_2fa_method_list_with_plans[ $feature_set ];
|
421 |
-
?>
|
422 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
423 |
-
<?php
|
424 |
-
if ( gettype( $f_feature_set_with_plan[1] ) == "boolean" && ($feature_set != "Other Features" )&& ($feature_set != "Custom SMS Gateway" ))
|
425 |
-
{
|
426 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[1] );
|
427 |
-
}
|
428 |
-
echo $feature_set;
|
429 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_method_description_set[$i]);
|
430 |
-
|
431 |
-
?>
|
432 |
-
</div>
|
433 |
-
<br>
|
434 |
-
<?php
|
435 |
-
}
|
436 |
-
?>
|
437 |
-
|
438 |
-
<h3 style="text-align: center;">Other Features</h3>
|
439 |
-
<?php
|
440 |
-
for ( $i = 0; $i < 15; $i ++ )
|
441 |
-
{
|
442 |
-
$feature_set = $mo2f_feature_set[ $i ];
|
443 |
-
|
444 |
-
$f_feature_set_with_plan = $mo2f_feature_set_with_plans[ $feature_set ];
|
445 |
-
?>
|
446 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
447 |
-
<?php
|
448 |
-
|
449 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[1] );
|
450 |
-
echo $feature_set;
|
451 |
-
if ($feature_set == "Force Two Factor") {
|
452 |
-
echo " for all users";
|
453 |
-
echo mo2f_feature_on_hover_2fa_upgrade("Enforce users to setup 2nd factor during registration");
|
454 |
-
|
455 |
-
}
|
456 |
-
else
|
457 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_feature_description_set[$i]);
|
458 |
-
|
459 |
-
?>
|
460 |
-
</div>
|
461 |
-
<br>
|
462 |
-
<?php
|
463 |
-
}
|
464 |
-
|
465 |
-
?>
|
466 |
-
|
467 |
-
<h3 style="text-align: center;">Custom SMS Gateway
|
468 |
-
<a style="text-decoration:none;" href="https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig" target="_blank">Test Now</a>
|
469 |
-
</h3>
|
470 |
-
|
471 |
-
<?php
|
472 |
-
for ( $i = 0; $i < 6; $i ++ )
|
473 |
-
{
|
474 |
-
$feature_set = $mo2f_custom_sms_gateways[ $i ];
|
475 |
-
|
476 |
-
$f_feature_set_with_plan = $mo2f_custom_sms_gateways_feature_set[ $feature_set ];
|
477 |
-
?>
|
478 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
479 |
-
<?php
|
480 |
-
|
481 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[0] );
|
482 |
-
echo $feature_set;
|
483 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_custom_sms_gateways_description_set[$i]);
|
484 |
-
|
485 |
-
?>
|
486 |
-
</div>
|
487 |
-
<br>
|
488 |
-
<?php
|
489 |
-
}
|
490 |
-
?>
|
491 |
-
<h3 style="text-align: center;">Addons</h3>
|
492 |
-
|
493 |
-
<?php
|
494 |
-
for ( $i = 0; $i < 3; $i ++ )
|
495 |
-
{
|
496 |
-
$feature_set = $mo2f_addons_set[ $i ];
|
497 |
-
|
498 |
-
$f_feature_set_with_plan = $mo2f_addons[ $feature_set ];
|
499 |
-
?>
|
500 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
501 |
-
<?php
|
502 |
-
|
503 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[1] );
|
504 |
-
echo $feature_set;
|
505 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_addons_description_set[$i]);
|
506 |
-
|
507 |
-
?>
|
508 |
-
</div>
|
509 |
-
<br>
|
510 |
-
<?php
|
511 |
-
}
|
512 |
-
|
513 |
-
?>
|
514 |
-
</div>
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
</div>
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
<div style="margin-left: 19%; display: none;" id="mo2f_unlimited_users">
|
527 |
-
<div class="mo2f_upgrade_main_div">
|
528 |
-
|
529 |
-
<div class="mo2f_upgrade_plan_name">
|
530 |
-
<h1 class="mo2f_upgrade_plan_name_title">Standard Lite</h1>
|
531 |
-
</div>
|
532 |
-
<div class="mo2f_upgrade_center_align">
|
533 |
-
<p style="margin-bottom: -16px;">Starting at</p>
|
534 |
-
<h1 class="mo2f_upgrade_plan_amount">$49<span class="mo2f_upgrade_yearly">/year</span></h1>
|
535 |
-
</div>
|
536 |
-
<hr class="mo2f_upgrade_hr">
|
537 |
-
<div class="mo2f_upgrade_site_details" style="margin-left: 11%;">
|
538 |
-
<div class="mo2f_upgrade_site_details_left">
|
539 |
-
<span class="dashicons dashicons-thumbs-up mo2f_upgrade_thumb_icon"></span>
|
540 |
-
</div>
|
541 |
-
<div class="mo2f_upgrade_site_details_right">
|
542 |
-
<p class="mo2f_upgrade_site_details_name"><b>basic</b> two-factor security</p>
|
543 |
-
|
544 |
-
</div>
|
545 |
-
</div>
|
546 |
-
<hr class="mo2f_upgrade_hr">
|
547 |
-
<div style="text-align: center;margin-top: 7%;margin-bottom: 7%;">
|
548 |
-
|
549 |
-
<?php
|
550 |
-
if( isset($is_customer_registered) && $is_customer_registered) {
|
551 |
-
?>
|
552 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_upgradeform('wp_security_two_factor_standard_lite_plan','2fa_plan')" >Upgrade</button>
|
553 |
-
<?php
|
554 |
-
}else{ ?>
|
555 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_register_and_upgradeform('wp_security_two_factor_standard_lite_plan','2fa_plan')" >Upgrade</button>
|
556 |
-
<?php }
|
557 |
-
?>
|
558 |
-
|
559 |
-
|
560 |
-
</div>
|
561 |
-
|
562 |
-
<p style="margin-top: 20px;text-align: center;">
|
563 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>Force Two Factor </b>for admins</span><br>
|
564 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details">Enable 2FA for <b>specific User Roles</b></span><br>
|
565 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>Additional </b>2FA methods</span>
|
566 |
-
</p>
|
567 |
-
<br>
|
568 |
-
<hr class="mo2f_upgrade_hr">
|
569 |
-
<?php echo mo2f_sms_cost(); ?>
|
570 |
-
|
571 |
-
<hr class="mo2f_upgrade_hr">
|
572 |
-
<br>
|
573 |
-
<h3 style="text-align: center;">Authentication Methods</h3>
|
574 |
-
<?php
|
575 |
-
for ( $i = 0; $i < 13; $i ++ )
|
576 |
-
{
|
577 |
-
$feature_set = $mo2f_2fa_method_list[ $i ];
|
578 |
-
|
579 |
-
$f_feature_set_with_plan = $mo2f_2fa_method_list_with_plans[ $feature_set ];
|
580 |
-
?>
|
581 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
582 |
-
<?php
|
583 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
|
584 |
-
echo $feature_set;
|
585 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_method_description_set[$i]);
|
586 |
-
|
587 |
-
?>
|
588 |
-
</div>
|
589 |
-
<br>
|
590 |
-
<?php
|
591 |
-
}
|
592 |
-
?>
|
593 |
-
<h3 style="text-align: center;">Other Features</h3>
|
594 |
-
<?php
|
595 |
-
for ( $i = 0; $i < 15; $i ++ )
|
596 |
-
{
|
597 |
-
$feature_set = $mo2f_feature_set[ $i ];
|
598 |
-
|
599 |
-
$f_feature_set_with_plan = $mo2f_feature_set_with_plans[ $feature_set ];
|
600 |
-
?>
|
601 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
602 |
-
<?php
|
603 |
-
|
604 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
|
605 |
-
echo $feature_set;
|
606 |
-
if ($feature_set == "Force Two Factor") {
|
607 |
-
echo " for Administrators";
|
608 |
-
echo mo2f_feature_on_hover_2fa_upgrade("Enforce administrators to setup 2nd factor during registration");
|
609 |
-
|
610 |
-
}
|
611 |
-
else
|
612 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_feature_description_set[$i]);
|
613 |
-
|
614 |
-
?>
|
615 |
-
</div>
|
616 |
-
<br>
|
617 |
-
<?php
|
618 |
-
}
|
619 |
-
?>
|
620 |
-
|
621 |
-
<h3 style="text-align: center;">Custom SMS Gateway
|
622 |
-
<a style="text-decoration:none;" href="https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig" target="_blank">Test Now</a>
|
623 |
-
</h3>
|
624 |
-
|
625 |
-
<?php
|
626 |
-
for ( $i = 0; $i < 6; $i ++ )
|
627 |
-
{
|
628 |
-
$feature_set = $mo2f_custom_sms_gateways[ $i ];
|
629 |
-
|
630 |
-
$f_feature_set_with_plan = $mo2f_custom_sms_gateways_feature_set[ $feature_set ];
|
631 |
-
?>
|
632 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
633 |
-
<?php
|
634 |
-
|
635 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
|
636 |
-
echo $feature_set;
|
637 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_custom_sms_gateways_description_set[$i]);
|
638 |
-
|
639 |
-
?>
|
640 |
-
</div>
|
641 |
-
<br>
|
642 |
-
<?php
|
643 |
-
}
|
644 |
-
|
645 |
-
?>
|
646 |
-
<h3 style="text-align: center;">Addons</h3>
|
647 |
-
|
648 |
-
<?php
|
649 |
-
for ( $i = 0; $i < 3; $i ++ )
|
650 |
-
{
|
651 |
-
$feature_set = $mo2f_addons_set[ $i ];
|
652 |
-
|
653 |
-
$f_feature_set_with_plan = $mo2f_addons[ $feature_set ];
|
654 |
-
?>
|
655 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
656 |
-
<?php
|
657 |
-
|
658 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[2] );
|
659 |
-
echo $feature_set;
|
660 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_addons_description_set[$i]);
|
661 |
-
|
662 |
-
?>
|
663 |
-
</div>
|
664 |
-
<br>
|
665 |
-
<?php
|
666 |
-
}
|
667 |
-
|
668 |
-
?>
|
669 |
-
</div>
|
670 |
-
|
671 |
-
|
672 |
-
<div class="mo2f_upgrade_main_div" style="box-shadow: 0 1px 34px 0px #c0c0c0;min-height: 633px;">
|
673 |
-
<div class="mo2f_upgrade_plan_name box">
|
674 |
-
<h1 class="mo2f_upgrade_plan_name_title">Premium Lite</h1>
|
675 |
-
<div>
|
676 |
-
<div class="ribbon ribbon-top-right"><span>Popular</span></div>
|
677 |
-
</div>
|
678 |
-
</div>
|
679 |
-
|
680 |
-
<div class="mo2f_upgrade_center_align">
|
681 |
-
<p style="margin-bottom: -16px;">Starting at</p>
|
682 |
-
<h1 class="mo2f_upgrade_plan_amount">$99<span class="mo2f_upgrade_yearly">/year</span></h1>
|
683 |
-
</div>
|
684 |
-
<hr class="mo2f_upgrade_hr">
|
685 |
-
<div class="mo2f_upgrade_site_details" style="margin-left: 6%;">
|
686 |
-
<div class="mo2f_upgrade_site_details_left">
|
687 |
-
<span class="dashicons dashicons-thumbs-up mo2f_upgrade_thumb_icon"></span>
|
688 |
-
</div>
|
689 |
-
<div class="mo2f_upgrade_site_details_right">
|
690 |
-
<p class="mo2f_upgrade_site_details_name"><b>Complete</b> two-factor security</p>
|
691 |
-
</div>
|
692 |
-
</div>
|
693 |
-
|
694 |
-
<hr class="mo2f_upgrade_hr">
|
695 |
-
<div style="text-align: center;margin-top: 7%;margin-bottom: 7%;">
|
696 |
-
|
697 |
-
<?php
|
698 |
-
if( isset($is_customer_registered) && $is_customer_registered) {
|
699 |
-
?>
|
700 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" >Upgrade</button>
|
701 |
-
<?php
|
702 |
-
}else{ ?>
|
703 |
-
<button class=" mo_wpns_upgrade_page_button mo2f_upgrade_button_style" onclick="mo2f_register_and_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" >Upgrade</button>
|
704 |
-
<?php }
|
705 |
-
?>
|
706 |
-
|
707 |
-
|
708 |
-
</div>
|
709 |
-
|
710 |
-
|
711 |
-
<p style="margin-top: 20px;text-align: center;">
|
712 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>All</b> Standard Features</span><br>
|
713 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details"><b>Force Two Factor </b>for <b>Users</b></span><br>
|
714 |
-
<span class=" dashicons dashicons-saved mo2f_upgrade_tick_icon"></span><span class="mo2f_upgrade_feature_details">Basic <b>Security </b>Features</span>
|
715 |
-
</p>
|
716 |
-
|
717 |
-
<br>
|
718 |
-
<hr class="mo2f_upgrade_hr">
|
719 |
-
<?php echo mo2f_sms_cost(); ?>
|
720 |
-
|
721 |
-
<hr class="mo2f_upgrade_hr">
|
722 |
-
<br>
|
723 |
-
<h3 style="text-align: center;">Authentication Methods</h3>
|
724 |
-
<?php
|
725 |
-
for ( $i = 0; $i < 13; $i ++ )
|
726 |
-
{
|
727 |
-
$feature_set = $mo2f_2fa_method_list[ $i ];
|
728 |
-
|
729 |
-
$f_feature_set_with_plan = $mo2f_2fa_method_list_with_plans[ $feature_set ];
|
730 |
-
?>
|
731 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
732 |
-
<?php
|
733 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[3] );
|
734 |
-
echo $feature_set;
|
735 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_method_description_set[$i]);
|
736 |
-
|
737 |
-
?>
|
738 |
-
</div>
|
739 |
-
<br>
|
740 |
-
<?php
|
741 |
-
}
|
742 |
-
?>
|
743 |
-
<h3 style="text-align: center;">Other Features</h3>
|
744 |
-
<?php
|
745 |
-
for ( $i = 0; $i < 15; $i ++ )
|
746 |
-
{
|
747 |
-
$feature_set = $mo2f_feature_set[ $i ];
|
748 |
-
|
749 |
-
$f_feature_set_with_plan = $mo2f_feature_set_with_plans[ $feature_set ];
|
750 |
-
?>
|
751 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
752 |
-
<?php
|
753 |
-
|
754 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[3] );
|
755 |
-
echo $feature_set;
|
756 |
-
if ($feature_set == "Force Two Factor") {
|
757 |
-
echo " for all users";
|
758 |
-
echo mo2f_feature_on_hover_2fa_upgrade("Enforce users to setup 2nd factor during registration");
|
759 |
-
|
760 |
-
}
|
761 |
-
else
|
762 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_2fa_feature_description_set[$i]);
|
763 |
-
|
764 |
-
?>
|
765 |
-
</div>
|
766 |
-
<br>
|
767 |
-
<?php
|
768 |
-
}
|
769 |
-
?>
|
770 |
-
|
771 |
-
<h3 style="text-align: center;">Custom SMS Gateway
|
772 |
-
<a style="text-decoration:none;" href="https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig" target="_blank">Test Now</a>
|
773 |
-
</h3>
|
774 |
-
|
775 |
-
<?php
|
776 |
-
for ( $i = 0; $i < 6; $i ++ )
|
777 |
-
{
|
778 |
-
$feature_set = $mo2f_custom_sms_gateways[ $i ];
|
779 |
-
|
780 |
-
$f_feature_set_with_plan = $mo2f_custom_sms_gateways_feature_set[ $feature_set ];
|
781 |
-
?>
|
782 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
783 |
-
<?php
|
784 |
-
|
785 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[3] );
|
786 |
-
echo $feature_set;
|
787 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_custom_sms_gateways_description_set[$i]);
|
788 |
-
|
789 |
-
?>
|
790 |
-
</div>
|
791 |
-
<br>
|
792 |
-
<?php
|
793 |
-
}
|
794 |
-
|
795 |
-
?>
|
796 |
-
<h3 style="text-align: center;">Addons</h3>
|
797 |
-
|
798 |
-
<?php
|
799 |
-
for ( $i = 0; $i < 3; $i ++ )
|
800 |
-
{
|
801 |
-
$feature_set = $mo2f_addons_set[ $i ];
|
802 |
-
|
803 |
-
$f_feature_set_with_plan = $mo2f_addons[ $feature_set ];
|
804 |
-
?>
|
805 |
-
<div style="margin-bottom: -3%;margin-left: 2%;margin-right: 2%;">
|
806 |
-
<?php
|
807 |
-
|
808 |
-
echo mo2f_get_binary_equivalent_2fa_lite( $f_feature_set_with_plan[3] );
|
809 |
-
echo $feature_set;
|
810 |
-
echo mo2f_feature_on_hover_2fa_upgrade($mo2f_addons_description_set[$i]);
|
811 |
-
|
812 |
-
?>
|
813 |
-
</div>
|
814 |
-
<br>
|
815 |
-
<?php
|
816 |
-
}
|
817 |
|
818 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
|
820 |
-
|
821 |
|
|
|
822 |
|
823 |
-
|
824 |
-
|
|
|
|
|
825 |
|
|
|
826 |
|
|
|
|
|
|
|
827 |
|
|
|
|
|
|
|
|
|
|
|
828 |
|
|
|
829 |
|
|
|
|
|
|
|
|
|
|
|
830 |
|
|
|
|
|
831 |
|
|
|
832 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
833 |
|
834 |
-
|
|
|
|
|
|
|
835 |
|
836 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
837 |
<div class="mo_wpns_upgrade_page_title_name">
|
838 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
839 |
WAF</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
@@ -852,18 +702,18 @@ echo '
|
|
852 |
<?php
|
853 |
if(isset($is_customer_registered) && $is_customer_registered) {
|
854 |
?>
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
</div>
|
868 |
<div><center><b>
|
869 |
<ul>
|
@@ -878,7 +728,7 @@ echo '
|
|
878 |
</div>
|
879 |
</div>
|
880 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
881 |
-
<div class="mo_wpns_upgrade_security_title"
|
882 |
<div class="mo_wpns_upgrade_page_title_name">
|
883 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
884 |
Login and Spam</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
@@ -895,15 +745,15 @@ echo '
|
|
895 |
|
896 |
<div style="text-align: center;">
|
897 |
<?php if( isset($is_customer_registered)&& $is_customer_registered ) {
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
</div>
|
908 |
<div><center><b>
|
909 |
<ul>
|
@@ -920,7 +770,7 @@ echo '
|
|
920 |
|
921 |
</div>
|
922 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
923 |
-
<div class="mo_wpns_upgrade_security_title"
|
924 |
<div class="mo_wpns_upgrade_page_title_name">
|
925 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
926 |
Malware Scanner</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
@@ -936,17 +786,17 @@ echo '
|
|
936 |
</center>
|
937 |
<div style="text-align: center;">
|
938 |
<?php if( isset($is_customer_registered) && $is_customer_registered) {
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
</div>
|
951 |
<div><center><b>
|
952 |
<ul>
|
@@ -961,7 +811,7 @@ echo '
|
|
961 |
</div>
|
962 |
</div>
|
963 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
964 |
-
<div class="mo_wpns_upgrade_security_title"
|
965 |
<div class="mo_wpns_upgrade_page_title_name">
|
966 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
967 |
Encrypted Backup</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
@@ -978,16 +828,16 @@ echo '
|
|
978 |
</center>
|
979 |
<div style="text-align: center;">
|
980 |
<?php if( isset($is_customer_registered) && $is_customer_registered) {
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
|
992 |
</div>
|
993 |
<div><center><b>
|
@@ -1002,189 +852,509 @@ echo '
|
|
1002 |
</b></center></div>
|
1003 |
</div></div>
|
1004 |
</div>
|
1005 |
-
|
1006 |
-
<
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1067 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1068 |
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
<hr style="border-top: 2px solid #143af4;">
|
1080 |
-
<div class="mo_2fa_card-body">
|
1081 |
-
<p style="font-size: 110%;">If payment is done through Credit Card/Intenational debit card, the license would be made automatically once payment is completed. </p>
|
1082 |
-
<p style="font-size: 110%;"><i><b>For guide
|
1083 |
-
<?php echo'<a href='.MoWpnsConstants::FAQ_PAYMENT_URL.' target="blank">Click Here.</a>';?></b></i></p>
|
1084 |
-
|
1085 |
-
</div>
|
1086 |
-
</div>
|
1087 |
-
<div class="mo_2fa_card mo_2fa_animation">
|
1088 |
-
<div class="mo_2fa_Card-header">
|
1089 |
-
<?php
|
1090 |
-
echo'<img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/paypal.png" style="size: landscape;width: 100px;height: 27px; margin-bottom: 4px;margin-top: 4px;opacity: 1;padding-left: 8px;">';?>
|
1091 |
-
</div>
|
1092 |
-
<hr style="border-top: 2px solid #143af4;">
|
1093 |
-
<div class="mo_2fa_card-body">
|
1094 |
-
<?php echo'<p style="font-size: 110%;">Use the following PayPal id for payment via PayPal.</p><p><i><b style="color:#1261d8">'.MoWpnsConstants::SUPPORT_EMAIL.'</b></i></p>';?>
|
1095 |
-
<p style="font-size: 110%;"><i><b>Note:</b> There is an additional 18% GST applicable via PayPal.</i></p>
|
1096 |
-
|
1097 |
-
</div>
|
1098 |
-
</div>
|
1099 |
-
<div class="mo_2fa_card mo_2fa_animation">
|
1100 |
-
<div class="mo_2fa_Card-header">
|
1101 |
-
<?php
|
1102 |
-
echo'<img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/netbanking.png" style="size: landscape;width: 100px;height: 27px; margin-bottom: 4px;margin-top: 4px;opacity: 1;padding-left: 8px;">';?>
|
1103 |
-
|
1104 |
-
</div>
|
1105 |
-
<hr style="border-top: 2px solid #143af4;">
|
1106 |
-
<div class="mo_2fa_card-body">
|
1107 |
-
<?php echo'<p style="font-size: 110%;">If you want to use net banking for payment then contact us at <i><b style="color:#1261d8">'.MoWpnsConstants::SUPPORT_EMAIL.'</b></i> so that we can provide you bank details. </i></p>';?>
|
1108 |
-
<p style="font-size: 110%;"><i><b>Note:</b> There is an additional 18% GST applicable via Bank Transfer.</i></p>
|
1109 |
-
</div>
|
1110 |
-
</div>
|
1111 |
-
</div>
|
1112 |
-
</div>
|
1113 |
-
<div class="mo_2fa_mo-supportnote">
|
1114 |
-
<p style="font-size: 110%;"><b>Note :</b> Once you have paid through PayPal/Net Banking, please inform us so that we can confirm and update your License.</p>
|
1115 |
-
</div>
|
1116 |
-
</div>
|
1117 |
-
</div>
|
1118 |
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
?>
|
1140 |
-
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price" style="text-align: center;"
|
1141 |
-
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1142 |
|
1143 |
-
<select id="mo2f_yearly" class="form-control" style="border-radius:5px;width:70%;">
|
1144 |
-
<option> <?php echo mo2f_lt( 'Upto 5 users - $30 per year' ); ?> </option>
|
1145 |
-
<option> <?php echo mo2f_lt( 'Upto 50 users - $99 per year' ); ?> </option>
|
1146 |
-
<option> <?php echo mo2f_lt( 'Upto 100 users - $199 per year' ); ?> </option>
|
1147 |
-
<option> <?php echo mo2f_lt( 'Upto 500 users - $349 per year' ); ?> </option>
|
1148 |
-
<option> <?php echo mo2f_lt( 'Upto 1000 users - $499 per year' ); ?> </option>
|
1149 |
-
<option> <?php echo mo2f_lt( 'Upto 5000 users - $799 per year' ); ?> </option>
|
1150 |
-
<option> <?php echo mo2f_lt( 'Upto 10000 users - $999 per year ' ); ?></option>
|
1151 |
-
<option> <?php echo mo2f_lt( 'Upto 20000 users - $1449 per year' ); ?> </option>
|
1152 |
-
|
1153 |
-
</select>
|
1154 |
-
</p>
|
1155 |
-
<?php
|
1156 |
-
}
|
1157 |
-
function mo2f_yearly_all_inclusive_pricing_plan() {
|
1158 |
-
?>
|
1159 |
-
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price" style="text-align: center;"
|
1160 |
-
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1161 |
|
1162 |
-
<select id="mo2f_yearly" class="form-control" style="border-radius:5px;width:70%;">
|
1163 |
-
<option> <?php echo mo2f_lt( 'Upto 5 users - $59 per year' ); ?> </option>
|
1164 |
-
<option> <?php echo mo2f_lt( 'Upto 50 users - $128 per year' ); ?> </option>
|
1165 |
-
<option> <?php echo mo2f_lt( 'Upto 100 users - $228 per year' ); ?> </option>
|
1166 |
-
<option> <?php echo mo2f_lt( 'Upto 500 users - $378 per year' ); ?> </option>
|
1167 |
-
<option> <?php echo mo2f_lt( 'Upto 1000 users - $528 per year' ); ?> </option>
|
1168 |
-
<option> <?php echo mo2f_lt( 'Upto 5000 users - $828 per year' ); ?> </option>
|
1169 |
-
<option> <?php echo mo2f_lt( 'Upto 10000 users - $1028 per year ' ); ?></option>
|
1170 |
-
<option> <?php echo mo2f_lt( 'Upto 20000 users - $1478 per year' ); ?> </option>
|
1171 |
-
|
1172 |
-
</select>
|
1173 |
-
</p>
|
1174 |
<?php
|
1175 |
-
}
|
1176 |
function mo2f_waf_yearly_standard_pricing() {
|
1177 |
?>
|
1178 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1179 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1180 |
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
|
1189 |
<?php
|
1190 |
}
|
@@ -1193,13 +1363,13 @@ function mo2f_login_yearly_standard_pricing() {
|
|
1193 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1194 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1195 |
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
|
1204 |
<?php
|
1205 |
}
|
@@ -1208,13 +1378,13 @@ function mo2f_backup_yearly_standard_pricing() {
|
|
1208 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1209 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1210 |
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
|
1219 |
<?php
|
1220 |
}
|
@@ -1223,13 +1393,13 @@ function mo2f_scanner_yearly_standard_pricing() {
|
|
1223 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1224 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1225 |
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
|
1234 |
<?php
|
1235 |
}
|
@@ -1237,9 +1407,9 @@ function mo2f_scanner_yearly_standard_pricing() {
|
|
1237 |
function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
|
1238 |
switch ( $mo2f_var ) {
|
1239 |
case 1:
|
1240 |
-
return "<div style='color: #20b2aa;font-size: x-large;float:left;margin:0px 5px;'
|
1241 |
case 0:
|
1242 |
-
return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'
|
1243 |
default:
|
1244 |
return $mo2f_var;
|
1245 |
}
|
@@ -1296,53 +1466,25 @@ function mo2f_feature_on_hover_2fa_upgrade( $mo2f_var ) {
|
|
1296 |
jQuery.post(ajaxurl, data, function(response) {
|
1297 |
});
|
1298 |
}
|
1299 |
-
function
|
1300 |
{
|
1301 |
-
document.getElementById('
|
1302 |
-
|
1303 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title').style.display = "none";
|
1304 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title1').style.display = "block";
|
1305 |
-
var tab = '<?php echo get_option("mo_wpns_2fa_with_network_security");?>';
|
1306 |
-
if(tab == "1")
|
1307 |
-
{
|
1308 |
-
document.getElementById('mo_ns_features_only').style.display = "none";
|
1309 |
-
document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
|
1310 |
-
document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
|
1311 |
-
}
|
1312 |
-
|
1313 |
-
document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
|
1314 |
-
document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
|
1315 |
-
}
|
1316 |
-
|
1317 |
-
function mo_2fa_onpremise_show_plans()
|
1318 |
-
{
|
1319 |
-
document.getElementById('mo2f_unlimited_sites').style.display = "none";
|
1320 |
-
var tab = '<?php echo get_option("mo_wpns_2fa_with_network_security");?>';
|
1321 |
-
if(tab == "1")
|
1322 |
-
{
|
1323 |
-
document.getElementById('mo_ns_features_only').style.display = "none";
|
1324 |
-
document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
|
1325 |
-
document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
|
1326 |
-
}
|
1327 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title').style.display = "block";
|
1328 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title1').style.display = "none";
|
1329 |
document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
|
1330 |
-
document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
|
1331 |
-
|
|
|
|
|
1332 |
}
|
1333 |
-
|
1334 |
function mo_ns_show_plans()
|
1335 |
{
|
1336 |
document.getElementById('mo_ns_features_only').style.display = "block";
|
1337 |
-
document.getElementById('
|
1338 |
-
document.getElementById('mo2f_unlimited_users').style.display = "none";
|
1339 |
-
|
1340 |
-
document.getElementById('mo_ns_licensing_plans_title1').style.display = "block";
|
1341 |
-
document.getElementById('mo_ns_licensing_plans_title').style.display = "none";
|
1342 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title').style.display = "block";
|
1343 |
-
document.getElementById('mo_2fa_cloud_licensing_plans_title1').style.display = "none";
|
1344 |
document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
|
1345 |
-
document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
|
|
|
|
|
|
|
1346 |
}
|
1347 |
|
1348 |
function wpns_pricing()
|
@@ -1350,18 +1492,21 @@ function mo2f_feature_on_hover_2fa_upgrade( $mo2f_var ) {
|
|
1350 |
window.open("https://security.miniorange.com/pricing/");
|
1351 |
}
|
1352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1353 |
</script>
|
1354 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
1355 |
<script>
|
1356 |
$(document).ready(function(){
|
1357 |
|
1358 |
-
$("#regular_plans").click(function(){
|
1359 |
-
$("#mo2f_unlimited_sites").fadeIn(2000);
|
1360 |
-
});
|
1361 |
|
1362 |
-
|
1363 |
-
$("#mo2f_unlimited_users").fadeIn(2000);
|
1364 |
-
});
|
1365 |
|
1366 |
});
|
1367 |
</script>
|
1 |
<?php
|
2 |
+
global $Mo2fdbQueries,$mainDir;
|
3 |
$user = wp_get_current_user();
|
4 |
$is_NC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
|
|
5 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
6 |
|
7 |
$mo2f_2fa_method_list = array(
|
40 |
$mo2f_2fa_method_description_set = array(
|
41 |
"Enter the soft token from the account in your Google Authenticator App to login.",
|
42 |
"Answer the three security questions you had set, to login.",
|
43 |
+
"Enter the soft token from the account in your Authy Authenticator/Microsoft Authenticator/TOTP Authenticator App to login.",
|
44 |
"Accept the verification link sent to your email to login.",
|
45 |
"You will receive a one time passcode via Email.",
|
46 |
"You will receive a One Time Passcode via SMS on your Phone",
|
105 |
"According to user's role the particular user will be redirected to specific location",
|
106 |
"Have your own gateway? You can use it, no need to purchase SMS then",
|
107 |
"For access wordpress on different moblie apps, app specific passwords can be set",
|
108 |
+
"This protects your site from attacks which tries to gain access/login to a site with random usernames and passwords.",
|
109 |
"Allows you to manually/automatically block any IP address that seems malicious from accessing your website. ",
|
110 |
"Monitor activity of your users. For ex:- login activity, error report",
|
111 |
"Enforce users to set a strong password.",
|
170 |
?>
|
171 |
<br><br>
|
172 |
|
173 |
+
<?php
|
174 |
+
if( get_option("mo_wpns_2fa_with_network_security"))
|
175 |
+
{
|
176 |
+
?>
|
177 |
<div class="mo_upgrade_toggle">
|
178 |
+
<p class="mo_upgrade_toggle_2fa">
|
179 |
+
<input type="radio" name="sitetype" value="Recharge" id="mo2f_2fa_plans" onclick="show_2fa_plans();" style="display: none;">
|
180 |
+
<label for="mo2f_2fa_plans" class="mo_upgrade_toggle_2fa_lable" id="mo_2fa_lite_licensing_plans_title" style="display: none;"> 2-Factor Authentication</label>
|
181 |
+
<label for="mo2f_2fa_plans" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan" id="mo_2fa_lite_licensing_plans_title1" style="display: block;"> 2-Factor Authentication</label>
|
182 |
+
<input type="radio" name="sitetype" value="Recharge" id="mo2f_ns_plans" onclick="mo_ns_show_plans();" style="display: none;">
|
183 |
+
<label for="mo2f_ns_plans" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title">Website Security</label>
|
184 |
+
<label for="mo2f_ns_plans" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan" id="mo_ns_licensing_plans_title1" style="display: none;">Website Security</label>
|
185 |
+
</p>
|
186 |
+
</div>
|
187 |
+
<?php
|
188 |
+
}
|
189 |
+
?>
|
190 |
+
<span class="cd-switch"></span>
|
191 |
|
|
|
192 |
|
193 |
+
<br><br>
|
194 |
+
<link rel="stylesheet" href=<?php echo $mainDir.DIRECTORY_SEPARATOR.'includes'.DIRECTORY_SEPARATOR.'css'.DIRECTORY_SEPARATOR.'upgrade.css';?>>
|
|
|
195 |
|
196 |
+
<div class="mo2f_upgrade_super_div" id="mo2f_twofa_plans">
|
197 |
+
<div class="mo2f_upgrade_main_div">
|
198 |
+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"/>
|
199 |
+
<div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium_lite">
|
200 |
+
<div id="pricing_head" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Premium Lite</h3></center></div>
|
201 |
+
<div id="pricing_head" class="mo2fa_pricing_head_supporter"><center><span class="mo2fa_pricing_head_mo_2fa">$99</span>/Year</center></div>
|
202 |
|
203 |
+
<div id="getting_started_2fa_mo">
|
204 |
+
<center>
|
205 |
+
<a href="#addon_site_based"><button class="mo2fa_make_my_plan_mo">Getting Started</button></a>
|
206 |
+
</center>
|
207 |
+
</div>
|
208 |
|
209 |
+
<div id="pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
|
210 |
+
<div id="pricing_feature_collection" class="mo2fa_pricing_feature_collection">
|
211 |
+
<ul class="mo2fa_ul">
|
212 |
+
<p class="mo2fa_feature"><strong>Features</strong></p>
|
213 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Sites</li>
|
214 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Users</li>
|
215 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">
|
216 |
+
<i class="fas fa-check"></i>
|
217 |
+
<span class="mo2fa_tooltip_methodlist">10+ Authentication Methods
|
218 |
+
<span class="methodlist">
|
219 |
+
<ul class="methods-list-mo2fa" style="margin-left: -43px; ">
|
220 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
|
221 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
|
222 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
|
223 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
|
224 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
|
225 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
|
226 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
|
227 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
|
228 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
|
229 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
|
230 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange QR Code Authenticator</li>
|
231 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Soft Token</li>
|
232 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Push Notification</li>
|
233 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
|
234 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>Hardware Token</li>
|
235 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
|
236 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
|
237 |
+
</ul>
|
238 |
+
</span>
|
239 |
+
</span>
|
240 |
+
</li>
|
241 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
|
242 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
|
243 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login</li>
|
244 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Strong Password</li>
|
245 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
|
246 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Add-Ons (Purchase Seperately)</li>
|
247 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
|
248 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Advance Security Features</li>
|
249 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon_site_based"><i class="fas fa-check"></i>Multi-Site Support</li>
|
250 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
|
251 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
|
252 |
+
</ul>
|
253 |
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
<div id="pricing_addons_site_based" class="mo2fa_pricing">
|
257 |
+
<center>
|
258 |
+
<div id="purchase_user_limit">
|
259 |
+
<p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
|
260 |
+
<p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
|
261 |
+
<center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Sites</h3>
|
262 |
+
<p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
|
263 |
+
<select id="site_price_mo" onchange="update_site_limit()" onclick="update_site_limit()" class="mo2fa_increase_my_limit">
|
264 |
+
<option value="99">1 Site - free with the plan</option>
|
265 |
+
<option value="159">2 Sites - $159 per year</option>
|
266 |
+
<option value="199">Upto 5 Sites - $199 per year</option>
|
267 |
+
<option value="259">Upto 10 Sites - $259 per year</option>
|
268 |
+
<option value="349">Upto 25 Sites - $349per year</option>
|
269 |
+
<option value="0"> Above 25 - Contact us</option>
|
270 |
+
</select>
|
271 |
+
</div>
|
272 |
+
<div id="purchase_sms_limit">
|
273 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions </h3>
|
274 |
+
<p class="mo2fa_country">(For all countries*)</p>
|
275 |
+
<select id="sms_price_site_based_mo" onchange="update_sms_limit_site_based_mo()" class="mo2fa_increase_my_limit">
|
276 |
+
<option value="0">0 Transaction - $0</option>
|
277 |
+
<option value="12">100 Transactions - $12</option>
|
278 |
+
<option value="54">500 Transactions - $54</option>
|
279 |
+
<option value="105">1000 Transactions - $105</option>
|
280 |
+
<option value="510">5000 Transactions - $510</option>
|
281 |
+
<option value="1010">10,000 Transactions - $1010</option>
|
282 |
+
<option value="4945">50,000 Transactions - $4945</option>
|
283 |
+
</select>
|
284 |
+
</center>
|
285 |
+
</div>
|
286 |
+
<div id="purchase_email_limit">
|
287 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of Email Transactions </h3>
|
288 |
+
<select id="email_price_site_based_mo" onchange="update_email_limit_site_based_mo()" class="mo2fa_increase_my_limit">
|
289 |
+
<option value="0">0 Transaction - $0</option>
|
290 |
+
<option value="2">100 Transactions - $2</option>
|
291 |
+
<option value="5">500 Transactions - $5</option>
|
292 |
+
<option value="7">1000 Transactions - $7</option>
|
293 |
+
<option value="20">5000 Transactions - $20</option>
|
294 |
+
<option value="30">10,000 Transactions - $30</option>
|
295 |
+
<option value="45">50,000 Transactions - $45</option>
|
296 |
+
</select>
|
297 |
+
</center>
|
298 |
+
</div>
|
299 |
+
<div class="mo2fa_dollar"> <center><span>$</span><span id="mo_pricing_adder_site_based"></span></center></div>
|
300 |
+
|
301 |
+
<div id="custom_my_plan_2fa_mo">
|
302 |
+
<center>
|
303 |
+
<?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
|
304 |
+
<a onclick="mo2f_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
305 |
+
<?php }else{ ?>
|
306 |
+
<a onclick="mo2f_register_and_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
307 |
+
<?php }?>
|
308 |
+
</center>
|
309 |
+
</div>
|
310 |
+
</center>
|
311 |
+
</div>
|
312 |
+
</div>
|
313 |
+
<script>
|
314 |
+
var base_price_site_based =0;
|
315 |
+
var display_my_site_based_price = parseInt(base_price_site_based)+parseInt(0)+parseInt(0)+parseInt(0);
|
316 |
+
document.getElementById("mo_pricing_adder_site_based").innerHTML = + display_my_site_based_price;
|
317 |
+
jQuery('#site_price_mo').click();
|
318 |
+
function update_site_limit() {
|
319 |
+
var users = document.getElementById("site_price_mo").value;
|
320 |
+
var sms_user_selection= document.getElementById("sms_price_site_based_mo").value;
|
321 |
+
var email_user_selection= document.getElementById("email_price_site_based_mo").value;
|
322 |
+
var users_addion = parseInt(base_price_site_based)+parseInt(users)+parseInt(sms_user_selection)+parseInt(email_user_selection);
|
323 |
+
|
324 |
+
document.getElementById("mo_pricing_adder_site_based").innerHTML = + users_addion;
|
325 |
|
326 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
|
328 |
+
function update_sms_limit_site_based_mo() {
|
329 |
+
var sms = document.getElementById("sms_price_site_based_mo").value;
|
330 |
+
var users_sms_selection = document.getElementById("site_price_mo").value;
|
331 |
+
var email_sms_selection= document.getElementById("email_price_site_based_mo").value;
|
332 |
|
333 |
+
var sms_addion = parseInt(base_price_site_based)+parseInt(sms)+parseInt(users_sms_selection )+parseInt(email_sms_selection);
|
334 |
|
335 |
+
document.getElementById("mo_pricing_adder_site_based").innerHTML = + sms_addion;
|
336 |
|
337 |
+
}
|
338 |
|
339 |
+
function update_email_limit_site_based_mo() {
|
340 |
+
var email= document.getElementById("email_price_site_based_mo").value;
|
341 |
+
var users_email_selection = document.getElementById("site_price_mo").value;
|
342 |
+
var sms_email_selection = document.getElementById("sms_price_site_based_mo").value;
|
343 |
+
var email_addion = parseInt(base_price_site_based)+parseInt(email)+parseInt(users_email_selection)+parseInt(sms_email_selection);
|
344 |
|
345 |
+
document.getElementById("mo_pricing_adder_site_based").innerHTML = + email_addion;
|
346 |
|
347 |
+
}
|
348 |
|
349 |
|
350 |
+
</script>
|
351 |
+
</div>
|
352 |
|
353 |
|
354 |
+
<div class="mo2f_upgrade_main_div">
|
355 |
+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
|
356 |
|
357 |
+
<div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium">
|
358 |
+
<div class="mo2fa_recommended"><center><h4 class="mo2fa_h4">Recommended</h4></center> </div>
|
359 |
+
<div id="pricing_head_all_inclusive" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Premium</h3></center></div>
|
360 |
+
<div id="pricing_head_all_inclusive" class="mo2fa_pricing_head_supporter"><center><span class="mo2fa_pricing_head_mo_2fa">$199</span>/Year</center></div>
|
361 |
+
<div id="getting_started_2fa_mo_all_inclusive">
|
362 |
+
<center>
|
363 |
+
<a href="#addon_all_inclusive"><button class="mo2fa_make_my_plan_mo">Getting Started</button></a>
|
364 |
+
</center>
|
365 |
+
</div>
|
366 |
|
367 |
+
<div id="pricing_feature_collection_supporter_all_inclusive" class="mo2fa_pricing_feature_collection_supporter">
|
368 |
+
<div id="pricing_feature_collection_all_inclusive" class="mo2fa_pricing_feature_collection">
|
369 |
+
<ul class="mo2fa_ul">
|
370 |
+
<p class="mo2fa_feature"><strong>Features</strong></p>
|
371 |
+
|
372 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Sites</li>
|
373 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Users</li>
|
374 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i><span class="mo2fa_tooltip_methodlist">10+ Authentication Methods
|
375 |
+
<span class="methodlist">
|
376 |
+
<ul class="methods-list-mo2fa" style="margin-left: -43px; ">
|
377 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
|
378 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
|
379 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
|
380 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
|
381 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
|
382 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
|
383 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
|
384 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
|
385 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
|
386 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
|
387 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange QR Code Authenticator</li>
|
388 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Soft Token</li>
|
389 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Push Notification</li>
|
390 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
|
391 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>Hardware Token</li>
|
392 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
|
393 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
|
394 |
+
</ul>
|
395 |
+
</span>
|
396 |
+
</span></li>
|
397 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
|
398 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
|
399 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login</li>
|
400 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Strong Password</li>
|
401 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
|
402 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Add-Ons (Included)</li>
|
403 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
|
404 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Security Features</li>
|
405 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon_all_inclusive"><i class="fas fa-check"></i>Multi-Site Support</li>
|
406 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
|
407 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
|
408 |
+
</ul>
|
409 |
|
410 |
+
</div>
|
411 |
+
</div>
|
412 |
+
<div id="pricing_addons_all_inclusive" class="mo2fa_pricing">
|
413 |
+
<div id="purchase_user_limit_all_inclusive">
|
414 |
+
<p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
|
415 |
+
<p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
|
416 |
+
<center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Sites</h3>
|
417 |
+
<p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
|
418 |
+
<select id="all_inclusive_price_mo" onclick="update_site_limit_all_inclusive()" onchange="update_site_limit_all_inclusive()" class="mo2fa_increase_my_limit">
|
419 |
+
<option value="199">1 Site - free with the plan</option>
|
420 |
+
<option value="299">2 Sites - $299 per year</option>
|
421 |
+
<option value="399">Upto 5 Sites - $399 per year</option>
|
422 |
+
<option value="599">Upto 10 Sites - $599 per year</option>
|
423 |
+
<option value="799">Upto 25 Sites - $799 per year</option>
|
424 |
+
<option value="0">Above 25 - Contact us</option>
|
425 |
+
</select>
|
426 |
+
</center>
|
427 |
+
</div>
|
428 |
+
<div id="purchase_sms_limit_all_inclusive">
|
429 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions </h3>
|
430 |
+
<p class="mo2fa_country">(For all countries*)</p>
|
431 |
+
<select id="sms_price_all_inclusive_mo" onchange="update_sms_limit_all_inclusive()" class="mo2fa_increase_my_limit">
|
432 |
+
<option value="0">0 Transaction - $0</option>
|
433 |
+
<option value="12">100 Transactions - $12</option>
|
434 |
+
<option value="54">500 Transactions - $54</option>
|
435 |
+
<option value="105">1000 Transactions - $105</option>
|
436 |
+
<option value="510">5000 Transactions - $510</option>
|
437 |
+
<option value="1010">10,000 Transactions - $1010</option>
|
438 |
+
<option value="4945">50,000 Transactions - $4945</option>
|
439 |
+
</select>
|
440 |
+
</center>
|
441 |
+
</div>
|
442 |
+
<div id="purchase_email_limit_all_inclusive">
|
443 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of Email Transactions </h3>
|
444 |
+
<select id="email_price_all_inclusive_mo" onchange="update_email_limit_all_inclusive_mo()" class="mo2fa_increase_my_limit">
|
445 |
+
<option value="0">0 Transaction - $0</option>
|
446 |
+
<option value="2">100 Transactions - $2</option>
|
447 |
+
<option value="5">500 Transactions - $5</option>
|
448 |
+
<option value="7">1000 Transactions - $7</option>
|
449 |
+
<option value="20">5000 Transactions - $20</option>
|
450 |
+
<option value="30">10,000 Transactions - $30</option>
|
451 |
+
<option value="45">50,000 Transactions - $45</option>
|
452 |
+
</select>
|
453 |
+
</center>
|
454 |
+
</div>
|
455 |
+
<div class="mo2fa_dollar"> <center><span>$</span><span id="display_my_all_inclusive_pricing"></span></center></div>
|
456 |
+
|
457 |
+
<div id="custom_my_plan_2fa_mo">
|
458 |
+
<center>
|
459 |
+
<?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
|
460 |
+
<a onclick="mo2f_upgradeform('wp_security_two_factor_all_inclusive_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
461 |
+
<?php }else{ ?>
|
462 |
+
<a onclick="mo2f_register_and_upgradeform('wp_security_two_factor_all_inclusive_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
463 |
+
<?php }?>
|
464 |
+
</center>
|
465 |
+
</div>
|
466 |
+
</div>
|
467 |
+
</div>
|
468 |
+
<script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
|
470 |
+
var base_price_site_all_inclusive =0;
|
471 |
+
var display_my_all_inclusive_price = parseInt(base_price_site_all_inclusive)+parseInt(0)+parseInt(0)+parseInt(0);
|
472 |
+
document.getElementById("display_my_all_inclusive_pricing").innerHTML = + display_my_all_inclusive_price;
|
473 |
+
jQuery('#all_inclusive_price_mo').click();
|
474 |
+
function update_site_limit_all_inclusive() {
|
475 |
+
var sites_all_inclusive = document.getElementById("all_inclusive_price_mo").value;
|
476 |
+
var sms_user_selection_all_inclusive= document.getElementById("sms_price_all_inclusive_mo").value;
|
477 |
+
var email_user_selection_all_inclusive= document.getElementById("email_price_all_inclusive_mo").value;
|
478 |
+
var total_inclusive = parseInt(base_price_site_all_inclusive)+parseInt(sites_all_inclusive)+parseInt(sms_user_selection_all_inclusive)+parseInt(email_user_selection_all_inclusive);
|
479 |
|
480 |
+
document.getElementById("display_my_all_inclusive_pricing").innerHTML = + total_inclusive;
|
481 |
|
482 |
+
}
|
483 |
|
484 |
+
function update_sms_limit_all_inclusive() {
|
485 |
+
var sms = document.getElementById("sms_price_all_inclusive_mo").value;
|
486 |
+
var sms_site_selection = document.getElementById("all_inclusive_price_mo").value;
|
487 |
+
var email_sms_selection= document.getElementById("email_price_all_inclusive_mo").value;
|
488 |
|
489 |
+
var sms_all_inclusive_mo_2fa= parseInt(base_price_site_all_inclusive)+parseInt(sms)+parseInt(sms_site_selection)+parseInt(email_sms_selection);
|
490 |
|
491 |
+
document.getElementById("display_my_all_inclusive_pricing").innerHTML = + sms_all_inclusive_mo_2fa;
|
492 |
+
|
493 |
+
}
|
494 |
|
495 |
+
function update_email_limit_all_inclusive_mo() {
|
496 |
+
var email_all_inclusive= document.getElementById("email_price_all_inclusive_mo").value;
|
497 |
+
var site_email_selection_all_inclusive = document.getElementById("all_inclusive_price_mo").value;
|
498 |
+
var sms_email_selection_all_inclusive = document.getElementById("sms_price_all_inclusive_mo").value;
|
499 |
+
var email_all_inclusive_mo= parseInt(base_price_site_all_inclusive)+parseInt(email_all_inclusive)+parseInt(site_email_selection_all_inclusive)+parseInt(sms_email_selection_all_inclusive);
|
500 |
|
501 |
+
document.getElementById("display_my_all_inclusive_pricing").innerHTML = + email_all_inclusive_mo;
|
502 |
|
503 |
+
}
|
504 |
+
|
505 |
+
|
506 |
+
</script>
|
507 |
+
</div>
|
508 |
|
509 |
+
<div class="mo2f_upgrade_main_div">
|
510 |
+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
|
511 |
|
512 |
+
<div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_enterprise">
|
513 |
|
514 |
+
<div id="pricing_head" style="text-align: center;">
|
515 |
+
<h3 class="mo2fa_pricing_head_mo_2fa">Enterprise</h3>
|
516 |
+
<h5 class="mo2fa_pricing_head_h5">Starting From </h5>
|
517 |
+
</div>
|
518 |
+
<div id="pricing_head_cost" class="mo2fa_pricing_head_supporter">
|
519 |
+
<center><span class="mo2fa_pricing_head_mo_2fa">$59</span>/Year</center>
|
520 |
+
</div>
|
521 |
+
|
522 |
+
<div id="getting_started_2fa_mo">
|
523 |
+
<center>
|
524 |
+
<a href="#addon"><button class="mo2fa_make_my_plan_mo mo2fa_enterprise_getting_started">Getting Started</button></a>
|
525 |
+
</center>
|
526 |
+
</div>
|
527 |
+
|
528 |
+
<div id="pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
|
529 |
+
<!--<div id="priceing_plan" style="background: #c9dbdbfa;width: 21%;margin-left: 11em;height: 4em;border-radius: 8px;margin-bottom: -30px;padding: 5px 5px 5px 5px;"><center><h3 class="mo2fa_price_mo_2fa">$59</h3>/year</br><p class="mo2fa_starting_from">Starting From</p></center></div>-->
|
530 |
+
|
531 |
+
<div id="pricing_feature_collection" class="mo2fa_pricing_feature_collection">
|
532 |
+
<ul class="mo2fa_ul">
|
533 |
+
<p class="mo2fa_feature"><strong>Features</strong></p>
|
534 |
+
|
535 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Sites</li>
|
536 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Users</li>
|
537 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i><span class="mo2fa_tooltip_methodlist">15+ Authentication Methods
|
538 |
+
<span class="methodlist">
|
539 |
+
<ul class="methods-list-mo2fa" style="margin-left: -43px; ">
|
540 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
|
541 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
|
542 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
|
543 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
|
544 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
|
545 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
|
546 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
|
547 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
|
548 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
|
549 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
|
550 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange QR Code Authentication</li>
|
551 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange Soft Token</li>
|
552 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange Push Notification</li>
|
553 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
|
554 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Hardware Token</li>
|
555 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
|
556 |
+
<li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
|
557 |
+
</ul>
|
558 |
+
</span>
|
559 |
+
</span></li>
|
560 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
|
561 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
|
562 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login </li>
|
563 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Strong Password</li>
|
564 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
|
565 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Add-Ons (Limited)</li>
|
566 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
|
567 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Security Features</li>
|
568 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon"><i class="fas fa-check" id="addon"></i>Multi-Site Support</li>
|
569 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
|
570 |
+
<li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
|
571 |
+
</ul>
|
572 |
+
|
573 |
+
</div>
|
574 |
+
</div>
|
575 |
+
<div id="pricing_addons" class="mo2fa_pricing">
|
576 |
+
<center>
|
577 |
+
<div id="purchase_user_limit">
|
578 |
+
<p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
|
579 |
+
<p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
|
580 |
+
<center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Users </h3>
|
581 |
+
<p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
|
582 |
+
<select id="user_price" onclick="update_user_limit()" onchange="update_user_limit()" class="mo2fa_increase_my_limit">
|
583 |
+
<option value="59">Upto-5 users - $59 per year</option>
|
584 |
+
<option value="128">Upto-50 users - $128 per year</option>
|
585 |
+
<option value="228">Upto-100 users - $228 per year</option>
|
586 |
+
<option value="378">Upto-500 users - $378 per year</option>
|
587 |
+
<option value="528">Upto-1000 users - $528 per year</option>
|
588 |
+
<option value="828">Upto-5000 users - $828 per year</option>
|
589 |
+
<option value="1028">Upto-10000 users - $1028 per year</option>
|
590 |
+
<option value="1528">Upto-20000 users - $1528 per year</option>
|
591 |
+
<option value="0">Unlimited Users - Contact Us</option>
|
592 |
+
</select>
|
593 |
+
</center>
|
594 |
+
</div>
|
595 |
+
<div id="purchase_sms_limit">
|
596 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions </h3>
|
597 |
+
<p class="mo2fa_country">(For all countries*)</p>
|
598 |
+
<select id="sms_price" onchange="update_sms_limit()" class="mo2fa_increase_my_limit">
|
599 |
+
<option value="0">0 Transaction - $0</option>
|
600 |
+
<option value="12">100 Transactions - $12</option>
|
601 |
+
<option value="54">500 Transactions - $54</option>
|
602 |
+
<option value="105">1000 Transactions - $105</option>
|
603 |
+
<option value="510">5000 Transactions - $510</option>
|
604 |
+
<option value="1010">10,000 Transactions - $1010</option>
|
605 |
+
<option value="4945">50,000 Transactions - $4945</option>
|
606 |
+
</select>
|
607 |
+
</center>
|
608 |
+
</div>
|
609 |
+
<div id="purchase_email_limit">
|
610 |
+
<center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of Email Transactions </h3>
|
611 |
+
<select id="email_price" onchange="update_email_limit()" class="mo2fa_increase_my_limit">
|
612 |
+
<option value="0">0 Transaction - $0</option>
|
613 |
+
<option value="2">100 Transactions - $2</option>
|
614 |
+
<option value="5">500 Transactions - $5</option>
|
615 |
+
<option value="7">1000 Transactions - $7</option>
|
616 |
+
<option value="20">5000 Transactions - $20</option>
|
617 |
+
<option value="30">10,000 Transactions - $30</option>
|
618 |
+
<option value="45">50,000 Transactions - $45</option>
|
619 |
+
</select>
|
620 |
+
</center>
|
621 |
+
</div>
|
622 |
+
<div class="mo2fa_dollar"> <center><span>$</span><span id="mo_pricing_adder"></span></center></div>
|
623 |
+
|
624 |
+
<div id="details">
|
625 |
+
<center>
|
626 |
+
<?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
|
627 |
+
<a onclick="mo2f_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
628 |
+
<?php }else{ ?>
|
629 |
+
<a onclick="mo2f_register_and_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Proceed</button></a>
|
630 |
+
<?php }?>
|
631 |
+
</center>
|
632 |
+
</div>
|
633 |
+
</center>
|
634 |
+
</div>
|
635 |
+
</div>
|
636 |
+
|
637 |
+
<script>
|
638 |
+
var base_price =0;
|
639 |
+
var display_me = parseInt(base_price)+parseInt(30)+parseInt(0)+parseInt(0);
|
640 |
+
document.getElementById("mo_pricing_adder").innerHTML = + display_me;
|
641 |
+
jQuery('#user_price').click();
|
642 |
+
function update_user_limit() {
|
643 |
+
var users = document.getElementById("user_price").value;
|
644 |
+
var sms_user_selection= document.getElementById("sms_price").value;
|
645 |
+
var email_user_selection= document.getElementById("email_price").value;
|
646 |
+
var users_addion = parseInt(base_price)+parseInt(users)+parseInt(sms_user_selection)+parseInt(email_user_selection);
|
647 |
+
|
648 |
+
document.getElementById("mo_pricing_adder").innerHTML = + users_addion;
|
649 |
+
|
650 |
+
}
|
651 |
|
652 |
+
function update_sms_limit() {
|
653 |
+
var sms = document.getElementById("sms_price").value;
|
654 |
+
var users_sms_selection = document.getElementById("user_price").value;
|
655 |
+
var email_sms_selection= document.getElementById("email_price").value;
|
656 |
|
657 |
+
var sms_addion = parseInt(base_price)+parseInt(sms)+parseInt(users_sms_selection )+parseInt(email_sms_selection);
|
658 |
+
|
659 |
+
document.getElementById("mo_pricing_adder").innerHTML = + sms_addion;
|
660 |
+
|
661 |
+
}
|
662 |
+
|
663 |
+
function update_email_limit() {
|
664 |
+
var email= document.getElementById("email_price").value;
|
665 |
+
var users_email_selection = document.getElementById("user_price").value;
|
666 |
+
var sms_email_selection = document.getElementById("sms_price").value;
|
667 |
+
var email_addion = parseInt(base_price)+parseInt(email)+parseInt(users_email_selection)+parseInt(sms_email_selection);
|
668 |
+
|
669 |
+
document.getElementById("mo_pricing_adder").innerHTML = + email_addion;
|
670 |
+
|
671 |
+
}
|
672 |
+
|
673 |
+
|
674 |
+
</script>
|
675 |
+
|
676 |
+
</div>
|
677 |
+
</div>
|
678 |
+
<div id="mo2fa_compare">
|
679 |
+
<center>
|
680 |
+
<div class=""><a href="#details" onclick="mo2fa_show_details()"><button class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Compare Features</button></a></div>
|
681 |
+
<div><a href="#details" onclick="mo2fa_show_details()"><button style="display: none;" class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Hide Comparison</button></a></div>
|
682 |
+
</center>
|
683 |
+
</div>
|
684 |
+
<div id="mo_ns_features_only" style="display: none;">
|
685 |
+
|
686 |
+
<div class="mo_wpns_upgrade_security_title" >
|
687 |
<div class="mo_wpns_upgrade_page_title_name">
|
688 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
689 |
WAF</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
702 |
<?php
|
703 |
if(isset($is_customer_registered) && $is_customer_registered) {
|
704 |
?>
|
705 |
+
<button
|
706 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
707 |
+
onclick="mo2f_upgradeform('wp_security_waf_plan','2fa_plan')">Upgrade</button>
|
708 |
+
<?php }
|
709 |
+
|
710 |
+
|
711 |
+
else{ ?>
|
712 |
+
<button
|
713 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
714 |
+
onclick="mo2f_register_and_upgradeform('wp_security_waf_plan','2fa_plan')">Upgrade</button>
|
715 |
+
<?php }
|
716 |
+
?>
|
717 |
</div>
|
718 |
<div><center><b>
|
719 |
<ul>
|
728 |
</div>
|
729 |
</div>
|
730 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
731 |
+
<div class="mo_wpns_upgrade_security_title" >
|
732 |
<div class="mo_wpns_upgrade_page_title_name">
|
733 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
734 |
Login and Spam</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
745 |
|
746 |
<div style="text-align: center;">
|
747 |
<?php if( isset($is_customer_registered)&& $is_customer_registered ) {
|
748 |
+
?>
|
749 |
+
<button class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
750 |
+
onclick="mo2f_upgradeform('wp_security_login_and_spam_plan','2fa_plan')">Upgrade</button>
|
751 |
+
<?php }else{ ?>
|
752 |
+
|
753 |
+
<button class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
754 |
+
onclick="mo2f_register_and_upgradeform('wp_security_login_and_spam_plan','2fa_plan')">Upgrade</button>
|
755 |
+
<?php }
|
756 |
+
?>
|
757 |
</div>
|
758 |
<div><center><b>
|
759 |
<ul>
|
770 |
|
771 |
</div>
|
772 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
773 |
+
<div class="mo_wpns_upgrade_security_title" >
|
774 |
<div class="mo_wpns_upgrade_page_title_name">
|
775 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
776 |
Malware Scanner</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
786 |
</center>
|
787 |
<div style="text-align: center;">
|
788 |
<?php if( isset($is_customer_registered) && $is_customer_registered) {
|
789 |
+
?>
|
790 |
+
<button
|
791 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
792 |
+
onclick="mo2f_upgradeform('wp_security_malware_plan','2fa_plan')">Upgrade</button>
|
793 |
+
<?php }else{ ?>
|
794 |
+
|
795 |
+
<button
|
796 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
797 |
+
onclick="mo2f_register_and_upgradeform('wp_security_malware_plan','2fa_plan')">Upgrade</button>
|
798 |
+
<?php }
|
799 |
+
?>
|
800 |
</div>
|
801 |
<div><center><b>
|
802 |
<ul>
|
811 |
</div>
|
812 |
</div>
|
813 |
<div class="mo_wpns_upgrade_page_space_in_div"></div>
|
814 |
+
<div class="mo_wpns_upgrade_security_title" >
|
815 |
<div class="mo_wpns_upgrade_page_title_name">
|
816 |
<h1 style="margin-top: 0%;padding: 10% 0% 0% 0%; color: white;font-size: 200%;">
|
817 |
Encrypted Backup</h1><hr class="mo_wpns_upgrade_page_hr"></div>
|
828 |
</center>
|
829 |
<div style="text-align: center;">
|
830 |
<?php if( isset($is_customer_registered) && $is_customer_registered) {
|
831 |
+
?>
|
832 |
+
<button
|
833 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
834 |
+
onclick="mo2f_upgradeform('wp_security_backup_plan','2fa_plan')">Upgrade</button>
|
835 |
+
<?php }else{ ?>
|
836 |
+
<button
|
837 |
+
class="mo_wpns_button mo_wpns_button1 mo_wpns_upgrade_page_button"
|
838 |
+
onclick="mo2f_register_and_upgradeform('wp_security_backup_plan' ,'2fa_plan')">Upgrade</button>
|
839 |
+
<?php }
|
840 |
+
?>
|
841 |
|
842 |
</div>
|
843 |
<div><center><b>
|
852 |
</b></center></div>
|
853 |
</div></div>
|
854 |
</div>
|
855 |
+
<center>
|
856 |
+
<br>
|
857 |
+
<div id="more_details" style="display:none;">
|
858 |
+
<div class="mo2fa_table-scrollbar"></br></br>
|
859 |
+
<table class="table mo2fa_table_features table-striped">
|
860 |
+
<caption class="pricing_head_mo_2fa"><h1>Feature Details</h1></caption>
|
861 |
+
<thead>
|
862 |
+
<tr class="mo2fa_main_category_header" style="font-size: 20px;">
|
863 |
+
<th scope="col">Features</th>
|
864 |
+
<th scope="col" class="mo2fa_plugins"><center>Premium Lite</center></th>
|
865 |
+
<th scope="col" class="mo2fa_plugins"><center>Premium</center></th>
|
866 |
+
<th scope="col" class="mo2fa_plugins"><center>Enterprise</center></th>
|
867 |
+
</tr>
|
868 |
+
</thead>
|
869 |
+
<tbody>
|
870 |
+
<tr>
|
871 |
+
<th scope="row">Unlimited Sites</th>
|
872 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
873 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
874 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
875 |
+
</tr>
|
876 |
+
|
877 |
+
<tr>
|
878 |
+
<th scope="row">Unlimited Users</th>
|
879 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
880 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
881 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
882 |
+
|
883 |
+
</tr>
|
884 |
+
<tr class="bg_category_main_mo_2fa">
|
885 |
+
<th scope="row">Authentication Methods</th>
|
886 |
+
<td></td>
|
887 |
+
<td></td>
|
888 |
+
<td></td>
|
889 |
+
</tr>
|
890 |
+
<tr>
|
891 |
+
<th scope="row" class="category_feature_mo_2fa">Google Authenticator</th>
|
892 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
893 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
894 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
895 |
+
</tr>
|
896 |
+
<tr>
|
897 |
+
<th scope="row" class="category_feature_mo_2fa">Security Questions</th>
|
898 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
899 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
900 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
901 |
+
|
902 |
+
</tr>
|
903 |
+
<tr>
|
904 |
+
<th scope="row" class="category_feature_mo_2fa">TOTP Based Authenticator</th>
|
905 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
906 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
907 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
908 |
+
|
909 |
+
</tr>
|
910 |
+
<tr>
|
911 |
+
<th scope="row" class="category_feature_mo_2fa">Authy Authenticator</th>
|
912 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
913 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
914 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
915 |
+
|
916 |
+
</tr>
|
917 |
+
<tr>
|
918 |
+
<th scope="row" class="category_feature_mo_2fa">Email Verification</th>
|
919 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
920 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
921 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
922 |
+
|
923 |
+
</tr>
|
924 |
+
<tr>
|
925 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over Email (Email Charges apply)</th>
|
926 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
927 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
928 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
929 |
+
|
930 |
+
|
931 |
+
</tr>
|
932 |
+
<tr>
|
933 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over SMS (SMS Charges apply)</th>
|
934 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
935 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
936 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
937 |
+
|
938 |
+
</tr>
|
939 |
+
|
940 |
+
<tr>
|
941 |
+
<th scope="row" class="category_feature_mo_2fa">miniOrange QR Code Authentication</th>
|
942 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
943 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
944 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
945 |
+
</tr>
|
946 |
+
<tr>
|
947 |
+
<th scope="row" class="category_feature_mo_2fa">miniOrange Soft Token</th>
|
948 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
949 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
950 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
951 |
+
</tr>
|
952 |
+
<tr>
|
953 |
+
<th scope="row" class="category_feature_mo_2fa">miniOrange Push Notification</th>
|
954 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
955 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
956 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
957 |
+
</tr>
|
958 |
+
<tr>
|
959 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over SMS and Email (SMS and Email Charges apply)</th>
|
960 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
961 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
962 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
963 |
+
|
964 |
+
</tr>
|
965 |
+
<tr>
|
966 |
+
<th scope="row" class="category_feature_mo_2fa">Hardware Token</th>
|
967 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
968 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
969 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
970 |
+
|
971 |
+
</tr>
|
972 |
+
<tr>
|
973 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over Whatsapp (Add-on)</th>
|
974 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
975 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
976 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
977 |
+
</tr>
|
978 |
+
<tr>
|
979 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over Telegram</th>
|
980 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
981 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
982 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
983 |
+
</tr>
|
984 |
+
<tr class="bg_category_main_mo_2fa">
|
985 |
+
<th scope="row">Backup Login Methods</th>
|
986 |
+
<td></td>
|
987 |
+
<td></td>
|
988 |
+
<td></td>
|
989 |
+
</tr>
|
990 |
+
<tr>
|
991 |
+
<th scope="row" class="category_feature_mo_2fa">Security Questions (KBA)</th>
|
992 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
993 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
994 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
995 |
+
</tr>
|
996 |
+
<tr>
|
997 |
+
<th scope="row" class="category_feature_mo_2fa">OTP Over Email</th>
|
998 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
999 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1000 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1001 |
+
</tr>
|
1002 |
+
<tr>
|
1003 |
+
<th scope="row" class="category_feature_mo_2fa">Backup Codes</th>
|
1004 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1005 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1006 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1007 |
+
</tr>
|
1008 |
+
<tr class="bg_category_main_mo_2fa">
|
1009 |
+
<th scope="row">Password Policy</th>
|
1010 |
+
<td></td>
|
1011 |
+
<td></td>
|
1012 |
+
<td></td>
|
1013 |
+
|
1014 |
+
</tr>
|
1015 |
+
<tr>
|
1016 |
+
<th scope="row" class="category_feature_mo_2fa">Passwordless Login</th>
|
1017 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1018 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1019 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1020 |
+
</tr>
|
1021 |
+
<tr>
|
1022 |
+
<th scope="row" class="category_feature_mo_2fa">Strong Password</th>
|
1023 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1024 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1025 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1026 |
+
|
1027 |
+
</tr>
|
1028 |
+
<tr>
|
1029 |
+
<th scope="row">Custom Gateway</th>
|
1030 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1031 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1032 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1033 |
+
|
1034 |
+
</tr>
|
1035 |
+
<tr class="bg_category_main_mo_2fa">
|
1036 |
+
<th scope="row">Add-Ons</th>
|
1037 |
+
<td></td>
|
1038 |
+
<td></td>
|
1039 |
+
<td></td>
|
1040 |
+
|
1041 |
+
</tr>
|
1042 |
+
<tr>
|
1043 |
+
<th scope="row" class="category_feature_mo_2fa">Remember Device Add-on</br><p class="description_mo_2fa">You can save your device using the Remember device addon and you will get a two-factor authentication </br>prompt to check your identity if you try to login from different devices.</p></th>
|
1044 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1045 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1046 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1047 |
+
</tr>
|
1048 |
+
<tr>
|
1049 |
+
<th scope="row" class="category_feature_mo_2fa">Personalization Add-on<p class="description_mo_2fa">You'll get many more customization options in Personalization, such as </br>ustom Email and SMS Template, Custom Login Popup, Custom Security Questions, and many more.</p></th>
|
1050 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1051 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1052 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1053 |
+
</tr>
|
1054 |
+
<tr>
|
1055 |
+
<th scope="row" class="category_feature_mo_2fa">Short Codes Add-on<p class="description_mo_2fa">Shortcode Add-ons mostly include Allow 2fa shortcode (you can use this this to add 2fa on any page), </br>Reconfigure 2fa add-on (you can use this add-on to reconfigure your 2fa if you have lost your 2fa verification ability), remember device shortcode.</p></th>
|
1056 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1057 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1058 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1059 |
+
</tr>
|
1060 |
+
<tr>
|
1061 |
+
<th scope="row" class="category_feature_mo_2fa">Session Management</th>
|
1062 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1063 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1064 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1065 |
+
</tr><tr>
|
1066 |
+
<th scope="row" class="category_feature_mo_2fa">Page Restriction Add-On</th>
|
1067 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1068 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1069 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1070 |
+
</tr><tr>
|
1071 |
+
<th scope="row" class="category_feature_mo_2fa">Attribute Based Redirection</th>
|
1072 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1073 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1074 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1075 |
+
</tr>
|
1076 |
+
<th scope="row" class="category_feature_mo_2fa">SCIM-User Provisioning</th>
|
1077 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1078 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1079 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1080 |
+
</tr>
|
1081 |
+
|
1082 |
+
|
1083 |
+
<tr class="bg_category_main_mo_2fa">
|
1084 |
+
<th scope="row">Advance Wordpress Login Settings</th>
|
1085 |
+
<td></td>
|
1086 |
+
<td></td>
|
1087 |
+
<td></td>
|
1088 |
+
|
1089 |
+
</tr>
|
1090 |
+
<tr>
|
1091 |
+
<th scope="row" class="category_feature_mo_2fa">Force Two Factor for Users</th>
|
1092 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1093 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1094 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1095 |
+
</tr>
|
1096 |
+
<tr>
|
1097 |
+
<th scope="row" class="category_feature_mo_2fa">Role Based and User Based Authentication settings</th>
|
1098 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1099 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1100 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1101 |
+
</tr>
|
1102 |
+
<tr>
|
1103 |
+
<th scope="row" class="category_feature_mo_2fa">Email Verififcation during Two-Factor Registration</th>
|
1104 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1105 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1106 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1107 |
+
|
1108 |
+
</tr>
|
1109 |
+
<tr>
|
1110 |
+
<th scope="row" class="category_feature_mo_2fa">Custom Redirect URL</th>
|
1111 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1112 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1113 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1114 |
+
|
1115 |
+
</tr><tr>
|
1116 |
+
<th scope="row" class="category_feature_mo_2fa">Inline Registration</th>
|
1117 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1118 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1119 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1120 |
+
|
1121 |
+
</tr><tr>
|
1122 |
+
<th scope="row" class="category_feature_mo_2fa">Mobile Support</th>
|
1123 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1124 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1125 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1126 |
+
|
1127 |
+
</tr><tr>
|
1128 |
+
<th scope="row" class="category_feature_mo_2fa">Privacy Policy Settings</th>
|
1129 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1130 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1131 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1132 |
+
|
1133 |
+
</tr><tr>
|
1134 |
+
<th scope="row" class="category_feature_mo_2fa">XML-RPC </th>
|
1135 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1136 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1137 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1138 |
+
|
1139 |
+
</tr>
|
1140 |
+
<tr class="bg_category_main_mo_2fa">
|
1141 |
+
<th scope="row">Advance Security Features</th>
|
1142 |
+
<td></td>
|
1143 |
+
<td></td>
|
1144 |
+
<td></td>
|
1145 |
+
|
1146 |
+
</tr>
|
1147 |
+
<tr>
|
1148 |
+
<th scope="row" class="category_feature_mo_2fa">Brute Force Protection</th>
|
1149 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1150 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1151 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1152 |
+
|
1153 |
+
</tr>
|
1154 |
+
<tr>
|
1155 |
+
<th scope="row" class="category_feature_mo_2fa">IP Blocking </th>
|
1156 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1157 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1158 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1159 |
+
|
1160 |
+
</tr>
|
1161 |
+
<tr>
|
1162 |
+
<th scope="row" class="category_feature_mo_2fa">Monitoring</th>
|
1163 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1164 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1165 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1166 |
+
|
1167 |
+
</tr> <tr>
|
1168 |
+
<th scope="row" class="category_feature_mo_2fa">File Protection</th>
|
1169 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1170 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1171 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1172 |
+
|
1173 |
+
</tr>
|
1174 |
+
<tr>
|
1175 |
+
<th scope="row" class="category_feature_mo_2fa">Country Blocking </th>
|
1176 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1177 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1178 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1179 |
+
|
1180 |
+
</tr>
|
1181 |
+
<tr>
|
1182 |
+
<th scope="row" class="category_feature_mo_2fa">HTACCESS Level Blocking </th>
|
1183 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1184 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1185 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1186 |
+
|
1187 |
+
</tr>
|
1188 |
+
<tr>
|
1189 |
+
<th scope="row" class="category_feature_mo_2fa">Browser Blocking </th>
|
1190 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1191 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1192 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1193 |
+
|
1194 |
+
</tr>
|
1195 |
+
<tr>
|
1196 |
+
<th scope="row" class="category_feature_mo_2fa">Block Global Blacklisted Email Domains</th>
|
1197 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1198 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1199 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1200 |
+
|
1201 |
+
</tr>
|
1202 |
+
<tr>
|
1203 |
+
<th scope="row" class="category_feature_mo_2fa">Manual Block Email Domains</th>
|
1204 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1205 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1206 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1207 |
+
|
1208 |
+
</tr>
|
1209 |
+
<tr>
|
1210 |
+
<th scope="row" class="category_feature_mo_2fa">DB Backup</th>
|
1211 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1212 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1213 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1214 |
+
|
1215 |
+
</tr>
|
1216 |
+
<tr>
|
1217 |
+
<th scope="row">Multi-Site Support</th>
|
1218 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1219 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1220 |
+
<td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
|
1221 |
+
</tr><tr>
|
1222 |
+
<th scope="row">Language Translation Support</th>
|
1223 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1224 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1225 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1226 |
+
|
1227 |
+
</tr><tr>
|
1228 |
+
<th scope="row">Get online support with GoTo/Zoom meeting</th>
|
1229 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1230 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1231 |
+
<td><center><i class="fas fa-check"></i></center></td>
|
1232 |
+
|
1233 |
+
</tr>
|
1234 |
+
</tbody>
|
1235 |
+
</table>
|
1236 |
+
</div>
|
1237 |
+
</div>
|
1238 |
+
</center>
|
1239 |
+
<div class="mo_wpns_setting_layout mo2fa_setting_layout">
|
1240 |
+
<div>
|
1241 |
+
<h2><?php echo mo2f_lt('Steps to upgrade to the Premium Plan :');?></h2>
|
1242 |
+
<ol class="mo2f_licensing_plans_ol">
|
1243 |
+
<li><?php echo mo2f_lt( 'Click on <b>Proceed</b>/<b>Upgrade</b> button of your preferred plan above.' ); ?></li>
|
1244 |
+
<li><?php echo mo2f_lt( ' You will be redirected to the miniOrange Console. Enter your miniOrange username and password, after which you will be redirected to the payment page.' ); ?></li>
|
1245 |
+
|
1246 |
+
<li><?php echo mo2f_lt( 'Select the number of users/sites you wish to upgrade for, and any add-ons if you wish to purchase, and make the payment.' ); ?></li>
|
1247 |
+
<li><?php echo mo2f_lt( 'After making the payment, you can find the Premium Lite/Premium/Enterprise plugin to download from the <b>License</b> tab in the left navigation bar of the miniOrange Console.' ); ?></li>
|
1248 |
+
<li><?php echo mo2f_lt( 'Download the paid plugin from the <b>Releases and Downloads</b> tab through miniOrange Console .' ); ?></li>
|
1249 |
+
<li><?php echo mo2f_lt( 'Deactivate and delete the free plugin from <b>WordPress dashboard</b> and install the paid plugin downloaded.' ); ?></li>
|
1250 |
+
<li><?php echo mo2f_lt( 'Login to the paid plugin with the miniOrange account you used to make the payment, after this your users will be able to set up 2FA.' ); ?></li>
|
1251 |
+
</ol>
|
1252 |
</div>
|
1253 |
+
<hr>
|
1254 |
+
<div>
|
1255 |
+
<h2><?php echo mo2f_lt('Note :');?></h2>
|
1256 |
+
<ol class="mo2f_licensing_plans_ol">
|
1257 |
+
<li><?php echo mo2f_lt( 'The plugin works with many of the default custom login forms (like Woocommerce/Theme My Login/Login With Ajax/User Pro/Elementor), however if you face any issues with your custom login form, contact us and we will help you with it.' ); ?></li>
|
1258 |
+
<li><?php echo mo2f_lt( 'The <b>license key </b>is required to activate the <b>Premium Lite/Premium</b> Plugins. You will have to login with the miniOrange Account you used to make the purchase then enter license key to activate plugin.' ); ?>
|
1259 |
+
|
1260 |
+
</li>
|
1261 |
+
</ol>
|
1262 |
+
</div>
|
1263 |
+
<hr>
|
1264 |
+
<br>
|
1265 |
+
<div>
|
1266 |
+
<?php echo mo2f_lt( '<b class="mo2fa_note">Refund Policy : </b>At miniOrange, we want to ensure you are 100% happy with your purchase. If the premium plugin you purchased is not working as advertised and you\'ve attempted to resolve any issues with our support team, which couldn\'t get resolved then we will refund the whole amount within 10 days of the purchase. ' ); ?>
|
1267 |
+
</div>
|
1268 |
+
<br>
|
1269 |
+
<hr>
|
1270 |
+
<br>
|
1271 |
+
<div><?php echo mo2f_lt( '<b class="mo2fa_note">SMS Charges : </b>If you wish to choose OTP Over SMS/OTP Over SMS and Email as your authentication method,
|
1272 |
+
SMS transaction prices & SMS delivery charges apply and they depend on country. SMS validity is for lifetime.' ); ?>
|
1273 |
+
</div>
|
1274 |
+
<br>
|
1275 |
+
<hr>
|
1276 |
+
<br>
|
1277 |
+
<div>
|
1278 |
+
<?php echo mo2f_lt( '<b class="mo2fa_note">Multisite : </b>For your first license 3 subsites will be activated automatically on the same domain. And if you wish to use it for more please contact support ' ); ?>
|
1279 |
+
</div>
|
1280 |
+
<br>
|
1281 |
+
<hr>
|
1282 |
+
<br>
|
1283 |
+
<div>
|
1284 |
+
<?php echo mo2f_lt( '<b class="mo2fa_note">Privacy Policy : </b><a href="https://www.miniorange.com/2-factor-authentication-for-wordpress-gdpr">Click Here</a>
|
1285 |
+
to read our Privacy Policy.' ); ?>
|
1286 |
+
</div>
|
1287 |
+
<br>
|
1288 |
+
<hr>
|
1289 |
+
<br>
|
1290 |
+
<div>
|
1291 |
+
<?php echo mo2f_lt( '<b class="mo2fa_note">Contact Us : </b>If you have any doubts regarding the licensing plans, you can mail us at <a href="mailto:info@xecurify.com"><i>info@xecurify.com</i></a>
|
1292 |
+
or submit a query using the support form.' ); ?>
|
1293 |
+
</div>
|
1294 |
+
</div>
|
1295 |
+
</center>
|
1296 |
+
<div id="mo2f_payment_option" class="mo_wpns_setting_layout mo2fa_setting_layout">
|
1297 |
+
<div>
|
1298 |
+
<h3>Supported Payment Methods</h3><hr>
|
1299 |
+
<div class="mo_2fa_container">
|
1300 |
+
<div class="mo_2fa_card-deck">
|
1301 |
+
<div class="mo_2fa_card mo_2fa_animation">
|
1302 |
+
<div class="mo_2fa_Card-header">
|
1303 |
+
<?php
|
1304 |
+
echo'<img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/card.png" class="mo2fa_card">';?>
|
1305 |
+
</div>
|
1306 |
+
<hr class="mo2fa_hr">
|
1307 |
+
<div class="mo_2fa_card-body">
|
1308 |
+
<p class="mo2fa_payment_p">If payment is done through Credit Card/Intenational debit card, the license would be created automatically once payment is completed. </p>
|
1309 |
+
<p class="mo2fa_payment_p"><i><b>For guide
|
1310 |
+
<?php echo'<a href='.MoWpnsConstants::FAQ_PAYMENT_URL.' target="blank">Click Here.</a>';?></b></i></p>
|
1311 |
|
1312 |
+
</div>
|
1313 |
+
</div>
|
1314 |
+
<div class="mo_2fa_card mo_2fa_animation">
|
1315 |
+
<div class="mo_2fa_Card-header">
|
1316 |
+
<?php
|
1317 |
+
echo'<img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/paypal.png" class="mo2fa_card">';?>
|
1318 |
+
</div>
|
1319 |
+
<hr class="mo2fa_hr">
|
1320 |
+
<div class="mo_2fa_card-body">
|
1321 |
+
<?php echo'<p class="mo2fa_payment_p">Use the following PayPal id for payment via PayPal.</p><p><i><b style="color:#1261d8"><a href="mailto:'.MoWpnsConstants::SUPPORT_EMAIL.'">info@xecurify.com</a></b></i>';?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1322 |
|
1323 |
+
</div>
|
1324 |
+
</div>
|
1325 |
+
<div class="mo_2fa_card mo_2fa_animation">
|
1326 |
+
<div class="mo_2fa_Card-header">
|
1327 |
+
<?php
|
1328 |
+
echo'<img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/bank-transfer.png" class="mo2fa_card mo2fa_bank_transfer">';?>
|
1329 |
+
|
1330 |
+
</div>
|
1331 |
+
<hr class="mo2fa_hr">
|
1332 |
+
<div class="mo_2fa_card-body">
|
1333 |
+
<?php echo'<p class="mo2fa_payment_p">If you want to use Bank Transfer for payment then contact us at <i><b style="color:#1261d8"><a href="mailto:'.MoWpnsConstants::SUPPORT_EMAIL.'">info@xecurify.com</a></b></i> so that we can provide you bank details. </i></p>';?>
|
1334 |
+
</div>
|
1335 |
+
</div>
|
1336 |
+
</div>
|
1337 |
+
</div>
|
1338 |
+
<div class="mo_2fa_mo-supportnote">
|
1339 |
+
<p class="mo2fa_payment_p"><b>Note :</b> Once you have paid through PayPal/Bank Transfer, please inform us at <i><b style="color:#1261d8"><a href="mailto:'.MoWpnsConstants::SUPPORT_EMAIL.'">info@xecurify.com</a></b></i>, so that we can confirm and update your License.</p>
|
1340 |
+
</div>
|
1341 |
+
</div>
|
1342 |
+
</div>
|
|
|
|
|
|
|
1343 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1344 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1345 |
<?php
|
|
|
1346 |
function mo2f_waf_yearly_standard_pricing() {
|
1347 |
?>
|
1348 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1349 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1350 |
|
1351 |
+
<select id="mo2f_yearly" class="form-control mo2fa_form_control1">
|
1352 |
+
<option> <?php echo mo2f_lt( '1 site - $50 per year' ); ?> </option>
|
1353 |
+
<option> <?php echo mo2f_lt( 'Upto 5 sites - $100 per year' ); ?> </option>
|
1354 |
+
<option> <?php echo mo2f_lt( 'Upto 10 sites - $150 per year' ); ?> </option>
|
1355 |
+
|
1356 |
+
</select>
|
1357 |
+
</p>
|
1358 |
|
1359 |
<?php
|
1360 |
}
|
1363 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1364 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1365 |
|
1366 |
+
<select id="mo2f_yearly" class="form-control mo2fa_form_control1">
|
1367 |
+
<option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
|
1368 |
+
<option> <?php echo mo2f_lt( 'Upto 5 sites - $35 per year' ); ?> </option>
|
1369 |
+
<option> <?php echo mo2f_lt( 'Upto 10 sites - $60 per year' ); ?> </option>
|
1370 |
+
|
1371 |
+
</select>
|
1372 |
+
</p>
|
1373 |
|
1374 |
<?php
|
1375 |
}
|
1378 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1379 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1380 |
|
1381 |
+
<select id="mo2f_yearly" class="form-control mo2fa_form_control1">
|
1382 |
+
<option> <?php echo mo2f_lt( '1 site - $30 per year' ); ?> </option>
|
1383 |
+
<option> <?php echo mo2f_lt( 'Upto 5 sites - $50 per year' ); ?> </option>
|
1384 |
+
<option> <?php echo mo2f_lt( 'Upto 10 sites - $70 per year' ); ?> </option>
|
1385 |
+
|
1386 |
+
</select>
|
1387 |
+
</p>
|
1388 |
|
1389 |
<?php
|
1390 |
}
|
1393 |
<p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
|
1394 |
id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
|
1395 |
|
1396 |
+
<select id="mo2f_yearly" class="form-control mo2fa_form_control1">
|
1397 |
+
<option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
|
1398 |
+
<option> <?php echo mo2f_lt( 'Upto 5 sites - $35 per year' ); ?> </option>
|
1399 |
+
<option> <?php echo mo2f_lt( 'Upto 10 sites - $60 per year' ); ?> </option>
|
1400 |
+
|
1401 |
+
</select>
|
1402 |
+
</p>
|
1403 |
|
1404 |
<?php
|
1405 |
}
|
1407 |
function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
|
1408 |
switch ( $mo2f_var ) {
|
1409 |
case 1:
|
1410 |
+
return "<div style='color: #20b2aa;font-size: x-large;float:left;margin:0px 5px;'>🗸</div>";
|
1411 |
case 0:
|
1412 |
+
return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
|
1413 |
default:
|
1414 |
return $mo2f_var;
|
1415 |
}
|
1466 |
jQuery.post(ajaxurl, data, function(response) {
|
1467 |
});
|
1468 |
}
|
1469 |
+
function show_2fa_plans()
|
1470 |
{
|
1471 |
+
document.getElementById('mo_ns_features_only').style.display = "none";
|
1472 |
+
document.getElementById('mo2f_twofa_plans').style.display = "flex";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1473 |
document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
|
1474 |
+
document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
|
1475 |
+
document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
|
1476 |
+
document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
|
1477 |
+
document.getElementById('mo2fa_compare').style.display = "block";
|
1478 |
}
|
|
|
1479 |
function mo_ns_show_plans()
|
1480 |
{
|
1481 |
document.getElementById('mo_ns_features_only').style.display = "block";
|
1482 |
+
document.getElementById('mo2f_twofa_plans').style.display = "none";
|
|
|
|
|
|
|
|
|
|
|
|
|
1483 |
document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
|
1484 |
+
document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
|
1485 |
+
document.getElementById('mo_ns_licensing_plans_title').style.display = "none";
|
1486 |
+
document.getElementById('mo_ns_licensing_plans_title1').style.display = "block";
|
1487 |
+
document.getElementById('mo2fa_compare').style.display = "none";
|
1488 |
}
|
1489 |
|
1490 |
function wpns_pricing()
|
1492 |
window.open("https://security.miniorange.com/pricing/");
|
1493 |
}
|
1494 |
|
1495 |
+
function mo2fa_show_details()
|
1496 |
+
{
|
1497 |
+
jQuery('#more_details').toggle();
|
1498 |
+
jQuery('.mo2fa_more_details_p1').toggle();
|
1499 |
+
jQuery('.mo2fa_more_details_p').toggle();
|
1500 |
+
jQuery('.mo2fa_compare1').toggle();
|
1501 |
+
}
|
1502 |
+
|
1503 |
</script>
|
1504 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
1505 |
<script>
|
1506 |
$(document).ready(function(){
|
1507 |
|
|
|
|
|
|
|
1508 |
|
1509 |
+
|
|
|
|
|
1510 |
|
1511 |
});
|
1512 |
</script>
|