Столкнулся с такой проблемой, после регистрации не подтвержденный пользователь не может войти в ЛК в случае если он вводит свой логин в форме входа, до тех пор пока не подтвердит свою почту. Но если пользователь место логина вводит свой email то без проблем попадает в ЛК.
Как отключить попадание в ЛК неподтвержденного пользователя, если он водит место логина свой email?
Нашел причину файл *wp-contentpluginswp-recallfunctionsauthorize.php
Строка:
if ( $user = get_user_by('login', $login) ){ if(rcl_is_user_role($user->ID, 'need-confirm')){ $wp_errors->add( 'rcl_login_confirm', __('Ваша учетная запись не была активирована. Пожалуйста, подтвердите свой e-mail перейдя по ссылке в письме. Если Вы не получили письмо, содержащее ссылку для активации, просим Вас запросить письмо еще раз, используя эту ссылку.','wp-recall') ); return $wp_errors; } }
В данном правиле необходимо реализовать проверку не только по логину но и по Email, как это сделать правильно?
Андрей CS сказал(а)
а необходимость указывать пароль вами никак не учитывается? За все время существования этого сайта ни один аккаунт не был взломан, да и сомневаюсь, что спамеры вообще занимаются такими взломами.
Андрей, email почта не указана в качестве логина, но не подтвержденный пользователь все равно может войти в ЛК. Для теста зарегистрировался на Вашем сайте, и вошел в ЛК введя место логина почту. Вот проверьте сами.
ПС. Мы же сейчас говорим о не подтвержденных пользователях, разве пользователь может попадать в ЛК если он не подтвердил почту пускай он даже ввел место логина почту?
Андрей CS сказал(а)
Теперь вижу проблему, можно было описать все это более корректно еще в первом сообщении.
Описывайте пошагово, как именно данную проблему можно повторить.
Андрей я с уважением отношусь к Вам, и Вашим трудам. Но не пойму что именно не ясно из моего первого сообщения?
В прочем уже не важно.
Разобрался, все оказалось очень просто.
В файл: *wp-contentpluginswp-recallfunctionsauthorize.php
Перед кодом:
if ( $user = get_user_by('login', $login) ){ if(rcl_is_user_role($user->ID, 'need-confirm')){ $wp_errors->add( 'rcl_login_confirm', __('Ваша учетная запись не была активирована. Пожалуйста, подтвердите свой e-mail перейдя по ссылке в письме. Если Вы не получили письмо, содержащее ссылку для активации, просим Вас запросить письмо еще раз, используя эту ссылку.','wp-recall') ); return $wp_errors; } }
Данный текст:
Ваша учетная запись не была активирована. Пожалуйста, подтвердите свой e-mail перейдя по ссылке в письме. Если Вы не получили письмо, содержащее ссылку для активации, просим Вас запросить письмо еще раз, используя эту ссылку.
У меня свой.
Ввести:
/* Если пользователь ввел место логина почту и он не подтвержден не впускать в ЛК */ if ( $user = get_user_by('email', $login) ){ if (rcl_is_user_role ($user->ID, 'need-confirm') ) { $wp_errors->add( 'rcl_login_confirm', __('Не пытайся войти введя мыло !!!','wp-recall') ); return $wp_errors; } } /* END */
Естественно текст : "Не пытайся войти введя мыло !!!" меняем на свой 🙂
я проанализировал указанную проблему, плагин ни при чем, дело связано с изменениями в процессе авторизации в ядре ВП.
В последних версиях ВП появился функционал, который позволяет пользователю авторизоваться на сайте указывая вместо логина емейл пользователя.
Отключаем эту функцию:
remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 );
Андрей CS сказал(а)
я проанализировал указанную проблему, плагин ни при чем, дело связано с изменениями в процессе авторизации в ядре ВП.
В последних версиях ВП появился функционал, который позволяет пользователю авторизоваться на сайте указывая вместо логина емейл пользователя.
Отключаем эту функцию:remove_filter( 'authenticate', 'wp_authenticate_email_password', 20 );
Андрей а в таком случае авторизация по Email будет не осуществима даже в случае если пользователь активировал уч. зап.?