web-dev-qa-db-fra.com

Comment faire expirer tous les mots de passe utilisateur wordpress instantanément?

Donc, je possède un site Web d'annuaire d'articles et récemment, beaucoup de robots se sont inscrits et ont commencé à poster du spam. (J'approuve les publications avant publication)

J'ai ajouté un captcha à la page d'enregistrement des utilisateurs, mais pour les utilisateurs déjà enregistrés, je souhaite que leurs mots de passe expirent. Ils doivent donc en définir de nouveaux et, bien entendu, les robots ne pourront pas le faire.

J'ai essayé plusieurs plugins sans succès. Je ne sais pas vraiment quoi faire. J'ai plus de 1800 utilisateurs, donc passer à travers eux 1 par 1 n'est pas une option.

J'apprécierais beaucoup cela!

Je vous remercie!

2
Mohammad G

Certaines fonctionnalités sous-jacentes empruntées à http://wordpress.org/extend/plugins/auto-expire-passwords/ et modifiées. Non testé, mais dans le sens de ce que vous recherchez, donc YMMV.

function custom_forced_password_reset( $user ) {
    update_user_meta( $user->ID, 'password_was_force_reset', true );
}
add_action( 'password_reset', 'custom_forced_password_reset' );    

// Ensure all new register users have the flag set
function custom_forced_password_user_register($user_id){
    update_user_meta( $user_id, 'password_was_force_reset', true );
}
add_action( 'user_register', 'custom_forced_password_user_register', 10, 1 );

function custom_log_in_check( $user, $username, $password ) {
    if ( is_wp_error( $user ) )
        return $user;

    // Check we're dealing with a WP_User object
    if ( ! is_a( $user, 'WP_User' ) )
        return $user;

    // This is a log in which would normally be succesful
    $user_id = $user->data->ID;


    $reset = get_user_meta( $user_id, 'password_was_force_reset', false );
    if ( empty( $reset ) || $reset == false ) {
            $user = new WP_Error( 'authentication_failed', sprintf('<strong>ERROR</strong>: You must <a href="%s">reset your password</a>.', site_url( 'wp-login.php?action=lostpassword', 'login' ) ) );
    }

    return $user;
}
add_filter( 'authenticate', 'custom_log_in_check', 30, 3 );
1
William