Автоматически определяем тип введенных данных (телефон/email/логин) и выполняем корректную авторизацию через стандартную систему Битрикс.
| Код |
|---|
AddEventHandler('main', 'OnBeforeUserLogin', function(&$params) {
$input = $params['LOGIN'];
if (preg_match('/^[\d\+\-\(\)\s]+$/', $input)) {
$user = CUser::GetList('id', 'asc', ['PERSONAL_PHONE' => NormalizePhone($input)])->Fetch();
if ($user) $params['LOGIN'] = $user['LOGIN'];
}
elseif (filter_var($input, FILTER_VALIDATE_EMAIL)) {
$user = CUser::GetList('id', 'asc', ['EMAIL' => $input])->Fetch();
if ($user) $params['LOGIN'] = $user['LOGIN'];
}
});
function NormalizePhone($phone) {
return preg_replace('/[^\d]/', '', $phone);
} |