` element.
* Default 'Log In'.
* @param string $message Optional. Message to display in header. Default empty.
* @param WP_Error $wp_error Optional. The error to pass. Default empty.
*/
function login_header_otp( $title = 'Log In', $message = '', $wp_error = '' ) {
global $error, $interim_login, $action;
if ( empty( $wp_error ) ) {
$wp_error = new \WP_Error();
}
// Shake it!
$shake_error_codes = array(
'empty_password',
'empty_email',
'invalid_email',
'invalidcombo',
'empty_username',
'invalid_username',
'incorrect_password',
);
/**
* Filters the error codes array for shaking the login form.
*
* @param array $shake_error_codes Error codes that shake the login form.
*
* @since 3.0.0
*
*/
$shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes );
if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(),
$shake_error_codes ) ) {
add_action( 'login_head', 'wp_shake_js', 12 );
}
$separator = is_rtl() ? ' › ' : ' ‹ ';
?>
>
get_error_code() ) {
?>
site_name;
} else {
$login_header_url = __( 'https://wordpress.org/' );
$login_header_title = __( 'Powered by WordPress' );
}
/**
* Filters link URL of the header logo above login form.
*
* @param string $login_header_url Login header logo URL.
*
* @since 2.1.0
*
*/
$login_header_url = apply_filters( 'login_headerurl', $login_header_url );
/**
* Filters the title attribute of the header logo above login form.
*
* @param string $login_header_title Login header logo title attribute.
*
* @since 2.1.0
*/
$login_header_title = apply_filters( 'login_headertitle', $login_header_title );
$classes = array( 'login-action-' . $action, 'wp-core-ui' );
if ( is_rtl() ) {
$classes[] = 'rtl';
}
if ( $interim_login ) {
$classes[] = 'interim-login';
?>
add( 'error', $error );
unset( $error );
}
if ( $wp_error->get_error_code() ) {
$errors = '';
$messages = '';
foreach ( $wp_error->get_error_codes() as $code ) {
$severity = $wp_error->get_error_data( $code );
foreach ( $wp_error->get_error_messages( $code ) as $error_message ) {
if ( 'message' == $severity ) {
$messages .= ' ' . $error_message . "
\n";
} else {
$errors .= ' ' . $error_message . "
\n";
}
}
}
if ( ! empty( $errors ) ) {
/**
* Filters the error messages displayed above the login form.
*
* @param string $errors Login error message.
*
* @since 2.1.0
*
*/
echo '
' . apply_filters( 'login_errors', $errors ) . "
\n";
}
if ( ! empty( $messages ) ) {
/**
* Filters instructional messages displayed above the login form.
*
* @param string $messages Login messages.
*
* @since 2.5.0
*
*/
echo '
' . apply_filters( 'login_messages', $messages ) . "
\n";
}
}
}
}
if ( isset( $interim_login ) && 'success' === $interim_login ) {
login_header_otp( '', $message );
$modal_close_script = <<
jQuery(function ($) {
$('.wp-auth-check-close', window.parent.document).trigger('click');
});
END;
add_action(
'wp_print_footer_scripts',
function() use ( $modal_close_script ) {
echo $modal_close_script;
}
);
} else {
login_header_otp( '', '', $error );
if ( ! empty( $providers ) ) {
foreach ( $providers as $slug => $provider ) { ?>
1 ) { ?>
$provider ) { ?>
-
get_login_label(); ?>
jQuery(function ($) {
function two_factor_providers( defaultSlug ) {
// Hide all forms and show the one default.
$('.wpdef-2fa-form').hide();
$('#wpdef-2fa-form-' + defaultSlug).show();
// Hide all links and show others except the default.
if ( $('.wpdef-2fa-link').length > 0 ) {
$('.wpdef-2fa-link').hide();
$('.wpdef-2fa-link:not(#wpdef-2fa-link-'+ defaultSlug +')').each(function(){
$(this).show();
});
}
}
var is_sent = false;
// Logic for FallbackEmail method.
function resend_code() {
// Work with the button 'Resen Code'.
var that = $('input[name="button_resend_code"]');
if (is_sent === false) {
is_sent = true;
}
let data = {
data: JSON.stringify({
'token': '{$token}'
})
};
$.ajax({
type: 'POST',
url: '{$action_fallback_email}',
data: data,
beforeSend: function () {
that.attr('disabled', 'disabled');
$('.def-ajaxloader').show();
},
success: function (data) {
that.removeAttr('disabled');
$('.def-ajaxloader').hide();
$('.notification').text(data.data.message);
is_sent = false;
}
})
}
$('.def-ajaxloader').hide();
// Hide all forms and show the one default.
var defaultSlug = '{$default_slug}';
two_factor_providers( defaultSlug );
// Work with links.
$('body').on('click', '.wpdef-2fa-link', function () {
$('#login_error').remove();
// Clear any previous notification.
$('.notification').empty();
var slug = $(this).data('slug');
two_factor_providers( slug );
// Switch to 'Fallback Email' method.
if ('fallback-email' === slug) {
resend_code();
}
});
// Resend code.
$('body').on('click', 'input[name="button_resend_code"]', function (e) {
e.preventDefault();
resend_code();
})
})
END;
add_action(
'wp_print_footer_scripts',
function() use ( $totp_script ) {
echo $totp_script;
}
);
?>