+38(073) 413-59-71  info@binliz.org.ua

Bitrix авторизация по email

 13.02.2015
1C-Bitrix

Собствено битрикс авторизует глубоко в ядре, чтобы не было мучительно больно при авторизации воспользуемся событиями:

 

AddEventHandler("main", "OnBeforeUserLogin", array("CCustomHookEvent", "DoBeforeUserLoginHandler"));
class CCustomHookEvent {
		//	Проверяем пришел ли email или login и если email авторизуем по нему
		function DoBeforeUserLoginHandler( &$arFields )
		{
			$userLogin = $_POST["USER_LOGIN"];
			if (isset($userLogin))
			{
				$isEmail = strpos($userLogin,"@");
				if ($isEmail>0)
				{
					$arFilter = Array("EMAIL"=>$userLogin);
					$rsUsers = CUser::GetList(($by="id"), ($order="desc"), $arFilter);
					if($res = $rsUsers->Fetch())
					{
						if($res["EMAIL"]==$arFields["LOGIN"])
							$arFields["LOGIN"] = $res["LOGIN"];
					}
				}
			}
		}
		// End 
}