Регистрация нового пользователя bitrix из PHP скрипта с одновременным присвоением его новым группам пользователей или удалением из них.

Разберём задачу: требуется зарегистрировать нового пользователя в bitrix с одновременным добавлением его в определённые группы или удалением из этих групп. Ниже в многострочном поле ввода конечный программный код скрипта, а ниже его комментарии что и как работает.

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

Комментарии по коду скрипта добавления нового пользователя bitrix и присвоения его группам или удаления из них.

require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';
//Подключаем Bitrix-пролог, чтобы начать использовать фреймворк Bitrix.

global $USER;
// Объявляем глобальную переменную $USER которая является объектом Bitrix, в котором содержится метод Register необходимый далее для регистрации нового пользователя.

var_dump($USER);
Выводим информацию о содержании массива $USER - это тестовая информация, удалите эту строку в рабочем скрипте - она нужна только для предварительного тестирования работы php-скрипта.

echo "- - -\n";
//Эта строчка нужна для визуального отделения одной тестовой информации от другой. Далее по коду аналогичная строчка встречается несколько раз и выполняет аналогичную функцию, повторно комментироваться она не будет. В рабочем скрипте эти строчки не нужны - удалите их.

$arResult = $USER->Register("test123" . mt_rand(1,999999), "", "", "123456", "123456", "autoreg-user-sitecomponentname1-1@domen.ru");
// Регистрируем нового пользователя с логином начинающимся "test123" и заканчивающимся случайным числом от 1 до 999999(Вы можете использовать свой алгоритм), паролем 123456 и e-mail адресом autoreg-user-sitecomponentname1-1@domen.ru полученное в результате работы метода значение присваиваем переменной $arResult. В случаи если работа метода добавления нового пользователя завершилось успешно массив $arResult будет содержать элемент с ключом ["ID"], если же результат работы метода - ошибка: ключа ["ID"] в массиве не будет, зато будет присутствовать информация о ошибке. В дальнейшем для того чтобы понять, успешно ли добавлен новый пользователь в вышеприведённый скрипт опирается только на наличие или отсутствие элемента массива с ключом ["ID"].

var_dump($arResult);
//Выводим информацию о содержании массива $arResult, можно будет увидеть присутствие или отсутствие элемента с ключом ["ID"] о котором шла речь в предыдущем абзаце. Эта строчка в скрипте необходима исключительно для теста и отладки работы, поэтому удалите её в рабочей версии скрипта.

if (isset($arResult["ID"])) {
$arGroups = CUser::GetUserGroup($arResult["ID"]);
//В первой строке условие о котором шла речь в двух абзацах выше. PHP функция isset возвращает истину(true) в случаи если элемент с ключом ["ID"] присутствует в массиве $arResult. Если условие истинно, выполняется вторая строчка в которой статический метод GetUserGroup класса CUser возвращаем массив с идентификаторами групп пользователей сайта на Bitrix, которым принадлежит пользователь Bitrix с ID содержащимся в $arResult["ID"]. Полученное значение - массив идентификаторов групп пользователей присваивается $arGroups.

var_dump($arGroups);
//Тестовая строчка, для того чтобы наглядно можно было оценить работу скрипта. Выводит содержание массива, содержащий идентификаторы групп пользователей сайта Bitrix для пользователя Id которого находится в $arResult["ID"]. Удалите эту строчка уз рабочего скрипта, после проверки работы.

Код скрипта с вычищенной тестовой информацией.

Регистрация нового пользователя Bitrix и добавление в пользовательскую группу методом CUser:Add

Получаем поля пользователя битрикс по ID вместе с относящимися пользовательскими полями к данному пользователю

В примере ниже в массив под ключом SELECT передаём массив необходимых для выборки пользовательских полей, например UF_CODE_LKA. Если требуется выбрать все поля, то передаём массив array("UF_*")

Получаем пользовательское поле текущего пользователя

Добавление пользователя битриск сразу генерацией случайного логина, пароля и e-mail, активация пользователя и сразу с добавлением информации в пользовательское поле.

Следующий скрипт проверяет для неавторизированного пользователя bitrix существует ли пользователь с указанным email в системе и получает его ID, а если не существует регистрирует нового пользователя.

Логика работы скрипта следующая: сначала проверяется авторизован ли пользователь в битрикс. Если авторизован то ничего не делаем. Если не авторизован то по указанному e-mail проверяем существует ли в системе пользователь с таким e-mail в поле EMAIL, если нет то по e-mail ищем пользователя по полю LOGIN, если и такого пользователя нет регистрируем пользователя с указанным e-mail и получаем его Id.

В случаи если необходимо выполнить авторизацию это можно сделать строчкой $USER->Authorize($userId);

Комментарии

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

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: