Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions class-two-factor-core.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ class Two_Factor_Core {
*/
public static function add_hooks( $compat ) {
add_action( 'init', array( __CLASS__, 'get_providers' ) ); // @phpstan-ignore return.void

// Check to see if its a headless login
add_action( 'wp_login', array( __CLASS__, 'wp_login' ), 10, 2 );

add_filter( 'wp_login_errors', array( __CLASS__, 'maybe_show_reset_password_notice' ) );
add_action( 'after_password_reset', array( __CLASS__, 'clear_password_reset_notice' ) );
add_action( 'login_form_validate_2fa', array( __CLASS__, 'login_form_validate_2fa' ) );
Expand Down Expand Up @@ -658,16 +661,34 @@ public static function is_user_using_two_factor( $user = null ) {
* @param WP_User $user WP_User object of the logged-in user.
*/
public static function wp_login( $user_login, $user ) {
if ( ! self::is_user_using_two_factor( $user->ID ) ) {
return;
// get request

$current_origin = get_http_origin();

if ( empty( $current_origin ) ) {
$current_origin = ! empty( $_SERVER['HTTP_REFERER'] ) ? sanitize_text_field( $_SERVER['HTTP_REFERER'] ) : null;
}

// get frontend url
$faustwp_settings = get_option('faustwp_settings');

$frontend_uri = ($faustwp_settings['frontend_uri']);

// this is returning "https:\/\/localhost:3000"
// we need it in the format https://localhost:3000
$frontend_uri = str_replace('\\', '', $frontend_uri);
$frontend_uri = str_replace('"', '', $frontend_uri);

if ( ! self::is_user_using_two_factor( $user->ID ) || $current_origin === $frontend_uri ) {
return;
}

// Invalidate the current login session to prevent from being re-used.
self::destroy_current_session_for_user( $user );

// Also clear the cookies which are no longer valid.
wp_clear_auth_cookie();

self::show_two_factor_login( $user );
exit;
}
Expand Down
2 changes: 1 addition & 1 deletion providers/class-two-factor-email.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class Two_Factor_Email extends Two_Factor_Provider {
*
* @since 0.1-dev
*/
protected function __construct() {
public function __construct() {
add_action( 'two_factor_user_options_' . __CLASS__, array( $this, 'user_options' ) );
parent::__construct();
}
Expand Down
2 changes: 1 addition & 1 deletion providers/class-two-factor-totp.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Two_Factor_Totp extends Two_Factor_Provider {
*
* @codeCoverageIgnore
*/
protected function __construct() {
public function __construct() {
add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_assets' ) );
Expand Down