check_password_reset_key() public static method

Retrieves a user row based on password reset key and login.
public static check_password_reset_key ( string $key, string $login ) : WP_User | boolean
$key string Hash to validate sending user's password
$login string The user login
return WP_User | boolean User's database row on success, false for invalid keys
 /**
  * Handle reset password form.
  */
 public static function process_reset_password()
 {
     $posted_fields = array('wc_reset_password', 'password_1', 'password_2', 'reset_key', 'reset_login', '_wpnonce');
     foreach ($posted_fields as $field) {
         if (!isset($_POST[$field])) {
             return;
         }
         $posted_fields[$field] = $_POST[$field];
     }
     if (!wp_verify_nonce($posted_fields['_wpnonce'], 'reset_password')) {
         return;
     }
     $user = WC_Shortcode_My_Account::check_password_reset_key($posted_fields['reset_key'], $posted_fields['reset_login']);
     if ($user instanceof WP_User) {
         if (empty($posted_fields['password_1'])) {
             wc_add_notice(__('Please enter your password.', 'woocommerce'), 'error');
         }
         if ($posted_fields['password_1'] !== $posted_fields['password_2']) {
             wc_add_notice(__('Passwords do not match.', 'woocommerce'), 'error');
         }
         $errors = new WP_Error();
         do_action('validate_password_reset', $errors, $user);
         wc_add_wp_error_notices($errors);
         if (0 === wc_notice_count('error')) {
             WC_Shortcode_My_Account::reset_password($user, $posted_fields['password_1']);
             do_action('woocommerce_customer_reset_password', $user);
             wp_redirect(add_query_arg('password-reset', 'true', wc_get_page_permalink('myaccount')));
             exit;
         }
     }
 }
 /**
  * Handle reset password form
  */
 public function process_reset_password()
 {
     if (!isset($_POST['wc_reset_password'])) {
         return;
     }
     // process lost password form
     if (isset($_POST['user_login']) && isset($_POST['_wpnonce'])) {
         wp_verify_nonce($_POST['_wpnonce'], 'woocommerce-lost_password');
         WC_Shortcode_My_Account::retrieve_password();
     }
     // process reset password form
     if (isset($_POST['password_1']) && isset($_POST['password_2']) && isset($_POST['reset_key']) && isset($_POST['reset_login']) && isset($_POST['_wpnonce'])) {
         // verify reset key again
         $user = WC_Shortcode_My_Account::check_password_reset_key($_POST['reset_key'], $_POST['reset_login']);
         if (is_object($user)) {
             // save these values into the form again in case of errors
             $args['key'] = wc_clean($_POST['reset_key']);
             $args['login'] = wc_clean($_POST['reset_login']);
             wp_verify_nonce($_POST['_wpnonce'], 'woocommerce-reset_password');
             if (empty($_POST['password_1']) || empty($_POST['password_2'])) {
                 wc_add_notice(__('Please enter your password.', 'woocommerce'), 'error');
                 $args['form'] = 'reset_password';
             }
             if ($_POST['password_1'] !== $_POST['password_2']) {
                 wc_add_notice(__('Passwords do not match.', 'woocommerce'), 'error');
                 $args['form'] = 'reset_password';
             }
             $errors = new WP_Error();
             do_action('validate_password_reset', $errors, $user);
             if ($errors->get_error_messages()) {
                 foreach ($errors->get_error_messages() as $error) {
                     wc_add_notice($error, 'error');
                 }
             }
             if (0 == wc_notice_count('error')) {
                 WC_Shortcode_My_Account::reset_password($user, $_POST['password_1']);
                 do_action('woocommerce_customer_reset_password', $user);
                 wp_redirect(add_query_arg('reset', 'true', remove_query_arg(array('key', 'login'))));
                 exit;
             }
         }
     }
 }