Авторизация по логину или E-mail в 1С-Битрикс
Задача: сделать авторизацию по логину и E-mail полям у пользователя («LOGIN», «EMAIL»):
Добавил в файл local/php_interface/init.php:
// ...
AddEventHandler('main', 'OnBeforeUserLogin', ['DwCustom', 'OnBeforeUserLogin']);
class DwCustom
{
function OnBeforeUserLogin(&$arFields)
{
if (preg_match("/^([0-9a-zA-Z]+([\-\.\_]{0,1}[0-9a-zA-Z]+)*[\-\.\_]{0,1}@[0-9a-zA-ZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]+([\-\.\_]{0,1}[0-9a-zA-Z]+)*[\.][a-zA-ZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]{2,9})$/", $arFields["LOGIN"])) {
$filter = [
'ACTIVE' => 'Y',
'=EMAIL' => $arFields['LOGIN']
];
$q = CUser::GetList(($by = 'ID'), ($order = 'asc'), $filter);
if ($r = $q->GetNext()) {
$arFields["LOGIN"] = $r['LOGIN'];
}
}
return true;
}
}
// ...
Для поиска: bitrix авторизация