- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/saveorderaction.php
- Класс: BitrixSaleControllerActionEntitySaveOrderAction
- Вызов: SaveOrderAction::generateUserData
private function generateUserData(array $userProps = []): array
{
$userEmail = isset($userProps['EMAIL']) ? trim((string)$userProps['EMAIL']) : '';
$newLogin = $userEmail;
if (empty($userEmail))
{
$newEmail = false;
$normalizedPhone = NormalizePhone($userProps['PHONE']);
if (!empty($normalizedPhone))
{
$newLogin = $normalizedPhone;
}
}
else
{
$newEmail = $userEmail;
}
if (empty($newLogin))
{
$newLogin = MainSecurityRandom::getString(5).random_int(0, 99999);
}
$pos = mb_strpos($newLogin, '@');
if ($pos !== false)
{
$newLogin = mb_substr($newLogin, 0, $pos);
}
if (mb_strlen($newLogin) > 47)
{
$newLogin = mb_substr($newLogin, 0, 47);
}
$newLogin = str_pad($newLogin, 3, '_');
$dbUserLogin = CUser::GetByLogin($newLogin);
if ($userLoginResult = $dbUserLogin->Fetch())
{
do
{
$newLoginTmp = $newLogin.random_int(0, 99999);
$dbUserLogin = CUser::GetByLogin($newLoginTmp);
}
while ($userLoginResult = $dbUserLogin->Fetch());
$newLogin = $newLoginTmp;
}
$newName = '';
$newLastName = '';
$payerName = isset($userProps['PAYER']) ? trim((string)$userProps['PAYER']) : '';
if (!empty($payerName))
{
$payerName = preg_replace('/s{2,}/', ' ', $payerName);
$nameParts = explode(' ', $payerName);
if (isset($nameParts[1]))
{
$newName = $nameParts[1];
$newLastName = $nameParts[0];
}
else
{
$newName = $nameParts[0];
}
}
$groupIds = [];
$defaultGroups = MainConfigOption::get('main', 'new_user_registration_def_group', '');
if (!empty($defaultGroups))
{
$groupIds = explode(',', $defaultGroups);
}
$newPassword = CUser::GeneratePasswordByPolicy($groupIds);
return [
'NEW_EMAIL' => $newEmail,
'NEW_LOGIN' => $newLogin,
'NEW_NAME' => $newName,
'NEW_LAST_NAME' => $newLastName,
'NEW_PASSWORD' => $newPassword,
'NEW_PASSWORD_CONFIRM' => $newPassword,
'GROUP_ID' => $groupIds,
];
}