2013-10-03 23 views
5

Sto provando a fare qualcosa con password wordpress che possono o non possono essere considerate kosher.Wordpress reimpostazione della password hook

Situazione:
Fondamentalmente ho due servizi diversi che richiedono entrambe le password. Uno di questi servizi è un semplice account wordpress e uno è un'altra app, non avendo nulla a che fare con wordpress. Vorrei sincronizzare i nomi utente e le password tra i due, il che significa che ogni volta che cambia il nome utente di wordpress, il nome utente dell'app cambia e ogni volta che cambia la password di wordpress, la password dell'app cambia.

Problema/Domanda:
Ci sono diversi modi ho potuto affrontare il nome utente, ma la password è quella difficile. Sto cercando di sfruttare un hook dall'interfaccia di reimpostazione della password di wordpress in modo che ogni volta che viene impostata una nuova password, la prende nella sua forma di testo semplice (prima che sia hash) e la invia a un'API che sto usando per hash/salva le password separatamente per questa app non-wordpress. C'è un modo per realizzare questo?

Tutti i colpi di una soluzione sono molto apprezzati.

risposta

5

Sì, ci sono ganci per questo in /wp-login.php (reimpostazione della password) e /wp-admin/includes/user.php (modifica della password nella pagina utente).

# When reseting password in wp-login 
add_action('password_reset', function($user, $pass) 
{ 
    var_dump($pass); 
    die(); 
}, 10, 2); 

e

# When checking if passwords match 
add_action('check_passwords', function($user, $pass1, $pass2) 
{ 
    var_dump($pass1); 
    die(); 
}, 10, 3); 
-1

Puoi provare a utilizzare agganciare il validate_password_reset per convalidare la password. Il seguente codice può essere utilizzato per convalidare la password alfanumerica.

add_action('validate_password_reset','wdm_validate_password_reset',10,2); 

function wdm_validate_password_reset($errors, $user) 
{ 
    $exp = '/^(?=.*\d)((?=.*[a-z])|(?=.*[A-Z])).{6,32}$/'; 

    if(strlen($_POST['pass1'])<6 || !preg_match($exp, $_POST['pass1'])) 
      $errors->add('error', 'Password must be alphanumeric and contain minimum 6 characters.',''); 
} 
Problemi correlati