HEX
Server: Apache
System: Linux webd001.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: mciraet (192513)
PHP: 8.2.31
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/mciraet/www/wp-content/plugins/movedo-extension/includes/movedo-ext-login-functions.php
<?php

/*
*	Login Helper functions
*
* 	@version	1.0
* 	@author		Greatives Team
* 	@URI		http://greatives.eu
*/

 /**
 * Login User
 */
if ( !function_exists('movedo_grve_login_user') ) {
	function movedo_grve_login_user(){

		$user_login		= $_POST['grve_user_login'];
		$user_pass		= $_POST['grve_user_pass'];

		$allowed_html = array(
			'br' => array(),
			'em' => array(),
			'strong' => array(),
		);

		if( !check_ajax_referer( 'movedo_grve_nonce', '_movedo_grve_nonce_login', false ) ){
			echo json_encode( array( 'error' => true, 'message'=> '<div class="grve-alert grve-alert-error">' . esc_html__( 'Session token has expired, please reload the page and try again', 'movedo-extension'  ) . '</div>' ) );
		} elseif( empty( $user_login ) || empty( $user_pass ) ) {
			echo json_encode( array( 'error' => true, 'message' => '<div class="grve-alert grve-alert-error">' . esc_html__( 'Please fill all form fields', 'movedo-extension' ) . '</div>' ) );
		} else {
			$user = wp_signon( array( 'user_login' => $user_login, 'user_password' => $user_pass ), false );
			if( is_wp_error( $user ) ) {
				echo json_encode( array( 'error' => true, 'message' => '<div class="grve-alert grve-alert-error">' . wp_kses( $user->get_error_message(), $allowed_html ) . '</div>' ) );
			} else {
				echo json_encode( array( 'error' => false, 'message' => '<div class="grve-alert grve-alert-success">' . esc_html__('Login successful, reloading page...', 'movedo-extension' ) .'</div>' ) );
			}
		}
		die();
	}
}
add_action( 'wp_ajax_nopriv_movedo_grve_login_user', 'movedo_grve_login_user' );

if ( !function_exists('movedo_grve_register_user') ) {
	function movedo_grve_register_user(){

		$user_login	= $_POST['grve_user_login'];
		$user_email	= $_POST['grve_user_email'];

		if( !check_ajax_referer( 'movedo_grve_nonce', '_movedo_grve_nonce_register', false) ){
			echo json_encode( array('error' => true, 'message' => '<div class="grve-alert grve-alert-error">' . esc_html__( 'Session token has expired, please reload the page and try again', 'movedo-extension') . '</div>' ) );
			die();
		} elseif( empty($user_login) || empty($user_email) ) {
			echo json_encode( array('error' => true, 'message'=> '<div class="grve-alert grve-alert-error">' . esc_html__( 'Please fill all form fields', 'movedo-extension') . '</div>' ) );
			die();
		}

		$errors = register_new_user( $user_login, $user_email );

		if( is_wp_error($errors) ){

			$registration_error_messages = $errors->errors;

			$display_errors = '<div class="grve-alert grve-alert-error">';

				foreach( $registration_error_messages as $error ) {
					$display_errors .= '<p>' . $error[0] . '</p>';
				}

			$display_errors .= '</div>';

			echo json_encode( array('error' => true, 'message' => $display_errors ) );

		} else {
			echo json_encode( array('error' => false, 'message' => '<div class="grve-alert grve-alert-success">' . esc_html__( 'Registration complete. Please check your e-mail.', 'movedo-extension' ) . '</p>' ) );
		}


		die();
	}
}
add_action( 'wp_ajax_nopriv_movedo_grve_register_user', 'movedo_grve_register_user' );

if ( !function_exists('movedo_grve_reset_password_user') ) {
	function movedo_grve_reset_password_user(){

		$username_or_email = $_POST['grve_user_or_email'];

		if( !check_ajax_referer( 'movedo_grve_nonce', '_movedo_grve_nonce_password', false ) ){
			echo json_encode( array('error' => true, 'message' => '<div class="grve-alert grve-alert-error">' . esc_html__( 'Session token has expired, please reload the page and try again', 'movedo-extension' ) . '</div>' ) );
		} elseif( empty( $username_or_email ) ) {
			echo json_encode( array('error' => true, 'message' => '<div class="grve-alert grve-alert-error">' . esc_html__( 'Please fill all form fields', 'movedo-extension' ) . '</div>' ) );
		} else {

			$username = is_email( $username_or_email ) ? sanitize_email( $username_or_email ) : sanitize_user( $username_or_email );
			$user_forgotten = movedo_grve_lost_password_retrieve( $username );

			if( is_wp_error( $user_forgotten ) ){

				$lostpass_error_messages = $user_forgotten->errors;

				$display_errors = '<div class="grve-alert grve-alert-error">';
				foreach( $lostpass_error_messages as $error ){
					$display_errors .= '<p>' . $error[0] . '</p>';
				}
				$display_errors .= '</div>';

				echo json_encode( array('error' => true, 'message' => $display_errors ) );
			} else{
				echo json_encode( array('error' => false, 'message' => '<p class="grve-alert grve-alert-success">' . esc_html__( 'Password Reset. Please check your email.', 'movedo-extension' ) . '</p>' ) );
			}
		}

		die();
	}
}
add_action( 'wp_ajax_nopriv_movedo_grve_reset_password_user', 'movedo_grve_reset_password_user' );

if ( !function_exists('movedo_grve_lost_password_retrieve') ) {
	function movedo_grve_lost_password_retrieve( $user_data ) {

		global $wpdb, $current_site, $wp_hasher;

		$errors = new WP_Error();

		if( empty($user_data) ){
			$errors->add( 'empty_username', esc_html__( 'Please enter a username or e-mail address.', 'movedo-extension' ) );
		} elseif( strpos($user_data, '@') ){
			$user_data = get_user_by( 'email', trim( $user_data ) );
			if( empty($user_data)){
				$errors->add( 'invalid_email', esc_html__( 'There is no user registered with that email address.', 'movedo-extension'  ) );
			}
		} else {
			$login = trim( $user_data );
			$user_data = get_user_by('login', $login);
		}

		if( $errors->get_error_code() ){
			return $errors;
		}

		if( !$user_data ){
			$errors->add( 'invalidcombo', esc_html__('Invalid username or e-mail.', 'movedo-extension' ) );
			return $errors;
		}

		$user_login = $user_data->user_login;
		$user_email = $user_data->user_email;

		do_action( 'retrieve_password', $user_login );

		$allow = apply_filters('allow_password_reset', true, $user_data->ID );

		if( !$allow ){
			return new WP_Error( 'no_password_reset', esc_html__( 'Password reset is not allowed for this user', 'movedo-extension' ) );
		} elseif ( is_wp_error($allow) ){
			return $allow;
		}

		$key = wp_generate_password(20, false);

		do_action('retrieve_password_key', $user_login, $key);

		if(empty($wp_hasher)){
			require_once ABSPATH.'wp-includes/class-phpass.php';
			$wp_hasher = new PasswordHash(8, true);
		}

		$hashed = time() . ':' . $wp_hasher->HashPassword( $key );

		$wpdb->update($wpdb->users, array('user_activation_key' => $hashed), array('user_login' => $user_login));

		$message = esc_html__( 'Someone requested that the password be reset for the following account:', 'movedo-extension' ) . "\r\n\r\n";
		$message .= network_home_url( '/' ) . "\r\n\r\n";
		$message .= sprintf( esc_html__( 'Username: %s', 'movedo-extension' ), $user_login ) . "\r\n\r\n";
		$message .= esc_html__( 'If this was a mistake, just ignore this email and nothing will happen.', 'movedo-extension' ) . "\r\n\r\n";
		$message .= esc_html__( 'To reset your password, visit the following address:', 'movedo-extension' ) . "\r\n\r\n";
		$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n\r\n";

		if ( is_multisite() ) {
			$blogname = $GLOBALS['current_site']->site_name;
		} else {
			$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
		}

		$title   = sprintf( esc_html__( '[%s] Password Reset', 'movedo-extension' ), $blogname );
		$title   = apply_filters( 'retrieve_password_title', $title );
		$message = apply_filters( 'retrieve_password_message', $message, $key );

		if ( $message && ! wp_mail( $user_email, $title, $message ) ) {
			$errors->add( 'noemail', __( 'The e-mail could not be sent.<br />Possible reason: your host may have disabled the mail() function.', 'movedo-extension' ) );

			return $errors;

			wp_die();
		}

		return true;
	}
}

//Omit closing PHP tag to avoid accidental whitespace output errors.