Битрикс 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 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *