WC_Form_Handler::process_reset_password
Handle reset password form.
Method of the class: WC_Form_Handler{}
Hooks from the method
Returns
null. Nothing (null).
Usage
$result = WC_Form_Handler::process_reset_password();
WC_Form_Handler::process_reset_password() WC Form Handler::process reset password code WC 10.3.5
public static function process_reset_password() {
$nonce_value = wc_get_var( $_REQUEST['woocommerce-reset-password-nonce'], wc_get_var( $_REQUEST['_wpnonce'], '' ) ); // @codingStandardsIgnoreLine.
if ( ! wp_verify_nonce( $nonce_value, 'reset_password' ) ) {
return;
}
$posted_fields = array( 'wc_reset_password', 'password_1', 'password_2', 'reset_key', 'reset_login' );
foreach ( $posted_fields as $field ) {
if ( ! isset( $_POST[ $field ] ) ) {
return;
}
if ( in_array( $field, array( 'password_1', 'password_2' ), true ) ) {
// Don't unslash password fields
// @see https://github.com/woocommerce/woocommerce/issues/23922.
$posted_fields[ $field ] = $_POST[ $field ]; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
} else {
$posted_fields[ $field ] = wp_unslash( $_POST[ $field ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
}
$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_safe_redirect( add_query_arg( 'password-reset', 'true', wc_get_page_permalink( 'myaccount' ) ) );
exit;
}
}
}