PluginProbe
Loginizer / trunk
Loginizer vtrunk
2.1.0 2.0.9 2.0.8 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 All 74 releases
← All changes | main/settings/2fa.php +72 -10 1.9.9 → trunk View file →
@@ -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)){
@@ -118,8 +120,9 @@
118 120
119 121 // In the future there can be more settings
120 122 $option['2fa_email_sub'] = @stripslashes($_POST['lz_2fa_email_sub']);
121 123 $option['2fa_email_msg'] = @stripslashes($_POST['lz_2fa_email_msg']);
124 + $option['2fa_email_html'] = isset($_POST['lz_2fa_email_html']);
122 125
123 126 // Is there an error ?
124 127 if(!empty($lz_error)){
125 128 return loginizer_page_2fa_T();
@@ -272,9 +275,17 @@
272 275 // Loginizer - Two Factor Auth Page
273 276 function loginizer_page_2fa_T(){
274 277
275 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');
276 286
287 +
277 288 // Universal header
278 289 loginizer_page_header('Two Factor Authentication');
279 290
280 291 loginizer_feature_available('Two-Factor Authentication');
@@ -280,9 +291,9 @@
280 291 loginizer_feature_available('Two-Factor Authentication');
281 292
282 293 // Saved ?
283 294 if(!empty($GLOBALS['lz_saved'])){
284 - 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 />';
285 296 }
286 297
287 298 // Any errors ?
288 299 if(!empty($lz_error)){
@@ -358,9 +369,9 @@
358 369 <label><?php echo __('Force OTP via Email', 'loginizer'); ?></label><br>
359 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>
360 371 </td>
361 372 <td>
362 - <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'); ?> />
363 374 </td>
364 375 </tr>
365 376 <tr>
366 377 <td scope="row" valign="top" style="width:70% !important">
@@ -367,9 +378,9 @@
367 378 <label><?php echo __('Apply 2FA to Roles', 'loginizer'); ?></label><br>
368 379 <span class="exp"><?php echo __('Select the Roles to which 2FA should be applied.', 'loginizer'); ?></span>
369 380 </td>
370 381 <td>
371 - <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 />
372 383 <?php
373 384
374 385 foreach($lz_roles as $k => $v){
375 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>';
@@ -378,9 +389,52 @@
378 389 ?>
379 390 </td>
380 391 </tr>
381 392 </table><br />
382 - <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>
383 437 </form>
384 438
385 439 </div>
386 440 </div>
@@ -451,8 +505,16 @@
451 505 <br />$first_name - Users First Name
452 506 <br />$last_name - Users Last Name
453 507 </td>
454 508 </tr>
509 + <tr>
510 + <td scope="row" valign="top" style="width:350px !important">
511 + <label for="loginizer_2fa_html_mail"><?php echo __('Send email as HTML', 'loginizer'); ?></label>
512 + </td>
513 + <td>
514 + <input type="checkbox" value="1" name="lz_2fa_email_html" id="lz_2fa_email_html" <?php echo lz_POSTchecked('lz_2fa_email_html', (empty($loginizer['2fa_email_html']) ? false : true)); ?> />
515 + </td>
516 + </tr>
455 517 </table><br />
456 518 <center><input name="save_2fa_email_template_lz" class="button button-primary action" value="<?php echo __('Save Settings', 'loginizer'); ?>" type="submit" /></center>
457 519 </form>
458 520
@@ -480,9 +542,9 @@
480 542 </tr>
481 543 <tr>
482 544 <td scope="row" valign="top" style="width:350px !important">
483 545 <label for="msg_otp_app"><?php echo __('OTP via APP','loginizer'); ?></label><br />
484 - <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_app']. '&quot;</em>', 'loginizer'); ?>
546 + <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_app']. '&quot;</em>'; ?>
485 547 </td>
486 548 <td>
487 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;" />
488 550 <br />
@@ -490,9 +552,9 @@
490 552 </tr>
491 553 <tr>
492 554 <td scope="row" valign="top" style="width:350px !important">
493 555 <label for="msg_otp_email"><?php echo __('OTP via Email','loginizer'); ?></label><br />
494 - <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_email']. '&quot;</em>', 'loginizer'); ?>
556 + <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_email']. '&quot;</em>'; ?>
495 557 </td>
496 558 <td>
497 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;" />
498 560 <br />
@@ -500,9 +562,9 @@
500 562 </tr>
501 563 <tr>
502 564 <td scope="row" valign="top" style="width:350px !important">
503 565 <label for="msg_otp_field"><?php echo __('Title for OTP field','loginizer'); ?></label><br />
504 - <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_field']. '&quot;</em>', 'loginizer'); ?>
566 + <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_field']. '&quot;</em>'; ?>
505 567 </td>
506 568 <td>
507 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;" />
508 570 <br />
@@ -510,9 +572,9 @@
510 572 </tr>
511 573 <tr>
512 574 <td scope="row" valign="top" style="width:350px !important">
513 575 <label for="msg_otp_question"><?php echo __('Title for Security Question','loginizer'); ?></label><br />
514 - <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_question']. '&quot;</em>', 'loginizer'); ?>
576 + <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_question']. '&quot;</em>'; ?>
515 577 </td>
516 578 <td>
517 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;" />
518 580 <br />
@@ -520,9 +582,9 @@
520 582 </tr>
521 583 <tr>
522 584 <td scope="row" valign="top" style="width:350px !important">
523 585 <label for="msg_otp_answer"><?php echo __('Title for Security Answer','loginizer'); ?></label><br />
524 - <?php echo __('Default: <em>&quot;' . $loginizer['2fa_d_msg']['otp_answer']. '&quot;</em>', 'loginizer'); ?>
586 + <?php echo __('Default:', 'loginizer').' <em>&quot;' . $loginizer['2fa_d_msg']['otp_answer']. '&quot;</em>'; ?>
525 587 </td>
526 588 <td>
527 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;" />
528 590 <br />