Меню

Битрикс ошибка регистрации нового пользователя

 

Пользователь 306532

Постоянный посетитель

Сообщений: 99
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.01.2015

Здравствуйте.

После недавних обновлений битрикса стали звонить клиенты и жаловаться, что не могут оформить заказ.

У нас сделано так, что вся регистрация происходит автоматически, эмейл на уникальность не проверяется, письма о регистрации не приходят и на один адрес можно оформлять заказы повторно. Это сделано для того, чтобы не мучать людей ЛК и Асей регистрацией. Просо зашли люди и оформили заказ. Все работает стандартными методами битрикса.

Сейчас же, уже несколько звонков, что на этапе последнего оформления заказа, то есть подтверждения уже возникает ошибка: Ошибка регистрации нового пользователя: пользователь с номером телефона…. уже существует.

Что делать? Настройки не менялись, все как и было. Но видимо, мосле обновлений битрикса он стал проверять номер телефона на уникальность и говорить, что такой уже есть. В главном модуле да, появились две новый галки (у нас не активны), что использовать номер телефона и телефон является обязательным. Но про уникальность ничего. Как отключить эту новою функцию битрикса? Кто что посоветует?  

 

Пользователь 252363

Заглянувший

Сообщений: 10
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.05.2014

http://joxi.ru/D2PyBMGIqad6BA

проверьте настройки главного модуля , может стоит галочка на регистрацию пользователя по номеру телефона ,  

 

Пользователь 369480

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 12.08.2015

Путем изучения sale.order.ajax выяснилось, что в этой проблеме помогли настройки — в главном модуле установить

http://prntscr.com/oald3x

(если на вашем сайте это допустимо) и в настройках sale.order.ajax «ALLOW_APPEND_ORDER» => ‘Y’

GYRYs , если нашли другое решение, поделитесь, пожалуйста

 

Пользователь 306532

Постоянный посетитель

Сообщений: 99
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.01.2015

В том то и дело, что там ничего не стоит.

Написал в поддержку, они сняли галочку в настройках магазина в списке свойств заказа в телефоне «является как телефон». И вроде как, обсудят с разработчиками что делать.  

 

Пользователь 252363

Заглянувший

Сообщений: 10
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.05.2014

Изучил что не так.
пока думаю что проблема пришла с этого обновления

Модуль «Интернет-магазин» Обновление 18.6.500

«Добавлена возможность регистрации покупателей по номеру телефона в компоненте sale.order.ajax.»

Проблема даже не в компоненте , а в том как регистрируется пользователь и что при этом происходит с полем указанным как телефон.
В главном модуле добавились несколько классов отвечающие за обработку  телефонов,
В момент регистрации пользователя с полем телефона происходит ряд проверок и нет ни каких условий на параметры/настройки модуля,  
то есть процесс прохождения проверки телефона на уникальность и соответствие формату номера выбранной страны прямолинеен и обойти его не меняя ядро невозможно.
Единственное что можно сделать это не передавать этот параметр для регистрации пользователя.
а как это сделать уже сами решайте:

самый простой способ это отключить галочку в свойствах заказа «это поле является телефоном»
но в этом случае мы теряем весь функционал связанный с телефоном в модуле интернет магазин.  

еще можно на событие до регистрации пользователя удалять данные по номеру телефона что бы обойти проверки.

 

Пользователь 306532

Постоянный посетитель

Сообщений: 99
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.01.2015

Ждём решения от разработчиков

 

Пользователь 1242451

Заглянувший

Сообщений: 13
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 30.06.2017

#7

0

09.07.2019 12:06:24

Цитата
GYRYs написал:
Ждём решения от разработчиков

Поддерживаю. Вопрос теперь когда ждать обновления с доработкой по данному функционалу.

 

Пользователь 140482

Заглянувший

Сообщений: 12
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 04.09.2012

Тоже столкнулся в данной проблемой, опять прилетело кривое обновление.
Задолбали уже хрень выкатывать, не протестировав ничего.
Отдел тестирования у них вообще работает ?

Весной тоже пришло уведолмение что выкатили обновления и теперь для умного фильтра (catalog.smart.filter) работает предфильтрация …. сегодня проверил, ага, хрен там был, нихрена как не работало так и не работает.

 

Пользователь 252363

Заглянувший

Сообщений: 10
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.05.2014

#9

1

10.07.2019 13:56:46

В файле class.php который находится в /bitrix/components/bitrix/sale.order.ajax есть функция она где то на 1700 rкакой то строке

Код
protected function registerAndLogIn($userProps)
   {
      $userId = false;
      $userData = $this->generateUserData($userProps);

      $fields = [
         'LOGIN' => $userData['NEW_LOGIN'],
         'NAME' => $userData['NEW_NAME'],
         'LAST_NAME' => $userData['NEW_LAST_NAME'],
         'PASSWORD' => $userData['NEW_PASSWORD'],
         'CONFIRM_PASSWORD' => $userData['NEW_PASSWORD_CONFIRM'],
         'EMAIL' => $userData['NEW_EMAIL'],
         'GROUP_ID' => $userData['GROUP_ID'],
         'ACTIVE' => 'Y',
         'LID' => $this->getSiteId(),
         'PHONE_NUMBER' => isset($userProps['PHONE']) ? $userProps['PHONE'] : '',
         'PERSONAL_PHONE' => isset($userProps['PHONE']) ? $this->getNormalizedPhone($userProps['PHONE']) : '',
         'PERSONAL_ZIP' => isset($userProps['ZIP']) ? $userProps['ZIP'] : '',
         'PERSONAL_STREET' => isset($userProps['ADDRESS']) ? $userProps['ADDRESS'] : '',
      ];

      if ($this->arParams['IS_LANDING_SHOP'] === 'Y')
      {
         $fields['GROUP_ID'] = BitrixCrmOrderBuyerGroup::getDefaultGroups();
         $fields['EXTERNAL_AUTH_ID'] = 'shop';

         // reset department for intranet
         $fields['UF_DEPARTMENT'] = [];

         // rewrite login with email
         if (!empty($userData['NEW_EMAIL']))
         {
            $fields['LOGIN'] = $userData['NEW_EMAIL'];
         }
      }

      $user = new CUser;
      $addResult = $user->Add($fields);

      if (intval($addResult) <= 0)
      {
         $this->addError(Loc::getMessage('STOF_ERROR_REG').((strlen($user->LAST_ERROR) > 0) ? ': '.$user->LAST_ERROR : ''), self::AUTH_BLOCK);
      }
      else
      {
         global $USER;

         $userId = intval($addResult);
         $USER->Authorize($addResult);

         if ($USER->IsAuthorized())
         {
            if ($this->arParams['SEND_NEW_USER_NOTIFY'] == 'Y')
            {
               if (
                  isset($this->arParams['CONTEXT_SITE_ID']) &&
                  $this->arParams['CONTEXT_SITE_ID'] > 0 &&
                  Loader::includeModule('landing')
               )
               {
                  $componentName = 'bitrix:landing.pub';
                  /** @var LandingPubComponent $className */
                  $className = CBitrixComponent::includeComponentClass($componentName);
                  $className::replaceUrlInLetter(
                     $this->arParams['CONTEXT_SITE_ID']
                  );
               }
               CUser::SendUserInfo($USER->GetID(), $this->getSiteId(), Loc::getMessage('INFO_REQ'), true);
            }
         }
         else
         {
            $this->addError(Loc::getMessage('STOF_ERROR_REG_CONFIRM'), self::AUTH_BLOCK);
         }
      }

      return $userId;
   }

меняем на предпоследнюю версию компонента где не было проблем с регистрацией пользователя с телефоном и его повторной авторизацией

Код
   protected function registerAndLogIn($userProps)
   {
      $userId = false;
      $userData = $this->generateUserData($userProps);

      $fields = [
         'LOGIN' => $userData['NEW_LOGIN'],
         'NAME' => $userData['NEW_NAME'],
         'LAST_NAME' => $userData['NEW_LAST_NAME'],
         'PASSWORD' => $userData['NEW_PASSWORD'],
         'CONFIRM_PASSWORD' => $userData['NEW_PASSWORD_CONFIRM'],
         'EMAIL' => $userData['NEW_EMAIL'],
         'GROUP_ID' => $userData['GROUP_ID'],
         'ACTIVE' => 'Y',
         'LID' => $this->getSiteId(),
         'PERSONAL_PHONE' => isset($userProps['PHONE']) ? $this->getNormalizedPhone($userProps['PHONE']) : '',
         'PERSONAL_ZIP' => isset($userProps['ZIP']) ? $userProps['ZIP'] : '',
         'PERSONAL_STREET' => isset($userProps['ADDRESS']) ? $userProps['ADDRESS'] : '',
      ];

      if ($this->arParams['IS_LANDING_SHOP'] === 'Y')
      {
         $fields['GROUP_ID'] = BitrixCrmOrderBuyerGroup::getDefaultGroups();
         $fields['EXTERNAL_AUTH_ID'] = 'shop';

         // reset department for intranet
         $fields['UF_DEPARTMENT'] = [];

         // rewrite login with email
         if (!empty($userData['NEW_EMAIL']))
         {
            $fields['LOGIN'] = $userData['NEW_EMAIL'];
         }
      }

      $user = new CUser;
      $addResult = $user->Add($fields);

      if (intval($addResult) <= 0)
      {
         $this->addError(Loc::getMessage('STOF_ERROR_REG').((strlen($user->LAST_ERROR) > 0) ? ': '.$user->LAST_ERROR : ''), self::AUTH_BLOCK);
      }
      else
      {
         global $USER;

         $userId = intval($addResult);
         $USER->Authorize($addResult);

         if ($USER->IsAuthorized())
         {
            if ($this->arParams['SEND_NEW_USER_NOTIFY'] == 'Y')
            {
               CUser::SendUserInfo($USER->GetID(), $this->getSiteId(), Loc::getMessage('INFO_REQ'), true);
            }
         }
         else
         {
            $this->addError(Loc::getMessage('STOF_ERROR_REG_CONFIRM'), self::AUTH_BLOCK);
         }
      }

      return $userId;
   }

и проблема решена  

 

Пользователь 306532

Постоянный посетитель

Сообщений: 99
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.01.2015

#10

0

11.07.2019 11:28:01

dpechurkin, В любом случае, хорошо чтобы они сами исправили и не надо было дорабатывать самостоятельно.  

 

Пользователь 252363

Заглянувший

Сообщений: 10
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.05.2014

#11

0

22.07.2019 08:48:25

Цитата
GYRYs написал:
dpechurkin , В любом случае, хорошо чтобы они сами исправили и не надо было дорабатывать самостоятельно.  

это будет просто великолепно, но как мы знаем обновления приходят не так оперативно как хотелось бы. Это для тех кому сейчас нужно сделать правку, что бы не терять заказы.  

 

Пользователь 306532

Постоянный посетитель

Сообщений: 99
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.01.2015

#12

0

02.08.2019 11:17:10

Сегодня прислали информацию в запросе, что будет решение
Модуль: sale, версия: 18.6.600
Решение: доработано

Ждем обновления и… проверяем)

 

Пользователь 764867

Заглянувший

Сообщений: 9
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 20.11.2016

#13

0

20.08.2019 13:09:42

Проблему удалось решить? Есть какое-то обновление, исправляющее ошибку?

 

Пользователь 252363

Заглянувший

Сообщений: 10
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.05.2014

#14

0

20.08.2019 22:01:15

Updated: sale (18.6.600)
[*]Обновление верстки шаблонов платёжных систем
[*]Доработки и исправления ошибок

обновление вышло 9 августа ,
есть кто обновился ? ушла проблема ?  

 

Пользователь 65463

Постоянный посетитель

Сообщений: 112
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 11.09.2014

#15

0

13.09.2019 06:18:37

Проблема не ушла. Более того, похоже, усугубилась. Теперь в магазине ни зарегистрироваться невозможно, ни совершить покупку незарегистрированному пользоветелю.
Короче, битрикс умер!
Скажите, у кого работает, до какой версии битрикса можно откатиться, чтобы магазин заработал?

 

#16

0

12.01.2020 18:28:30

Столкнулись с той же проблемой — это жесть. Допустим пусть такая ошибка будет при оформлении заказа, так как пользователь сам дожен авторизоваться и сделать заказ. Но тут другая проблема, у нас сидит менеджер и по звонкам оформляет заказы в административном разделе через кнопочку «Добавить заказ». При указании номера, появляется ошибка «Ошибка регистрации нового пользователя: Пользователь с номером телефона НОМЕР уже существует.» И что делать с этим непонятно. Перешли на новое решение, поставили все обновы и теперь не понимаем на кой его сделали, эту авторизацию по номеру, если она ни с одной стороны нормально не работает. Ждем решения. На момент написания сообщения проблема актуальна с последними обновами.  

 

Пользователь 1089577

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 19.06.2017

#17

0

08.09.2020 13:52:17

Добрый день! Удалось найти решение, отличное от замены кода на старый из предыдущей редакции?

 

Пользователь 3551394

Заглянувший

Сообщений: 20
Баллов: 1
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 17.09.2019

#18

0

28.09.2020 20:38:25

получилось у кого найти решение?

 

Пользователь 229543

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 03.12.2013

#19

0

02.04.2021 08:04:23

— Нужно скопировать компонент /bitrix/components/bitrix/sale.order.ajax в своё пространство: /local/components/bitrix/sale.order.ajax
— в файле /local/components/bitrix/sale.order.ajax/class.php закомментировать строку в функции registerAndLogIn :

Код
 // 'PHONE_NUMBER' => isset($userProps['PHONE']) ? $userProps['PHONE'] : '',

партнер компании 1с-битрикс

сайт фрилансера Сергея Эстрина

Закрыть

Универсальная галерея - модуль для битрикс

 

При создании быстрого заказа (заказ в 1клик) неавторизованным пользователем первый раз для конкретного емейла — все проходит успешно.
При попытке последующих заказов, если указать тот же емейл — выдает ошибку «Ошибка регистрации нового пользователя: Пользователь с таким e-mail (**@***.ru) уже существует.»
Т.е. как я понимаю — он в первый раз создает пользователя в базе, а при следующем заказе пытается его безуспешно авторизовать, т.к. пароль не передается.

PS Сайт на Битронике

 

Андрей, да, он создает пользователя, без него он жить не может, к сожалению) В настройках главного модуля есть галочка «Проверять E-mail на уникальность при регистрации».

 

Может быть тогда высылать сразу на емейл при первом же заказе сгенерированный пароль для доступа к сайту? Глядишь в следующий раз зайдет уже авторизованным

 

Сергей Эстрин

Администратор

Сообщений: 462
Регистрация: 18.02.2010

#4

28.03.2015 02:08:39

Цитата
Андрей пишет:
Может быть тогда высылать сразу на емейл при первом же заказе сгенерированный пароль для доступа к сайту? Глядишь в следующий раз зайдет уже авторизованным

Конкретно пароль стандартными средствами не отправить, т.к. он хранится в зашифрованном виде в битриксе, но можно с помощью стандартных средств отправлять сообщение со ссылкой на страницу смены пароля, т.е. с помощью стандартных шаблонов сообщений.

Цитировать   Имя

 

Гость

Гость

#5

10.03.2016 16:33:13

Цитата
Андрей написал:
Может быть тогда высылать сразу на емейл при первом же заказе сгенерированный пароль для доступа к сайту? Глядишь в следующий раз зайдет уже авторизованным

Не вариант, так как все решают поведенческие факторы и мы многое теряем. Думаю, при таком вариант авторизованным никто не зайдет, скорее развернется и уйдет.

Цитировать   Имя

Для начала работы в Битрикс24 необходимо авторизоваться на портале. Мы подготовили решения для самых частых проблем с авторизацией.

Ошибка «Неверный логин или пароль»

Чаще всего дело в неправильно указанном пароле. Проверьте раскладку клавиатуры и убедитесь, что не включена клавиша CapsLock. Повторите попытку или попробуйте восстановить пароль. Подробнее читайте в статье Как восстановить пароль.

Также проверьте, что логин введен правильно.

Ошибка «Такого пользователя нет на портале, смените авторизацию, чтоб войти под другим пользователем»

Ошибка возникает, если данный логин уже зарегистрирован в Битрикс24, но он не привязан к порталу, на который вы хотите зайти. Проверьте, что используются верные данные для входа – это может быть другая почта, мобильный телефон или социальная сеть. При необходимости вы можете добавить этого пользователя на портал, для этого отправьте ему приглашение.

Подробнее читайте в статье Как пригласить сотрудников.

Ошибка «Не удалось найти пользователя с таким e-mail»

Ошибка возникает, если данная почта не зарегистрирована в Битрикс24. Проверьте правильность указанного логина. Возможно, что это другая почта, мобильный телефон или социальная сеть.

Ошибка «Возможно, пользователь уволен на портале»

Ошибка возникает, когда данный пользователь был уволен с портала, на который пытается войти. После увольнения сотрудника, доступ в Битрикс24 ему закрыт. Проверьте на тот ли портал осуществляется вход.

Не могу авторизоваться через аккаунт социальной сети

Причина может быть в том, что у вас есть несколько аккаунтов в одной социальной сети, к примеру, ВКонтакте. Один из них может быть привязан к Битриск24.Паспорт, а другой — нет.

В этом случае попробуйте использовать другой аккаунт.

Я регистрировался через социальную сеть. Как сделать обычный логин и пароль для входа в Битрикс24?

При регистрации с помощью соцсервисов вы авторизируйтесь в Битрикс24 по данным этих социальных сетей. Вы можете привязать электронную почту к аккаунту и входить на портал по логину и паролю.

Подробнее читайте в статье — Как задать логин и пароль?

Ошибка «Пользователь с таким email уже существует (при попытке сменить или задать логин в Битрикс24.Паспорт)»

Такая ошибка возникает, если вы пытаетесь привязать к аккаунту email, который уже зарегистрирован в Битрикс24. В таком случае вы можете использовать другой email или отвязать желаемую почту от аккаунта. Для этого зайдите в Паспорт по email, который необходимо освободить и нажмите Изменить в графе Электронная почта. Укажите новый адрес email и подтвердите его. После этого необходимая почта будет отвязана и вы сможете привязать ее к нужному аккаунту.

Подробнее читайте в статье Как изменить логин и пароль.

Ошибка «Неверное контрольное слово»

Если при смене пароля возникает данная ошибка, это может быть связано с несколькими причинами:

  • Вы отправили несколько запросов на восстановление пароля и перешли по устаревшей контрольной строке. Для того, чтобы успешно изменить пароль, перейдите по ссылке из последнего письма и установите новый пароль к аккаунту.
  • Ссылка для восстановления действует 60 минут. Проверьте, что срок ее активности не истек.
  • В браузере уже есть активная авторизация в Битрикс24.Паспорт не для которого необходимо восстановить пароль. Попробуйте повторить попытку через режим «Инкогнито» в браузере.

Ошибка «Пользователи с такими email уже существуют (при приглашении сотрудника)»

Это означает, что сотрудник с такой почтой уже есть на портале. Это может быть почта для авторизации или поле Контактный email в профиле, либо оба пункта. В этом случае можно только изменить email в Битрикс24.Паспорт и в профиле на портале.

изменить емейл.jpg

Мы рекомендуем, чтобы у каждого сотрудника была своя уникальная почта.

Допустили ошибку в email при регистрации сотрудника и теперь сотрудник не может авторизоваться

Решить данную проблему можно только уволив с портала сотрудника с неправильной почтой. Затем пригласите коллегу уже по корректному адресу.

Подробнее читайте в статье Увольнение сотрудников.

Мне не приходят на почту приглашения/запросы на восстановление пароля

Прежде всего проверьте папку Спам и Рассылки вашего почтового сервиса. Если письма нет, попробуйте отправить приглашение повторно.

Подробнее читайте в статье Как пригласить сотрудников.

Если у вас почта на собственном домене – добавьте адрес no-reply@bitrix24.net в белый список на приём сообщений.

Меня пригласили на портал, но я не могу авторизоваться. Что делать?

Перед авторизацией на портале вам необходимо зарегистрировать логин и установить пароль для входа в Битрикс24.

Подробнее читайте в статье Авторизация в Битрикс24 через приглашение.

Я потерял телефон/переустановил приложение и теперь не могу войти без одноразового пароля

В таком случае вам необходимо настроить двухфакторную авторизацию заново или воспользоваться резервными кодами, если сохраняли их. Также вы можете обратиться к администратору портала для отключения двухэтапной авторизации.

Подробнее читайте в статье Обновить двухэтапную авторизацию на новом телефоне.

Как передать почту уволенного сотрудника другому сотруднику?

Прежде всего администратору портала или руководителю этого сотрудника необходимо зайти в его профиль на портале и изменить контактный e-mail на любой другой.

Сменить контактный email

Затем уволенному сотруднику необходимо зайти в Битрикс24.Паспорт www.bitrix24.net и изменить свой логин.

Подробнее читайте в статье Как изменить логин и пароль.

Если у администратора портала есть доступ к аккаунту/почте – он может сделать это самостоятельно.

Теперь вы сможете пригласить сотрудника на почту, которая стала свободна.

Как удалить аккаунт Битрикс24.Паспорт?

Удалить учетную запись Битрикс24.Паспорт невозможно, пока есть привязка хоть к одному порталу. Как только ваш аккаунт не будет привязан ни к одному Битрикс24, то в меню учетной записи появится пункт удаления.

Спасибо, помогло!

Спасибо 🙂

Необязательно:

Оставить отзыв о статье

Уточните, пожалуйста, почему:

Это не то, что я ищу

Очень сложно и непонятно

Оставить отзыв о статье

Возможности системного компонента регистрации довольно скромные: нет возможности добавить свои поля, сделать их обязательными для заполнения. Для реализации таких возможностей есть компонент «Настраиваемая регистрация», который позволяет настроить и разместить на сайте свою форму регистрации. В визуальном редакторе компонент расположен по пути: «Служебные • Пользователь • Настраиваемая регистрация».

Пример вызова компонента

<?php
$APPLICATION->IncludeComponent(     // Настраиваемая регистрация
    "bitrix:main.register",
    "",
    array(
        "AUTH" => "Y",              // Автоматически авторизовать пользователей
        "REQUIRED_FIELDS" => array( // Поля, обязательные для заполнения
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
        ),
        "SET_TITLE" => "Y",         // Устанавливать заголовок страницы
        "SHOW_FIELDS" => array(     // Поля, которые показывать в форме
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
        ),
        "SUCCESS_PAGE" => "",       // Страница окончания регистрации
        "USER_PROPERTY" => "",      // Показывать дополнительные свойства
        "USER_PROPERTY_NAME" => "", // Название блока пользовательских свойств
        "USE_BACKURL" => "N",       // Отправлять пользователя по обратной ссылке
    ),
    false
);
?>

Создадим страницу /auth/register.php, разместим на ней вызов компонента «Настраиваемая регистрация». В настройках компонента выберем поля, которые надо показывать:

  • [EMAIL] E-mail
  • [NAME] Имя
  • [LAST_NAME] Фамилия
  • [PERSONAL_PHONE] Телефон
  • [WORK_COMPANY] Наименование компании
  • [WORK_PHONE] Телефон (рабочий)

И укажем поля, обязательные для заполнения:

  • [EMAIL] E-mail
  • [NAME] Имя
  • [LAST_NAME] Фамилия
  • [PERSONAL_PHONE] Телефон

После этого страница /auth/register.php содержит следующий код:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Регистрация");
?>

<?php
$APPLICATION->IncludeComponent(
    "bitrix:main.register",
    ".default",
    array(
        "AUTH" => "N",
        "COMPONENT_TEMPLATE" => ".default",
        "REQUIRED_FIELDS" => array(
            0=>"EMAIL",
            1=>"NAME",
            2=>"LAST_NAME",
            3=>"PERSONAL_PHONE",
        ),
        "SET_TITLE" => "Y",
        "SHOW_FIELDS" => array(
            0=>"EMAIL",
            1=>"NAME",
            2=>"LAST_NAME",
            3=>"PERSONAL_PHONE",
            4=>"WORK_COMPANY",
            5=>"WORK_PHONE",
        ),
        "SUCCESS_PAGE" => "/auth/",
        "USER_PROPERTY" => array(),
        "USER_PROPERTY_NAME" => "",
        "USE_BACKURL" => "N"
    )
);
?>

<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

И имеет такой вид:

Теперь нам надо кастомизировать форму регистрации под наш дизайн. Для этого копируем шаблон компонента:

  • откуда: bitrix/components/bitrix/main.register/templates/.default
  • куда: local/templates/.default/components/bitrix/main.register/.default

После внесения изменений получилось так:

<?
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован */ ?>
    <p><?= GetMessage('MAIN_REGISTER_REG_AUTH'); /* Вы зарегистрированы и авторизованы */ ?></p>
    <?php return ?>
<?php endif; ?>

<div class="bitrix-main-register">

    <h2><?= GetMessage('MAIN_REGISTER_FORM_TITLE'); /* заголовок формы */ ?></h2>

    <?php if (count($arResult["ERRORS"]) > 0): /* сообщения об ошибках при заполнении формы */ ?>
        <?php
            foreach ($arResult["ERRORS"] as $key => $error) {
                if (intval($key) == 0 && $key !== 0) {
                    $arResult["ERRORS"][$key] = str_replace(
                        "#FIELD_NAME#",
                        '«'.GetMessage('MAIN_REGISTER_'.$key).'»',
                        $error
                    );
                }
            }
            ShowError(implode("<br />", $arResult["ERRORS"]));
        ?>
    <?php elseif ($arResult["USE_EMAIL_CONFIRMATION"] === "Y"): ?>
        <p><?= GetMessage('MAIN_REGISTER_EMAIL_HELP'); /* будет отправлено письмо для подтверждения */ ?></p>
    <?php endif; ?>

    <form method="post" action="<?= POST_FORM_ACTION_URI; ?>" name="regform" enctype="multipart/form-data">

        <?php if ($arResult["BACKURL"] <> ''): ?>
            <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
        <?php endif; ?>

        <?php foreach ($arResult["SHOW_FIELDS"] as $FIELD): ?>
            <?php if ($FIELD == "AUTO_TIME_ZONE" && $arResult["TIME_ZONE_ENABLED"]): /* часовой пояс */ ?>
                <!-- код удален -->
                <?php continue; ?>
            <?php endif; ?>

            <div>
                <span>
                    <?= GetMessage('MAIN_REGISTER_'.$FIELD); /* очередное поле */ ?>
                    <?php if ($arResult["REQUIRED_FIELDS_FLAGS"][$FIELD] == "Y"): ?>
                        <i>*</i> <!-- поле обязательно для заполнения -->
                    <?php endif; ?>
                </span>
                <span>
                    <?php if ($FIELD == "PASSWORD"): /* пароль */ ?>
                        <input type="password" name="REGISTER[<?= $FIELD; ?>]" value="<?= $arResult["VALUES"][$FIELD]; ?>"
                               autocomplete="off" />
                        <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация */ ?>
                            <!-- код удален -->
                        <?php endif; ?>
                    <?php elseif ($FIELD == "CONFIRM_PASSWORD"): /* подтверждение пароля */ ?>
                        <input type="password" name="REGISTER[<?= $FIELD; ?>]" value="<?= $arResult["VALUES"][$FIELD]; ?>"
                               autocomplete="off" />
                    <?php elseif ($FIELD == "PERSONAL_GENDER"): /* пол: мужской, женский */ ?>
                        <select name="REGISTER[<?= $FIELD; ?>]">
                            <option value="">
                                <?= GetMessage('MAIN_REGISTER_USER_UNKNOWN'); ?>
                            </option>
                            <option value="M"<?= $arResult["VALUES"][$FIELD] == 'M' ? ' selected="selected"' : ''; ?>>
                                <?= GetMessage('MAIN_REGISTER_USER_MALE'); ?>
                            </option>
                            <option value="F"<?= $arResult["VALUES"][$FIELD] == 'F' ? ' selected="selected"' : ''; ?>>
                                <?= GetMessage('MAIN_REGISTER_USER_FEMALE'); ?>
                            </option>
                        </select>
                    <?php elseif (in_array($FIELD, array("PERSONAL_COUNTRY", "WORK_COUNTRY"))): /* страна проживания или работы */ ?>
                        <select name="REGISTER[<?= $FIELD; ?>]">
                        <?php foreach ($arResult["COUNTRIES"]["reference_id"] as $key => $value): ?>
                            <?php
                            $selected = ($value == $arResult["VALUES"][$FIELD]) ? ' selected="selected"' : '';
                            ?>
                            <option value="<?= $value; ?>"<?= $selected; ?>>
                                <?= $arResult["COUNTRIES"]["reference"][$key]; ?>
                            </option>
                        <?php endforeach; ?>
                        </select>
                    <?php elseif (in_array($FIELD, array("PERSONAL_PHOTO", "WORK_LOGO"))): /* личное фото */ ?>
                        <input type="file" name="REGISTER_FILES_<?= $FIELD; ?>" />
                    <?php elseif (in_array($FIELD, array("PERSONAL_NOTES", "WORK_NOTES"))): ?>
                        <textarea name="REGISTER[<?= $FIELD; ?>]">
                            <?= $arResult["VALUES"][$FIELD]; ?>
                        </textarea>
                    <?php elseif ($FIELD == "PERSONAL_BIRTHDAY"): /* дата рождения */ ?>
                        <small><?= $arResult["DATE_FORMAT"]; ?></small><br />
                        <input size="30" type="text" name="REGISTER[<?= $FIELD; ?>]"
                               value="<?= $arResult["VALUES"][$FIELD]; ?>" />
                        <?php
                        $APPLICATION->IncludeComponent(
                            'bitrix:main.calendar',
                            '',
                            array(
                                'SHOW_INPUT' => 'N',
                                'FORM_NAME' => 'regform',
                                'INPUT_NAME' => 'REGISTER[PERSONAL_BIRTHDAY]',
                                'SHOW_TIME' => 'N'
                            ),
                            null,
                            array("HIDE_ICONS"=>"Y")
                        );
                        ?>
                    <?php else: ?>
                        <input type="text" name="REGISTER[<?= $FIELD; ?>]"
                               value="<?= $arResult["VALUES"][$FIELD]; ?>" />
                    <?php endif; ?>
                </span>
            </div>
        <?php endforeach; ?>

        <?php /***** User properties *****/ ?>
        <?php if($arResult["USER_PROPERTIES"]["SHOW"] == "Y"): ?>
            <h3>
            <?=
            empty($arParams["USER_PROPERTY_NAME"]) ? GetMessage("USER_TYPE_EDIT_TAB") : $arParams["USER_PROPERTY_NAME"];
            ?>
            </h3>
            <?php foreach ($arResult["USER_PROPERTIES"]["DATA"] as $FIELD_NAME => $arUserField): ?>
                <div>
                    <span>
                        <?= $arUserField["EDIT_FORM_LABEL"]; ?>
                        <?php if ($arUserField["MANDATORY"]=="Y"): ?>
                            <i>*</i> <!-- поле обязательно для заполнения -->
                        <?php endif; ?>
                    </span>
                    <span>
                        <?php
                        $APPLICATION->IncludeComponent(
                            "bitrix:system.field.edit",
                            $arUserField["USER_TYPE"]["USER_TYPE_ID"],
                            array(
                                "bVarsFromForm" => $arResult["bVarsFromForm"],
                                "arUserField" => $arUserField,
                                "form_name" => "regform"
                                ),
                                null,
                                array("HIDE_ICONS"=>"Y")
                        );
                        ?>
                    </span>
                </div>
            <?php endforeach; ?>
        <?php endif; ?>
        <?php /***** User properties *****/ ?>

        <?php if ($arResult["USE_CAPTCHA"] == "Y"): /* использовать CAPTCHA? */ ?>
            <div class="captcha">
                <h3><?= GetMessage('MAIN_REGISTER_CAPTCHA_TITLE'); ?></h3>
                <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
                <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                         width="180" height="40" alt="CAPTCHA" />
                <span>
                    <?= GetMessage('MAIN_REGISTER_CAPTCHA_HELP'); ?>
                    <i>*</i>
                </span>
                <span>
                    <input type="text" name="captcha_word" maxlength="50" value="" />
                </span>
            </div>
        <?php endif; ?>

        <div class="submit">
            <input type="submit" name="register_submit_button"
                   value="<?= GetMessage('MAIN_REGISTER_FORM_SUBMIT'); /* кнопка отправки формы */ ?>" />
        </div>

    </form>

    <p>
        <?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* предупреждение о min длине пароля */?>
    </p>
    <p>
        <i>*</i> <?= GetMessage('MAIN_REGISTER_REQUIRED'); /* Эти поля обязательны для заполнения */ ?>
    </p>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/lang/ru/template.php
 */
$MESS['MAIN_REGISTER_FORM_TITLE']          = 'Регистрация';
$MESS['MAIN_REGISTER_REG_AUTH']            = 'Вы зарегистрированы и успешно авторизованы.';
$MESS['MAIN_REGISTER_EMAIL_HELP']          = 'На указанный в форме e-mail придет запрос на подтверждение регистрации.';

$MESS['MAIN_REGISTER_LOGIN']               = 'Логин';
$MESS['MAIN_REGISTER_EMAIL']               = 'E-mail';
$MESS['MAIN_REGISTER_PASSWORD']            = 'Пароль';
$MESS['MAIN_REGISTER_CONFIRM_PASSWORD']    = 'Подтверждение пароля';

$MESS['MAIN_REGISTER_NAME']                = 'Имя';
$MESS['MAIN_REGISTER_SECOND_NAME']         = 'Отчество';
$MESS['MAIN_REGISTER_LAST_NAME']           = 'Фамилия';

$MESS['MAIN_REGISTER_TITLE']               = 'Обращение';

$MESS['MAIN_REGISTER_USER_UNKNOWN']        = 'Нет данных';
$MESS['MAIN_REGISTER_USER_MALE']           = 'Мужской';
$MESS['MAIN_REGISTER_USER_FEMALE']         = 'Женский';

$MESS['MAIN_REGISTER_PERSONAL_PROFESSION'] = 'Профессия';
$MESS['MAIN_REGISTER_PERSONAL_WWW']        = 'WWW-страница';
$MESS['MAIN_REGISTER_PERSONAL_ICQ']        = 'ICQ';
$MESS['MAIN_REGISTER_PERSONAL_GENDER']     = 'Пол';
$MESS['MAIN_REGISTER_PERSONAL_BIRTHDAY']   = 'Дата рождения';
$MESS['MAIN_REGISTER_PERSONAL_PHOTO']      = 'Фотография';
$MESS['MAIN_REGISTER_PERSONAL_PHONE']      = 'Телефон';
$MESS['MAIN_REGISTER_PERSONAL_FAX']        = 'Факс';
$MESS['MAIN_REGISTER_PERSONAL_MOBILE']     = 'Мобильный';
$MESS['MAIN_REGISTER_PERSONAL_PAGER']      = 'Пейджер';
$MESS['MAIN_REGISTER_PERSONAL_STREET']     = 'Улица, дом';
$MESS['MAIN_REGISTER_PERSONAL_MAILBOX']    = 'Почтовый ящик';
$MESS['MAIN_REGISTER_PERSONAL_CITY']       = 'Город';
$MESS['MAIN_REGISTER_PERSONAL_STATE']      = 'Область / край';
$MESS['MAIN_REGISTER_PERSONAL_ZIP']        = 'Почтовый индекс';
$MESS['MAIN_REGISTER_PERSONAL_COUNTRY']    = 'Страна';
$MESS['MAIN_REGISTER_PERSONAL_NOTES']      = 'Дополнительные заметки';

$MESS['MAIN_REGISTER_WORK_COMPANY']        = 'Наименование компании';
$MESS['MAIN_REGISTER_WORK_DEPARTMENT']     = 'Департамент / Отдел';
$MESS['MAIN_REGISTER_WORK_POSITION']       = 'Должность';
$MESS['MAIN_REGISTER_WORK_WWW']            = 'WWW-страница (работа)';
$MESS['MAIN_REGISTER_WORK_PHONE']          = 'Телефон (работа)';
$MESS['MAIN_REGISTER_WORK_FAX']            = 'Факс (работа)';
$MESS['MAIN_REGISTER_WORK_PAGER']          = 'Пейджер (работа)';
$MESS['MAIN_REGISTER_WORK_STREET']         = 'Улица, дом (работа)';
$MESS['MAIN_REGISTER_WORK_MAILBOX']        = 'Почтовый ящик (работа)';
$MESS['MAIN_REGISTER_WORK_CITY']           = 'Город (работа)';
$MESS['MAIN_REGISTER_WORK_STATE']          = 'Область / край (работа)';
$MESS['MAIN_REGISTER_WORK_ZIP']            = 'Почтовый индекс (работа)';
$MESS['MAIN_REGISTER_WORK_COUNTRY']        = 'Страна (работа)';
$MESS['MAIN_REGISTER_WORK_PROFILE']        = 'Направления деятельности';
$MESS['MAIN_REGISTER_WORK_LOGO']           = 'Логотип компании';
$MESS['MAIN_REGISTER_WORK_NOTES']          = 'Дополнительные заметки (работа)';

$MESS['MAIN_REGISTER_FORM_SUBMIT']         = 'Зарегистрироваться';
$MESS['MAIN_REGISTER_CAPTCHA_TITLE']       = 'Защита от автоматической регистрации';
$MESS['MAIN_REGISTER_CAPTCHA_HELP']        = 'Введите символы с картинки';
$MESS['MAIN_REGISTER_REQUIRED']            = 'Эти поля обязательны для заполнения';
<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/lang/ru/component.php
 */
$MESS['REGISTER_WRONG_CAPTCHA']         = 'Неверно введено слово с картинки';
$MESS['REGISTER_FIELD_REQUIRED']        = 'Поле #FIELD_NAME# обязательно для заполнения';
$MESS['REGISTER_DEFAULT_TITLE']         = 'Регистрация нового пользователя';
$MESS['REGISTER_USER_WITH_EMAIL_EXIST'] = 'Пользователь с таким e-mail (#EMAIL#) уже существует';
$MESS['main_register_sess_expired']     = 'Ваша сессия истекла, повторите попытку регистрации';
$MESS['main_register_decode_err']       = 'Ошибка при дешифровании пароля (#ERRCODE#)';
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/style.css
 */
.bitrix-main-register {

}
    .bitrix-main-register > p {
        margin: 1em 0;
    }
        .bitrix-main-register > p > a {
            text-decoration: underline;
        }
    .bitrix-main-register > form {
        overflow: hidden;
    }
        .bitrix-main-register > form > div {
            width: 50%;
            margin-bottom: 15px;
            float: left;
            box-sizing: border-box;
        }
        .bitrix-main-register > form > div.captcha {
            border: 1px solid #ccc;
            padding: 20px 15px 15px 15px;
            position: relative;
            margin-top: 15px;
            width: 49%;
            clear: both;
        }
            .bitrix-main-register > form > div.captcha > h3 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .bitrix-main-register > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
        .bitrix-main-register > form > div:nth-of-type(even) {
            padding-left: 1%;
        }
        .bitrix-main-register > form > div:nth-of-type(odd) {
            padding-right: 1%;
        }
            .bitrix-main-register > form > div > span {
                display: block;
            }
            .bitrix-main-register > form > div > span:first-child {
                margin-bottom: 5px;
            }
                .bitrix-main-register > form > div > span > input[type="text"],
                .bitrix-main-register > form > div > span > input[type="password"],
                .bitrix-main-register > form > div > span > select,
                .bitrix-main-register > form > div > span > textarea {
                    width: 100%;
                    padding: 5px;
                    border:1px solid #ccc;
                }
            .bitrix-main-register > form > div.submit {
                float: none;
                padding-left: 0;
            }
            .bitrix-main-register > form > div.submit > input[type="submit"] {
                width: 30%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
                margin-top: 10px;
            }
    .bitrix-main-register i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

И вот что получилось в итоге:

Тут есть еще один важный момент. Что будет, если на эту страницу попадает авторизованный пользователь? Ему показывается малоинформативное сообщение, что он зарегистрирован и авторизован.

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован */ ?>
    <p><?= GetMessage('MAIN_REGISTER_REG_AUTH'); /* Вы зарегистрированы и авторизованы */ ?></p>
    <?php return ?>
<?php endif; ?>

Есть смысл перенаправить его на страницу личного кабинета или на страницу профиля:

<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован, ему здесь делать нечего */ ?>
    <?php LocalRedirect('/auth/profile.php'); ?>
<?php endif; ?>

Пользовательские поля

Хотя Битрикс предлагает большой набор предопределенных полей, их все-таки может не хватить. Тогда остается только создавать свои поля. Это можно сделать в панели управления: «Настройки • Настройки продукта • Пользовательские поля»:

Я добавил поле «Мое поле», тип «Строка», в настройках компонента указал, что это поле надо показывать:

Теперь форма регистрации имеет вид:

Порядок полей

Для настройки порядка следования полей в форме, создадим файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php:

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
// меняем порядок следования полей
$arResult['SHOW_FIELDS'] = array(
    'NAME',
    'LAST_NAME',
    'LOGIN',
    'EMAIL',
    'PASSWORD',
    'CONFIRM_PASSWORD',
    'WORK_COMPANY',
    'WORK_PHONE',
    'PERSONAL_PHONE',
);
?>

В результате чего форма примет вид:

Авторизация по E-mail

Давайте уберем поле LOGIN, как отживший свое пережиток прошлого. Без этого поля регистрацию пользователь не пройдет, поэтому будем создавать LOGIN из EMAIL. Добавляем в init.php следующий код:

AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields) {
    $arFields["LOGIN"] = $arFields["EMAIL"];
    return $arFields;
}

Чтобы форма регистрации не выдавала ошибок «Не заполнено обязательное поле логин», внесем изменение в шаблон компонента:

<?php if ($FIELD == 'LOGIN'): /* логин */ ?>
    <input type="text" name="REGISTER[<?= $FIELD; ?>]"
           value="<?= uniqid('user_'); ?>" />
<?php elseif ($FIELD == "PASSWORD"): /* пароль */ ?>
    <!-- код пропущен -->
<?php elseif ($FIELD == "CONFIRM_PASSWORD"): /* подтверждение пароля */ ?>
    <!-- код пропущен -->
<?php endif; ?>

Еще раз изменим порядок следования полей в форме и сделаем поле LOGIN первым, чтобы можно было его скрыть, обратившись с помощью :first-of-type:

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/result_modifier.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
// меняем порядок следования полей
$arResult['SHOW_FIELDS'] = array(
    'LOGIN',
    'NAME',
    'LAST_NAME',
    'EMAIL',
    'PERSONAL_PHONE',
    'PASSWORD',
    'CONFIRM_PASSWORD',
    'WORK_COMPANY',
    'WORK_PHONE',
);
?>

Теперь скроем поле LOGIN:

/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/style.css
 */
.bitrix-main-register {

}
/* код пропущен */
        .bitrix-main-register > form > div:first-of-type {
            display: none;
        }
/* код пропущен */
        .bitrix-main-register > form > div:nth-of-type(even) {
            padding-right: 1%;
        }
        .bitrix-main-register > form > div:nth-of-type(odd) {
            padding-left: 1%;
        }
/* код пропущен */

Но есть еще одна проблема — у нас теперь две формы регистрации с разным составом полей:

  • первая формируется системным компонентом system.auth.registration и доступна по адресу /auth/?register=yes
  • вторая формируется компонентом bitrix:main.register и доступна по адресу /auth/register.php

Давайте это исправим. Удалим весь код из шаблона компонента system.auth.registration, и поместим в него вызов компонента bitrix:main.register из файла /auth/register.php:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.registration/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$APPLICATION->IncludeComponent(
    "bitrix:main.register",
    ".default",
    array(
        "AUTH" => "N",
        "REQUIRED_FIELDS" => array(
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
            3 => "PERSONAL_PHONE",
        ),
        "SET_TITLE" => "Y",
        "SHOW_FIELDS" => array(
            0 => "EMAIL",
            1 => "NAME",
            2 => "LAST_NAME",
            3 => "PERSONAL_PHONE",
            4 => "WORK_COMPANY",
            5 => "WORK_PHONE",
        ),
        "SUCCESS_PAGE" => "/auth/",
        "USER_PROPERTY" => array(
        ),
        "USER_PROPERTY_NAME" => "",
        "USE_BACKURL" => "N",
        "COMPONENT_TEMPLATE" => ".default"
    ),
    false
);

А файл /auth/register.php просто удалим. Можно еще удалить лишний код из шаблона компонента bitrix:main.register, который никогда не будет выполнен. Системный компонент system.auth.registration вызывается где-то глубоко в недрах Битрикс только в том случае, если пользователь не авторизован. И еще одна проверка в шаблоне «Пользователь авторизован?» просто не нужна.

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.register/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
<!-- следующие три строчки можно удалить -->
<?php if ($USER->IsAuthorized()): /* если пользователь уже авторизован, ему здесь делать нечего */ ?>
    <?php LocalRedirect('/auth/profile.php'); ?>
<?php endif; ?>

Не забываем изменить другие системные компоненты:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.authorize/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_AUTHORIZE_TITLE']         = 'Авторизация';
// теперь e-mail используется как логин
$MESS['SYS_AUTH_AUTHORIZE_LOGIN']         = 'E-mail';
$MESS['SYS_AUTH_AUTHORIZE_PASSWORD']      = 'Пароль';
$MESS['SYS_AUTH_AUTHORIZE_REMEMBER']      = 'Запомнить меня';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_AUTHORIZE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_AUTHORIZE_SUBMIT']        = 'Войти';
$MESS['SYS_AUTH_AUTHORIZE_REG_USER']      = 'Зарегистрироваться';
$MESS['SYS_AUTH_AUTHORIZE_FORGOT']        = 'Забыли пароль?';
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_FORGOT_TITLE']        = 'Восстановление пароля';
// теперь восстановление пароля только по e-mail
$MESS['SYS_AUTH_FORGOT_HELP']         = 'Введите Ваш E-mail: инструкция по смене пароля будет отправлена на этот почтовый адрес.';
$MESS['SYS_AUTH_FORGOT_LOGIN']        = 'Логин';
$MESS['SYS_AUTH_FORGOT_EMAIL']        = 'E-mail';
$MESS['SYS_AUTH_FORGOT_CAPTHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_FORGOT_CAPTHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_FORGOT_SUBMIT']       = 'Отправить';
$MESS['SYS_AUTH_FORGOT_AUTH']         = 'Авторизация';
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
    <!-- логин больше не нужен, удаляем или комментируем код ниже -->
    <!--
    <div>
        <span>
            <?= GetMessage('SYS_AUTH_FORGOT_LOGIN'); /* логин пользователя */ ?>
        </span>
        <span>
            <input type="text" name="USER_LOGIN" maxlength="50" value="<?= $arResult["LAST_LOGIN"]; ?>" />
        </span>
    </div>
    -->
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_CHANGE_TITLE']         = 'Смена пароля';
// теперь e-mail используется как логин
$MESS['SYS_AUTH_CHANGE_LOGIN']         = 'E-mail';
$MESS['SYS_AUTH_CHANGE_CHECK']         = 'Контрольная строка';
$MESS['SYS_AUTH_CHANGE_PASSWORD']      = 'Новый пароль';
$MESS['SYS_AUTH_CHANGE_CONFIRM']       = 'Подтверждение пароля';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TITLE'] = 'Защита от автоматической регистрации';
$MESS['SYS_AUTH_CHANGE_CAPTCHA_TEXT']  = 'Введите символы с картинки';
$MESS['SYS_AUTH_CHANGE_SUBMIT']        = 'Изменить пароль';
$MESS['SYS_AUTH_CHANGE_AUTH']          = 'Авторизация';
$MESS['SYS_AUTH_CHANGE_REQUIRED']      = 'Эти поля обязательны для заполнения';

Есть еще один момент, о котором есть смысл упомянуть. Если при изменении пароля не заполнить поле «E-mail», появляется сообщение об ошибке «Логин должен быть не менее 3 символов». Где это изменить, я не нашел, видимо где-то в недрах ядра Битрикс. Поэтому небольшой хак:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.changepasswd/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>

<div class="system-auth-changepasswd">

<h2><?= GetMessage('SYS_AUTH_CHANGE_TITLE'); /* заголовок формы */ ?></h2>

<?php
// небольшй хак, который убирает сообщение о длине логина
if (isset($arParams['AUTH_RESULT']['TYPE'])
    && $arParams['AUTH_RESULT']['TYPE'] == 'ERROR'
    && false !== iconv_strpos($arParams['AUTH_RESULT']['MESSAGE'], 'Логин должен быть')) {
    $arParams['~AUTH_RESULT']['MESSAGE'] = 'Недопустимое значение поля «E-mail»';
}
?>

<p><?php ShowMessage($arParams["~AUTH_RESULT"]); /* сообщение о результате смены пароля */ ?></p>

Поиск:
CMS • Web-разработка • Авторизация • Битрикс • Компонент • Регистрация • Форма • Шаблон компонента

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

рецепты

Как быстро и без нервов начать работать в Битрикс24, если вдруг не получается войти

За последние три месяца среди наших клиентов было несколько случаев проблем с авторизацией пользователей в Битрикс24.

Некоторым сотрудникам компаний клиентов просто не удавалось зайти в порталы своих организаций, чтобы работать. Время идёт, зайти не получается, негатив к сервису растёт. Однако при разборе проблемы уже с нашей помощью оказалось, что причины были довольно просты, исправления занимают 5 минут и больше проблема не повторяется.

И хотя все типовые случаи, а также рекомендации по устранению проблем с авторизацией, уже опубликованы в поддержке Битрикс24, не все знают, где искать методы решения и что вообще делать.
Если у вас возникли похожие сложности, то сможете справиться с ними благодаря этой статье, либо обращайтесь, поможем.

Когда-то вам пришло приглашение в корпоративный портал Битрикс24, вы тогда перешли по ссылке и зарегистрировались, возможно даже походили по порталу, посмотрели, как там всё устроено, заполнили свои данные. Но сейчас не можете зайти в портал по своим логину и паролю.

Текст ошибки может быть такой:

Это означает, что у вас есть аккаунт в Битрикс24.Нетворк и вы авторизованы по нему, однако этот аккаунт не привязан к порталу, в который вы пытаетесь войти.

То есть, вы используете неверные данные для входа — это может быть либо другая почта, либо социальная сеть.

Администратор портала всегда может проверить логин на странице редактирования профиля в Битрикс24 и подсказать вам, по какому логину нужно заходить.

Однако может быть так, что ваш e-mail на портале и логин, по которому вы безуспешно пытаетесь войти, совпадают, но войти в портал не получается.
В этом случае почти наверняка при первом входе в Битрикс24 вы не довели до конца регистрацию и Битрикс24.Нетворк запомнил вас по какой-либо социальной сети.
Чтобы довести регистрацию до конца и в дальнейшем без лишних заморочек входить в свой Битрикс24 с любого устройства, вам нужно пройти следующие несколько этапов.

1. Определяем, по какой социальной сети Битрикс24.Нетворк нас запомнил.

Когда вы безуспешно пытаетесь войти в Битрикс24 вам выходит такое сообщение:

и, если вы в прошлый раз зарегистрировались через социальную сеть, то это сообщение будет дополнено надписью «Возможно вам стоит войти через…» и будет указана именно та сеть, которая привязалась к вашему аккаунту. Запомните её.

2. Переходим на сайт bitrix24.net в режиме «Инкогнито» *, входим в ту социальную сеть, в которой Битрикс24 запомнил нас и входим в свой аккаунт на Битрикс24.Нетворк с помощью той социальной сети, по которой Битрикс24.Нетворк нас запомнил.

* Как войти в режим «Инкогнито» в разных браузерах, читаем здесь.

Вход через социальную сеть

3. Затем нажмите на ссылку «Мой профиль». Вы увидите страницу с информацией о вашем профиле в Битрикс24.Нетворк.

Переход к настройкам профиля в Битрикс24.Нетворк

4. Перейдите к редактированию профиля

Переход к редактированию профиля в Битрикс24.Нетворк

5. Нажмите кнопку Задать e-mail и пароль и во всплывающем окне добавьте желаемые данные для входа

Привязка нужного e-mail и указание нового пароля

Если при попытке задать логин вы увидите ошибку «Пользователь с таким e-mail уже существует», то это значит что этот e-mail уже зарегистрирован в Нетворке. Решение только одно — зайти через желаемый e-mail и сменить его на другой. Это освободит логин, и вы сможете успешно задать его.

6. Привязка нужного email к аккаунту Битрикс24.Нетворк закончена, теперь вы можете войти в портал по логину и паролю.

Если проблему по данному рецепту решить не удалось и у вас какой-то особый случай, то смотрите рекомендации в этой подборке статей Битрикс24 по проблемам с авторизацией.
Либо обращайтесь к нам, поможем разобраться.

Антон Кочетов

Бизнес-консультант

  • #1

Не получается добавить пользователя в битрикс корпоративный портал. Появляется ошибка сохранения:

Ошибка сохранения
Длина поля «Помещение» должна быть не менее 1 символов.

Где найти это поле???o_O

  • #2

Попробуйте добавить через кнопку действий

1607081091813.png

  • #3

Так кстати в группу Администраторы тоже можно добавить в битрикс

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Битрикс ошибка при загрузке файла
  • Битрикс ошибка при добавлении цены неверная валюта