2013-10-03 25 views
5

Próbuję zrobić coś z hasłami wordpress, które mogą lub nie mogą być uznane za koszerne.Hak do resetowania haseł Wordpress

Sytuacja:
Zasadniczo mam dwie różne usługi zarówno wymagających podania hasła. Jedną z tych usług jest proste konto Wordpress, a druga to inna aplikacja, nie mająca nic wspólnego z wordpress. Chciałbym zsynchronizować nazwy użytkowników i hasła na dwóch, co oznacza, że ​​za każdym razem, gdy zmienia się nazwa użytkownika wordpress, nazwa użytkownika aplikacji zmienia się i za każdym razem, gdy zmienia się hasło wordpress, hasło aplikacji zmienia się.

Problem/Pytanie:
Istnieje kilka sposobów mogłem zajmować się podając nazwę użytkownika, ale hasło jest podchwytliwe. Szukam wykorzystania haka z interfejsu resetowania hasła wordpress, tak aby za każdym razem, gdy ustawiono nowe hasło, pobiera je w formie zwykłego tekstu (przed jego zaszyfrowaniem) i wysyła do interfejsu API, którego używam do hash/przechowuj hasła osobno dla tej aplikacji nie-wordpress. Czy istnieje sposób, aby to osiągnąć?

Każde ujęcie w roztworze jest bardzo doceniane.

Odpowiedz

5

Tak, istnieją haczyki do tego w /wp-login.php (reset hasła) i /wp-admin/includes/user.php (zmiana hasła na stronie użytkownika).

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

i

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

Można spróbować użyć hak validate_password_reset aby potwierdzić hasło. Poniższy kod może służyć do sprawdzania hasła alfanumerycznego.

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.',''); 
}