Le mot de passe change lorsque l'utilisateur se connecte pour la première fois

4

J'ai une page "changer le mot de passe".

Existe-t-il un moyen de rediriger cette page lorsque l'utilisateur login first time utilise le mot de passe généré par wordpress?

Merci

    
posée Giri 25.03.2012 - 01:26

3 réponses

3

Peut-être que cela vous aide?

enlace

Il semble avoir eu un problème similaire qu'il a résolu il y a un an.

Ce qu’il fait différemment de votre approche est de rediriger 48 heures après l’enregistrement. Peut-être que cela suffit?

Sinon, je compte le faire à votre façon.

--- EDIT

D'accord, je viens de créer un plugin qui fait exactement ce que vous voulez:

/*
 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');

Il ajoute une métadonnée utilisateur "modified_password" à l'utilisateur qui a modifié son mot de passe.

Lors de la connexion, il vérifie si les métadonnées de l'utilisateur "modified_password" sont définies et redirige si elles ne le sont pas (par conséquent, l'utilisateur n'a pas modifié son mot de passe, même une fois).

Lorsque le mot de passe de l'utilisateur est réinitialisé à une valeur aléatoire, les métadonnées de l'utilisateur "mot_de_passe_changé" sont également réinitialisées.

    
réponse donnée xaedes 25.03.2012 - 18:00
2

Accrochez user_register et ajouter des métadonnées d'utilisateur pour stocker un indicateur" ne s'est pas encore connecté ". Accrochez wp_login et recherchez ces métadonnées, supprimez-les et redirigez-les, le cas échéant, procédez normalement au login.

    
réponse donnée Milo 25.03.2012 - 18:15
0

En plus de la réponse 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');

Modifier (info)

Le crochet wp_login ne fonctionne pas très bien en termes de récupération de méta utilisateur. Renvoie parfois FALSE avec l'utilisateur connecté.

    
réponse donnée RafaSashi 05.09.2016 - 15:34

Lire d'autres questions sur les étiquettes