私はLDAPログインと自動アカウント作成を可能にするためにwpDirAuthプラグインを使用しています。私が遭遇した1つの問題は、LDAPユーザーがパスワードのリセットを要求できることです。彼らはリンク付きのEメールを受信しますが、リンクはキーが無効であると言います。パスワードを変更しようとしないのはいいことです。
ただし、送信された電子メールや、フォーム送信時に「このサイトではアカウントのパスワードを変更できません。ITサービスデスクに契約してください」というメッセージが表示されないようにします。
フォームが送信されたらアカウントがLDAPであるかどうかを確認し(LDAPアカウントを識別するために会社の電子メールアドレスを確認できます)、エラーメッセージを返すために使用できるフックはありますか?
パスワードをリセットするためにLDAPユーザーをチェックおよびブロックするためのコード。
/**
* Checks whether a user is LDAP user and restricts to reset password.
*
* @param bool $allow Whether the password can be reset.
* @param int $user_id The ID of the user.
* @return bool|WP_Error
*/
function ldap_restrict_password_reset( $allow, $user_id ) {
$user = get_user_by( 'id', $user_id );
if ( ! empty( $user ) ) {
$user_login = stripslashes( $user->data->user_login );
$user_email = stripslashes( $user->data->user_email );
// check if the user a LDAP user
if( $user_email === '[email protected]' ) {
return new WP_Error('no_password_reset', __('Password reset is not allowed for this LDAP user on this site.'));
}
}
return $allow;
}
/* Filters whether the user's password can be reset. */
add_filter( 'allow_password_reset', 'ldap_restrict_password_reset', 10, 2 );
注:取得してユーザーがLDAPであるかどうかを確認するコードを追加してくださいユーザー。
=================================================== =======
これらはあなたが電子メールの送信を停止してエラーメッセージを表示するために使用できるフックのいくつかです。
/**
* Fires before a new password is retrieved.
*
* @since 1.5.1
*
* @param string $user_login The user login name.
*/
do_action( 'retrieve_password', $user_login );
/**
* Filter whether to allow a password to be reset.
*
* @since 2.7.0
*
* @param bool true Whether to allow the password to be reset. Default true.
* @param int $user_data->ID The ID of the user attempting to reset a password.
*/
$allow = apply_filters( 'allow_password_reset', true, $user_data->ID );
if ( ! $allow )
return new WP_Error('no_password_reset', __('Password reset is not allowed for this user'));
else if ( is_wp_error($allow) )
return $allow;
上記はwp-login.phpファイルから取ったコードの一部です。 http://wpseek.com/retrieve_password/