Задача: При авторизации сделать проверку наличия действующих сессий с данным логином, и при наличии сбросить их, что бы в один момент времени был авторизован только 1 клиент.
Решение:
1. В файл /bitrix/php_interface/init.php дописываем:
| Код |
|---|
AddEventHandler("main", "OnAfterUserLogin", "MyOnAfterUserLogin");
AddEventHandler("main", "OnBeforeProlog", "MyOnBeforeProlog");
function MyOnAfterUserLogin($arFields)
{
global $USER;
$USER->Update($USER->GetID(),array("UF_USERSESS"=>session_id()));
}
function MyOnBeforeProlog($arFields)
{
global $USER;
$arUser = $USER->GetByID($USER->GetID())->Fetch();
if (session_id() != $arUser[UF_USERSESS])
$USER->Logout();
}
|
2. В Настройки -> Настройки продукта -> Пользовательские поля
создаем новый элемент следующего вида:
Тип данных: Строка
Объект: USER
Код поля: UF_USERSESS
Не показывать в списке: Y
Размер поля ввода для отображения: 32