Seguridad

Añadir un campo para confirmar la contraseña

1 hay 1 solo Like :)

Uno de los errores más comunes de los usuarios a la hora de registrarse en un sitio es con la contraseña. En montones de ocasiones la teclean mal, o simplemente la olvidan.

Es por este motivo que en muchas webs, y especialmente en tiendas online donde se pida una contraseña para crear la cuenta de usuario, se pide que se repita la contraseña, lo que viene a ser un modo del que el cliente sea más consciente de la contraseña que elige para su cuenta, y de paso si es posible que la apunte en lugar seguro.

Desafortunadamente esta no es una funcionalidad que tenga WooCommerce por defecto ni que podamos activar con un simple clic en alguno de sus ajustes.

Pero, afortunadamente, al ser de código abierto y tener una amplia documentación y posibilidades de ampliación, es fácil añadir esta característica si la necesitamos.

Así que vamos a ver cómo añadir un campo de confirmación de la contraseña de usuario en los dos lugares en los que podríamos necesitarlo.

/* Crea el campo de validación de contraseña en la página de registro */
function wc_register_form_password_validation() {
if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {
?>
<p class="form-row form-row-wide">
<label for="reg_password2"><?php _e( 'Repite la contraseña', 'woocommerce' ); ?> <span class="required">*</span></label>
<input class="woocommerce-Input woocommerce-Input--text input-text" type="password" class="input-text" name="password2" id="reg_password2" autocomplete="current-password" />
</p>
<?php
}
}
add_action( 'woocommerce_register_form', 'wc_register_form_password_validation' );

/* Validar las contraseñas y definir el mensaje de error */
function register_password_validation($reg_errors, $sanitized_user_login, $user_email) {
global $woocommerce;
extract( $_POST );
if ( strcmp( $password, $password2 ) !== 0 ) {
return new WP_Error( 'registration-error', __( 'Las contraseñas no coinciden.', 'woocommerce' ) );
}
return $reg_errors;
}
add_filter('woocommerce_registration_errors', 'register_password_validation', 10,3);