add( 'invalid_username_password', '' . molms_lt( 'ERROR' ) . ': ' . molms_lt( 'Invalid Username or password.' ) ); return $currentuser; } else { $session_action = apply_filters( 'mo2f_session_addon', 'block', $currentuser ); if ( $session_action == 'block' ) { return 'block'; } else { $redirect_to = isset( $_REQUEST['redirect_to'] ) ? esc_url_raw( $_REQUEST['redirect_to'] ) : null; $session_id = isset( $_POST['session_id'] ) ? sanitize_text_field( $_POST['session_id'] ) : null; $user_id = $currentuser->ID; $mo2f_factor = new Molms_Password_2Factor_Login(); $mo2f_factor->miniorange_pass2login_start_session(); $session_id_encrypt = $mo2f_factor->create_session(); $currentuser = get_user_by( 'id', $user_id ); wp_set_current_user( $user_id, $currentuser->user_login ); $mobile_login = new Miniorange_Mobile_Login(); $mobile_login->remove_current_activity( $session_id_encrypt ); wp_set_auth_cookie( $user_id, true ); do_action( 'wp_login', $currentuser->user_login, $currentuser ); redirect_user_to( $currentuser, $redirect_to ); exit; } } } function mo_session_addon_activation() { update_site_option( 'mo2f_session_addon_installed', 1 ); } function mo_session_addon_deactivation() { update_site_option( 'mo2f_session_addon_installed', 0 ); update_site_option( 'mo2f_simultaneous_session_enable', 0 ); update_site_option( 'mo2f_idle_session_logout_enable', 0 ); update_site_option( 'mo2f_session_logout_time_enable', 0 ); } function mo2fa_load_textdomain() { load_plugin_textdomain( '2fa-learndash-lms', false, dirname( plugin_basename( __FILE__ ) ) . '/lang/' ); } function mo2f_user_session_expiry() { $expiry_hours = get_site_option( 'mo2f_number_of_timeout_hours' ); if ( $expiry_hours < 4 ) { $expiry_time = 14 * 24 * 60 * 60; return $expiry_time; } if ( $expiry_hours ) { $expiry_time = $expiry_hours * 60 * 60; } else { $expiry_time = 14 * 24 * 60 * 60; } return $expiry_time; } function mo2f_plugin_session_addon( $identity, $currentuser ) { $sessions_allowed = get_site_option( 'mo2f_simultaneous_session_allowed', 10 ); $session_details = WP_Session_Tokens::get_instance( $currentuser->ID ); $session_count = count( $session_details->get_all() ); if ( $session_count >= $sessions_allowed ) { $session_action = get_site_option( 'mo2f_simultaneous_session_give_entry' ); if ( $session_action ) { $previous_session_details = WP_Session_Tokens::get_instance( $currentuser->ID ); $previous_session_details->destroy_all(); return 'allow'; } else { return 'block'; } } } function mo2f_idle_session_script() { $idle_session = get_site_option( "mo2f_number_of_idle_hours", 10 ); if ( $idle_session < 4 ) { return 24; } if ( is_user_logged_in() ) { if ( get_site_option( 'mo2f_idle_session_logout_enable' ) ) { echo ''; echo ''; wp_enqueue_script( 'idle_session_timeout_script', plugins_url( 'includes/js/mo_idle_session_logout.js', dirname( __FILE__ ) ), array(), MOLMS_VERSION, false ); } } } public function miniorange_idle_session_logout_init() { if ( isset( $_POST['idle_session_timeout'] ) && isset( $_POST['update_time'] ) && sanitize_text_field( $_POST['idle_session_timeout'] ) == 'timeout' && sanitize_text_field( $_POST['update_time'] ) == 'now' ) { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'molms-nonce' ) ) { return; } wp_destroy_current_session(); exit; } } } new Molms_Session;