Last active
November 8, 2019 03:36
-
-
Save wpmudev-sls/eddfa45c65d1756306de9021c77a24c2 to your computer and use it in GitHub Desktop.
[Defender Pro] Enable login url while using Mask login
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Plugin Name: [Defender Pro] Enable login url while using Mask login | |
* Description: [Defender Pro] Enable login url while using Mask login - 1147788731209818 | |
* Author: Thobk @ WPMUDEV | |
* Author URI: https://premium.wpmudev.org | |
* License: GPLv2 or later | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; | |
} | |
add_action( 'plugins_loaded', 'wpmudev_defender_enable_access_login_while_using_mask_login_func' ); | |
function wpmudev_defender_enable_access_login_while_using_mask_login_func(){ | |
/** | |
* NOTE | |
* If you want to copy to your child theme's functions.php file, please copy from here: | |
*/ | |
if( class_exists('WP_Defender') ){ | |
add_action( 'init', 'wpmudev_defender_filter_login_request', 9998 ); | |
function wpmudev_defender_filter_login_request(){ | |
$requestPath = WP_Defender\Module\Advanced_Tools\Component\Mask_Api::getRequestPath(); | |
if( '/login' === $requestPath ){ | |
$new_ticket = false; | |
$ticket = Hammer\Helper\HTTP_Helper::retrieveGet( 'ticket', false ); | |
if( false === $ticket ){ | |
$otp = get_site_option('wpmudev_defender_ticket_key'); | |
if( $otp ){ | |
$_GET['ticket'] = $otp; | |
$_GET['wpmudev_def_ticket'] = 1; | |
} | |
} | |
if ( ! WP_Defender\Module\Advanced_Tools\Component\Mask_Api::redeemTicket( $ticket ) ) { | |
$new_ticket = true; | |
} | |
if( $new_ticket ){ | |
$otp = wp_generate_password( 12, false ); | |
$_GET['ticket'] = $otp; | |
$_GET['wpmudev_def_ticket'] = 1; | |
update_site_option( 'wpmudev_defender_ticket_key', $otp ); | |
$settings = WP_Defender\Module\Advanced_Tools\Model\Mask_Settings::instance(); | |
$settings->otps[ $otp ] = [ | |
'otp' => $otp, | |
'bind_to' => null, | |
'expiry' => strtotime( '+30 day' ), | |
'used' => 0 | |
]; | |
$settings->save(); | |
// free memory | |
unset( $settings ); | |
} | |
} | |
} | |
add_action( 'init', 'wpmudev_defender_maybe_clean_request', 10000 ); | |
function wpmudev_defender_maybe_clean_request(){ | |
if( isset( $_GET['wpmudev_def_ticket'] ) ){ | |
unset( $_GET['wpmudev_def_ticket'], $_GET['ticket'] ); | |
} | |
} | |
} | |
// end here | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment