$nonce_err->get_error_message() ] ); } $magic_login_code_login_result = $nonce_err; return $nonce_err; } /** * Pre process code login request * * @hook magic_login_pre_process_code_login_request * @return WP_Error|null * @since 2.4 */ $result = apply_filters( 'magic_login_pre_process_code_login_request', null ); if ( is_wp_error( $result ) ) { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { wp_send_json_error( [ 'message' => $result->get_error_message() ] ); } $magic_login_code_login_result = $result; return $result; } $log = isset( $_POST['log'] ) ? sanitize_user( wp_unslash( $_POST['log'] ) ) : ''; // phpcs:ignore $user = get_user_by_log_input( $log ); $token = sanitize_text_field( wp_unslash( $_POST['magic_login_token'] ) ); /** * Pre authenticate code login * * @hook magic_login_pre_code_login * * @param {boolean} $do_authenticate Authenticate or not * @param {object} $user User object * @param {string} $token Token * * @return {bool|WP_Error} * @since 2.4 */ $do_login = apply_filters( 'magic_login_pre_code_login', true, $user, $token ); if ( is_wp_error( $do_login ) ) { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { wp_send_json_error( [ 'message' => $do_login->get_error_message() ] ); } $magic_login_code_login_result = $do_login; return $do_login; } $magic_login_code_login_result = LoginManager::authenticate_user_token( $user->ID, $token, true ); if ( ! empty( $magic_login_code_login_result ) && ! is_array( $magic_login_code_login_result ) ) { // check if it's url /** * Fires when the code login is invalid * * @hook magic_login_invalid_code * @since 2.4 */ do_action( 'magic_login_invalid_code' ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { wp_send_json_error( [ 'message' => $magic_login_code_login_result ] ); } $magic_login_code_login_result = new WP_Error( 'invalid_code', $magic_login_code_login_result ); return $magic_login_code_login_result; } /** * Apply login action * * @hook magic_login_code_login * @since 2.4 */ do_action( 'magic_login_code_login' ); if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $redirect_to = $magic_login_code_login_result['redirect_to'] ?? get_wp_login_url(); wp_send_json_success( [ 'message' => esc_html__( 'Login successful! You will be redirected shortly.', 'magic-login' ), 'redirect_to' => $redirect_to, ] ); } wp_safe_redirect( $magic_login_code_login_result['redirect_to'] ); exit; } /** * Code based login form * * @return void */ public static function code_form() { $log = ''; $cancel_url = ''; if ( isset( $_SERVER['REQUEST_URI'] ) ) { $cancel_url = esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ); } if ( isset( $_POST['log'] ) && is_string( $_POST['log'] ) ) { $log = wp_unslash( $_POST['log'] ); // phpcs:ignore } ?>