| @@ -13,9 +13,9 @@ | ||
| 13 | 13 | wp_die('Sorry, but you do not have permissions to change settings.'); |
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | if(!loginizer_is_premium() && count($_POST) > 0){ |
| 17 | - $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer'); | |
| 17 | + $lz_error['not_in_free'] = __('This feature is not available in the Free version.', 'loginizer').'<a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>'.esc_html__('Upgrade to Pro', 'loginizer').'</b></a>'; | |
| 18 | 18 | return loginizer_page_2fa_T(); |
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | $lz_roles = get_editable_roles(); |
| @@ -37,8 +37,10 @@ | ||
| 37 | 37 | $option['2fa_email'] = (int) lz_optpost('2fa_email'); |
| 38 | 38 | $option['question'] = (int) lz_optpost('question'); |
| 39 | 39 | $option['2fa_email_force'] = (int) lz_optpost('2fa_email_force'); |
| 40 | 40 | |
| 41 | + $option['2fa_enforce'] = !empty($_POST['lz_2fa_enforce']) ? map_deep(wp_unslash($_POST['lz_2fa_enforce']), 'sanitize_text_field') : []; | |
| 42 | + | |
| 41 | 43 | // Any roles to apply to ? |
| 42 | 44 | foreach($lz_roles as $k => $v){ |
| 43 | 45 | |
| 44 | 46 | if(lz_optpost('2fa_roles_'.$k)){ |
| @@ -273,9 +275,17 @@ | ||
| 273 | 275 | // Loginizer - Two Factor Auth Page |
| 274 | 276 | function loginizer_page_2fa_T(){ |
| 275 | 277 | |
| 276 | 278 | global $loginizer, $lz_error, $lz_env, $lz_roles, $lz_options, $saved_msgs; |
| 279 | + | |
| 280 | + $enforce_reg = get_option('loginizer_2fa', [ | |
| 281 | + '2fa_enforce' => [] | |
| 282 | + ]); | |
| 283 | + | |
| 284 | + $enforce_type = !empty($enforce_reg['2fa_enforce']['type']) ? sanitize_text_field(wp_unslash($enforce_reg['2fa_enforce']['type'])) : 'none'; | |
| 285 | + $force_email_2fa = lz_POSTchecked('2fa_email_force', (empty($loginizer['2fa_email_force']) ? false : true), 'save_lz'); | |
| 277 | 286 | |
| 287 | + | |
| 278 | 288 | // Universal header |
| 279 | 289 | loginizer_page_header('Two Factor Authentication'); |
| 280 | 290 | |
| 281 | 291 | loginizer_feature_available('Two-Factor Authentication'); |
| @@ -281,9 +291,9 @@ | ||
| 281 | 291 | loginizer_feature_available('Two-Factor Authentication'); |
| 282 | 292 | |
| 283 | 293 | // Saved ? |
| 284 | 294 | if(!empty($GLOBALS['lz_saved'])){ |
| 285 | - echo '<div id="message" class="updated"><p>'. __(is_string($GLOBALS['lz_saved']) ? $GLOBALS['lz_saved'] : 'The settings were saved successfully', 'loginizer'). '</p></div><br />'; | |
| 295 | + echo '<div id="message" class="updated"><p>'. (is_string($GLOBALS['lz_saved']) ? $GLOBALS['lz_saved'] : __('The settings were saved successfully', 'loginizer')). '</p></div><br />'; | |
| 286 | 296 | } |
| 287 | 297 | |
| 288 | 298 | // Any errors ? |
| 289 | 299 | if(!empty($lz_error)){ |
| @@ -359,9 +369,9 @@ | ||
| 359 | 369 | <label><?php echo __('Force OTP via Email', 'loginizer'); ?></label><br> |
| 360 | 370 | <span class="exp"><?php echo __('If the user does not have any 2FA method selected, this will enforce the OTP via Email for the users.', 'loginizer'); ?></span> |
| 361 | 371 | </td> |
| 362 | 372 | <td> |
| 363 | - <input type="checkbox" value="1" name="2fa_email_force" <?php echo lz_POSTchecked('2fa_email_force', (empty($loginizer['2fa_email_force']) ? false : true), 'save_lz'); ?> /> | |
| 373 | + <input type="checkbox" value="1" name="2fa_email_force" id="lz_email_2fa_enforce" <?php echo lz_POSTchecked('2fa_email_force', (empty($loginizer['2fa_email_force']) ? false : true), 'save_lz'); ?> /> | |
| 364 | 374 | </td> |
| 365 | 375 | </tr> |
| 366 | 376 | <tr> |
| 367 | 377 | <td scope="row" valign="top" style="width:70% !important"> |
| @@ -368,9 +378,9 @@ | ||
| 368 | 378 | <label><?php echo __('Apply 2FA to Roles', 'loginizer'); ?></label><br> |
| 369 | 379 | <span class="exp"><?php echo __('Select the Roles to which 2FA should be applied.', 'loginizer'); ?></span> |
| 370 | 380 | </td> |
| 371 | 381 | <td> |
| 372 | - <input type="checkbox" value="1" onchange="lz_roles_handle()" name="2fa_roles_all" id="2fa_roles_all" <?php echo lz_POSTchecked('2fa_roles_all', (empty($loginizer['2fa_roles']) ? true : false), 'save_lz'); ?> /> All<br /> | |
| 382 | + <input type="checkbox" value="1" onchange="lz_roles_handle()" name="2fa_roles_all" id="2fa_roles_all" <?php echo lz_POSTchecked('2fa_roles_all', (empty($loginizer['2fa_roles']) ? true : false), 'save_lz'); ?> /><?php esc_html_e('All', 'loginizer'); ?><br /> | |
| 373 | 383 | <?php |
| 374 | 384 | |
| 375 | 385 | foreach($lz_roles as $k => $v){ |
| 376 | 386 | echo '<span class="lz_roles"><input type="checkbox" value="1" name="2fa_roles_'.$k.'" '.lz_POSTchecked('2fa_roles_'.$k, (empty($loginizer['2fa_roles'][$k]) ? false : true), 'save_lz').' /> '.$v['name'].'<br /></span>'; |
| @@ -379,9 +389,52 @@ | ||
| 379 | 389 | ?> |
| 380 | 390 | </td> |
| 381 | 391 | </tr> |
| 382 | 392 | </table><br /> |
| 383 | - <center><input name="save_lz" class="button button-primary action" value="<?php echo __('Save Settings', 'loginizer'); ?>" type="submit" /></center> | |
| 393 | + <?php if(empty($force_email_2fa)){ ?> | |
| 394 | + <table class="form-table lz_2fa_enforce_block"> | |
| 395 | + <tr> | |
| 396 | + <td scope="row" valign="top" style="width:50% !important;"> | |
| 397 | + <label><?php echo esc_html__('Enforcement Type', 'loginizer'); ?></label><br /> | |
| 398 | + <span class="description"><?php echo esc_html__('1. Choose Strict Setup to require users to setup 2FA immediately. OR', 'loginizer'); ?></span><br /> | |
| 399 | + <span class="description"><?php echo esc_html__('2. Choose Grace Timed Setup to give users time to complete 2FA', 'loginizer'); ?></span><br /> | |
| 400 | + </td> | |
| 401 | + <td> | |
| 402 | + <select name="lz_2fa_enforce[type]" id="lz_2fa_enforce_type"> | |
| 403 | + <option value="none"> | |
| 404 | + <?php echo esc_html__('None', 'loginizer'); ?> | |
| 405 | + </option> | |
| 406 | + <option value="strict_enforce" <?php echo (($enforce_type === 'strict_enforce')) ? 'selected' : ''; ?>> | |
| 407 | + <?php echo esc_html__('Strict (Requires 2FA setup immediately)', 'loginizer'); ?> | |
| 408 | + </option> | |
| 409 | + <option value="grace_enforce" <?php echo (($enforce_type === 'grace_enforce')) ? 'selected' : ''; ?>> | |
| 410 | + <?php echo esc_html__('Grace Period (Give some time to setup)', 'loginizer'); ?> | |
| 411 | + </option> | |
| 412 | + </select> | |
| 413 | + </td> | |
| 414 | + </tr> | |
| 415 | + <tr class="lz_2fa_grace_time" <?php echo (($enforce_type !== 'grace_enforce') ? 'style="display:none;"' : ''); ?>> | |
| 416 | + <td scope="row" valign="top" style="width:50% !important;"></td> | |
| 417 | + <td> | |
| 418 | + <input type="number" name="lz_2fa_enforce[time]" min="1" value="<?php echo !empty($enforce_reg['2fa_enforce']['time']) ? esc_attr($enforce_reg['2fa_enforce']['time']) : '1'; ?>" id="" style="width:15% !important;margin-right:15px;"> | |
| 419 | + <input type="radio" name="lz_2fa_enforce[time_unit]" id="lz_2fa_time_d" value="days" <?php checked(!empty($enforce_reg['2fa_enforce']['time_unit']) && ($enforce_reg['2fa_enforce']['time_unit'] == 'days')); ?> checked> | |
| 420 | + <label for="lz_2fa_time_d"><?php echo esc_html__('days', 'loginizer'); ?></label> | |
| 421 | + <input type="radio" name="lz_2fa_enforce[time_unit]" id="lz_2fa_time_h" value="hours" <?php checked(!empty($enforce_reg['2fa_enforce']['time_unit']) && ($enforce_reg['2fa_enforce']['time_unit'] == 'hours')); ?>> | |
| 422 | + <label for="lz_2fa_time_h"><?php echo esc_html__('hours', 'loginizer'); ?></label> | |
| 423 | + </td> | |
| 424 | + </tr> | |
| 425 | + <tr class="lz_2fa_grace_time" <?php echo (($enforce_type !== 'grace_enforce') ? 'style="display:none;"' : ''); ?>> | |
| 426 | + <td scope="row" valign="top" style="width:50% !important;"></td> | |
| 427 | + <td> | |
| 428 | + <label><?php echo esc_html__('What action should be taken if user does not completes the 2FA setup within the grace time.', 'loginizer'); ?></label><br /><br /> | |
| 429 | + <input type="radio" name="lz_2fa_enforce[action]" id="" value="mandatory_setup" <?php checked(!empty($enforce_reg['2fa_enforce']['action']) && ($enforce_reg['2fa_enforce']['action'] == 'mandatory_setup')); ?> checked> | |
| 430 | + <span><?php echo esc_html__('Make the 2FA setup mandatory for the user.', 'loginizer'); ?></span><br /><br /> | |
| 431 | + <input type="radio" name="lz_2fa_enforce[action]" id="" value="show_notice" <?php checked(!empty($enforce_reg['2fa_enforce']['action']) && ($enforce_reg['2fa_enforce']['action'] == 'show_notice')); ?>> | |
| 432 | + <span><?php echo esc_html__('Show a notice on login untill 2FA setup is completed.', 'loginizer'); ?></span> | |
| 433 | + </td> | |
| 434 | + </tr> | |
| 435 | + </table><br /><?php } ?> | |
| 436 | + <center><input name="save_lz" class="button button-primary action" value="<?php echo esc_html__('Save Settings', 'loginizer'); ?>" type="submit" /></center> | |
| 384 | 437 | </form> |
| 385 | 438 | |
| 386 | 439 | </div> |
| 387 | 440 | </div> |
| @@ -489,9 +542,9 @@ | ||
| 489 | 542 | </tr> |
| 490 | 543 | <tr> |
| 491 | 544 | <td scope="row" valign="top" style="width:350px !important"> |
| 492 | 545 | <label for="msg_otp_app"><?php echo __('OTP via APP','loginizer'); ?></label><br /> |
| 493 | - <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_app']. '"</em>', 'loginizer'); ?> | |
| 546 | + <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_app']. '"</em>'; ?> | |
| 494 | 547 | </td> |
| 495 | 548 | <td> |
| 496 | 549 | <input type="text" size="50" value="<?php echo esc_attr(empty($saved_msgs['otp_app']) ? '' : $saved_msgs['otp_app']); ?>" name="msg_otp_app" id="msg_otp_app" style="width:auto !important;" /> |
| 497 | 550 | <br /> |
| @@ -499,9 +552,9 @@ | ||
| 499 | 552 | </tr> |
| 500 | 553 | <tr> |
| 501 | 554 | <td scope="row" valign="top" style="width:350px !important"> |
| 502 | 555 | <label for="msg_otp_email"><?php echo __('OTP via Email','loginizer'); ?></label><br /> |
| 503 | - <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_email']. '"</em>', 'loginizer'); ?> | |
| 556 | + <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_email']. '"</em>'; ?> | |
| 504 | 557 | </td> |
| 505 | 558 | <td> |
| 506 | 559 | <input type="text" size="50" value="<?php echo esc_attr(empty($saved_msgs['otp_email']) ? '' : $saved_msgs['otp_email']); ?>" name="msg_otp_email" id="msg_otp_email" style="width:auto !important;" /> |
| 507 | 560 | <br /> |
| @@ -509,9 +562,9 @@ | ||
| 509 | 562 | </tr> |
| 510 | 563 | <tr> |
| 511 | 564 | <td scope="row" valign="top" style="width:350px !important"> |
| 512 | 565 | <label for="msg_otp_field"><?php echo __('Title for OTP field','loginizer'); ?></label><br /> |
| 513 | - <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_field']. '"</em>', 'loginizer'); ?> | |
| 566 | + <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_field']. '"</em>'; ?> | |
| 514 | 567 | </td> |
| 515 | 568 | <td> |
| 516 | 569 | <input type="text" size="50" value="<?php echo esc_attr(empty($saved_msgs['otp_field']) ? '' : $saved_msgs['otp_field']); ?>" name="msg_otp_field" id="msg_otp_field" style="width:auto !important;" /> |
| 517 | 570 | <br /> |
| @@ -519,9 +572,9 @@ | ||
| 519 | 572 | </tr> |
| 520 | 573 | <tr> |
| 521 | 574 | <td scope="row" valign="top" style="width:350px !important"> |
| 522 | 575 | <label for="msg_otp_question"><?php echo __('Title for Security Question','loginizer'); ?></label><br /> |
| 523 | - <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_question']. '"</em>', 'loginizer'); ?> | |
| 576 | + <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_question']. '"</em>'; ?> | |
| 524 | 577 | </td> |
| 525 | 578 | <td> |
| 526 | 579 | <input type="text" size="50" value="<?php echo esc_attr(empty($saved_msgs['otp_question']) ? '' : $saved_msgs['otp_question']); ?>" name="msg_otp_question" id="msg_otp_question" style="width:auto !important;" /> |
| 527 | 580 | <br /> |
| @@ -529,9 +582,9 @@ | ||
| 529 | 582 | </tr> |
| 530 | 583 | <tr> |
| 531 | 584 | <td scope="row" valign="top" style="width:350px !important"> |
| 532 | 585 | <label for="msg_otp_answer"><?php echo __('Title for Security Answer','loginizer'); ?></label><br /> |
| 533 | - <?php echo __('Default: <em>"' . $loginizer['2fa_d_msg']['otp_answer']. '"</em>', 'loginizer'); ?> | |
| 586 | + <?php echo __('Default:', 'loginizer').' <em>"' . $loginizer['2fa_d_msg']['otp_answer']. '"</em>'; ?> | |
| 534 | 587 | </td> |
| 535 | 588 | <td> |
| 536 | 589 | <input type="text" size="50" value="<?php echo esc_attr(empty($saved_msgs['otp_answer']) ? '' : $saved_msgs['otp_answer']); ?>" name="msg_otp_answer" id="msg_otp_answer" style="width:auto !important;" /> |
| 537 | 590 | <br /> |