Cambio de contraseña cuando el usuario inicia sesión por primera vez

4

Tengo una página de "cambiar contraseña".

¿Hay alguna forma de redireccionar esa página cuando el usuario login first time usa una contraseña generada por wordpress?

Gracias

    
pregunta Giri 25.03.2012 - 01:26

3 respuestas

3

Tal vez esto te ayuda?

enlace

Parece que tuvo un problema similar y lo resolvió hace un año.

Lo que él hace diferente a su enfoque es redirigir 48 horas después del registro. Tal vez esto sea suficiente?

Si no, quiero hacerlo a tu manera.

--- EDITAR

Bien, acabo de crear un complemento que hace exactamente lo que quieres:

/*
 Plugin Name: Redirect Passwort
Plugin URI: TODO
Description: TODO
Author: xaeDes
Version: 0.1
Author URI: TODO
License: GPL2
*/

function redirect_passwort_profile_update($user_id, $old_user_data) {
    $user = new WP_User( $user_id );
    if( $user->data->user_pass != $old_user_data->user_pass) {
        //password has changed
        update_metadata("user",$user_id,"changed_password",true);
    }
}
add_action("profile_update", "redirect_passwort_profile_update", 10, 2);

function redirect_passwort_login_redirect($redirect_to, $url_redirect_to = '', $user = null) {

    if( isset($user->ID) ) {
        $changed_password = get_metadata("user", $user->ID, "changed_password",true);
        if( $changed_password != true ) {
            return get_bloginfo('url') . "/change-your-password-dude/";
        } else {
            return $redirect_to;
        }
    }
}
add_filter('login_redirect', 'redirect_passwort_login_redirect',10,3);

function redirect_passwort_password_reset( $user ) {
    //password has been reset to a random one. so the changed_password meta data should be reset as well
    if( isset($user->ID) ) {
        delete_metadata("user", $user->ID, "changed_password");
    }
}
add_action('password_reset', 'redirect_passwort_password_reset');

Agrega un metadatos de usuario "changed_password" al usuario que cambió su contraseña.

Al iniciar sesión, comprueba si los metadatos del usuario "changed_password" están configurados y redirige si no están configurados (y, por lo tanto, el usuario no ha cambiado su contraseña ni una sola vez).

Cuando la contraseña del usuario se restablece a una aleatoria, los metadatos del usuario "changed_password" también se restablecen.

    
respondido por el xaedes 25.03.2012 - 18:00
2

Enganche user_register y agregar metadatos del usuario para almacenar un indicador" aún no ha iniciado sesión ". Enganche wp_login y compruebe los metadatos, elimine y redirija si existe, de lo contrario realice el comportamiento de inicio de sesión normal.

    
respondido por el Milo 25.03.2012 - 18:15
0

Además de la respuesta de Milo:

    function after_user_register( $user_id ){

        // the new user just registered but never logged in yet
        add_user_meta($user_id, "has_not_logged_in_yet", "true", true);
    }

    add_action( 'user_register', 'after_user_register', 10, 1 );

    function after_user_loggedin(){

        if(is_user_logged_in()){

            $user_id=get_current_user_id();

            $user_meta=get_user_meta($user_id);

            if(isset($user_meta['has_not_logged_in_yet'])){

                delete_user_meta($user_id, "has_not_logged_in_yet");

                //do something else
            }
        }
    }

    add_action( 'init', 'after_user_loggedin');

Editar (FYI)

Hook wp_login no se está desempeñando muy bien en términos de la meta recuperación del usuario. En ocasiones, devuelve FALSE con el usuario que inició sesión.

    
respondido por el RafaSashi 05.09.2016 - 15:34

Lea otras preguntas en las etiquetas