Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Восстановление пароля по дополнительному полю

00 голосов
3
Можно сделать авторизацию по e-mail или другому доп. полю пользователя, примерно так:

Код
AddEventHandler("main", "OnBeforeUserLogin", "OnBeforeUserLoginHandler");
function OnBeforeUserLoginHandler(&$arFields)
{
   if (isset($_POST['USER_LOGIN']))
   {
      $e = strpos($_POST['USER_LOGIN'], "@");
      $filter = '';
      if ((int)$e > 0)
      {
         $filter = Array("EMAIL" => $_POST['USER_LOGIN']);
      }
      else if (!preg_match('/[^0-9]/', $_POST['USER_LOGIN']))
      {
         $filter = Array("UF_ID_1C" => $_POST['USER_LOGIN']);
      }
      if (!empty($filter))
      {
         $rsUsers = CUser::GetList(($by="id"), ($order="desc"), $filter);
         $res = $rsUsers->Fetch();
         $arFields["LOGIN"]=$res['LOGIN'];
      }
   }
}


А вот как сделать восстановление пароля по любому полю пользователя?
спросил 14 Фев, 14 от TryaN (100 баллов)

3 Ответы

00 голосов
может в фильтр добавить именно то поле по которому вы хотите востановить ?
ответил 05 Июль, 14 от ZoMbie (260 баллов)
00 голосов
Тоесть?
ответил 05 Ноя, 14 от TryaN (100 баллов)
00 голосов
Цитата
Павел Ермаков пишет:
А вот как сделать восстановление пароля по любому полю пользователя?

для восстановления пароля надо отправить ему ссылку на эл.почту ?

чтобы пользователь мог сам поменять пароль в своем профиле
алгоритм примерно такой:
1) ищем по ключевому полю в списке пользователей (как у Вас через $rsUsers = CUser::GetList)
2) авторизуем найденного пользователя через CUser::Authorize
ответил 04 Март, 15 от Ymca (880 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 29 Март, 14 от Snezhka (2,240 баллов)
0 голосов
3 ответов
спросил 25 Март, 14 от Sher (160 баллов)
0 голосов
5 ответов
0 голосов
2 ответов
спросил 03 Май, 14 от KeiDen (400 баллов)
0 голосов
2 ответов
спросил 29 Ноя, 13 от WelMax (430 баллов)