Buenos días,
¿Conocéis alguna forma de que WordPress fuerce (a los usuarios) a utilizar contraseñas seguras, en caso de que quieran cambiarla?
Un saludo,
Daniel.
URL del sitio: Contenido solo visible a usuarios registrados
Hola Daniel.
Añade lo siguiente al final del archivo functions.php que encontras en wp-content -> themes -> tu_plantilla
function force_strong_passwords($errors, $update, $user_data) { $user_login = $user_data->user_login; $user_pass = $user_data->user_pass; if (!is_null($user_pass)) { if ( strtolower( $user_login ) === strtolower( $user_pass ) ) { $errors->add( 'my_distinct_user_pass', __( 'Username and password must be different', 'your_textdomain' ) ); } if ( strlen( $user_pass ) add( 'my_pass_length', __( 'Password must be at least 8 characters', 'your_textdomain' ) ); } if ( ! preg_match( '/[0-9]/', $user_pass ) ) { $errors->add( 'my_pass_numeric', __( 'Password must have at least 1 numeric character', 'your_textdomain' ) ); } if ( ! preg_match( '/[a-z]/', $user_pass ) ) { $errors->add( 'my_pass_lowercase', __( 'Password must have at least 1 lower case character', 'your_textdomain' ) ); } if ( ! preg_match( '/[A-Z]/', $user_pass ) ) { $errors->add( 'my_pass_uppercase', __( 'Password must have at least 1 upper case character', 'your_textdomain' ) ); } } } add_action( 'user_profile_update_errors', 'force_strong_passwords', 0, 3 );
Este código lo que realiza es comprobar:
- El usuario y la contraseña no coincidan
- Que tenga como mínimo 8 caracteres
- Que al menos contenga 1 carácter numérico [0-9]
- Que al menos contenga 1 carácter alfabético en minúsculas [a-z]
- Que al menos contenga 1 carácter alfabético en mayúsculas [A-Z]
Si no se cumple alguna de estas condiciones mostrará un error y no deja actualizar la contraseña.
Nota: Recuerda descargar el archivo antes de añadir el código para tener una copia del original.
Un saludo
Gracias Pepe.
El snippet funciona correctamente. Sin embargo, no previene el uso de contraseñas del tipo "123456aB".
La única forma sería desactivar el check de "confirmar el uso de contraseña insegura". Con el siguiente snippet se imposibilita que el usuario pueda utilizar contraseñas que WordPress no considere de nivel medio (al menos):
add_action('admin_head', 'no_weak_password_header'); function no_weak_password_header() { echo' .pw-weak{display:none!important} document.getElementById("pw-checkbox").disabled = true; '; }
Saludos.