Битрикс API – добавляем нового пользователя, авторизуем его и обновляем поля

Основные функции по добавлению пользователя, о которых вы могли не знать.

Как создать нового пользователя в Битрикс при помощи API

Для этого будем использовать $user->Add:

// Добавляем нового пользователя
$str = 'new_'.randString(8);
$user = new CUser;
$arFields = Array(
	"EMAIL"             => $str."@site.ru",
	"LOGIN"             => $str."@site.ru",
	"ACTIVE"            => "Y",
	"GROUP_ID"          => array(6,10),
	"PASSWORD"          => $str,
	"CONFIRM_PASSWORD"  => $str,
);

$ID = $user->Add($arFields);
if (intval($ID) > 0) {
	$USER->Authorize($ID);
	LocalRedirect("/personal/");
} else {
	echo 'ОШИБКА: '.$user->LAST_ERROR;
}

Теперь давайте разбираться:
randString – создаст уникальную строку, которую мы будем использовать для формирования логина, емейла, а также пароля.
$arFields – набор полей
array(6,10) – группы пользователей, в которые входит новый user
$USER->Authorize($ID); – вызываем для мгновенной авторизации нового пользователя
LocalRedirect(“/personal/”); – делаем редирект сразу в личный раздел

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

Здесь тоже всё очень похоже. Для начала вылавливаем ID пользователя:

function OrderMySave($orderID, $fields, $orderFields){
	if ($orderFields['ORDER_PROP'][2]) {
		$valText = $orderFields['ORDER_PROP'][2];
	}

	if ($valText != false && CUser::GetEmail() != $valText) {
		$userID = $fields['USER_ID'];
		$user = new CUser;
		$fields = Array(
			"EMAIL" => $valText,
			"LOGIN" => $valText,
		);
		$user->Update($userID, $fields);
	}
}

$orderFields[‘ORDER_PROP’][2] – тут лежит информация про емейл пользователя
$fields[‘USER_ID’] – тут его id
CUser::GetEmail() – получаем емейл текущего пользователя, и в случае неравенства перезаписываем

Бонус, для тех кто в теме (и для себя на будущее):
“sale”, “OnOrderSave”, “OrderMySave” – но это не самое идеальное событие для таких целей..

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *