Рамиль Абдуллин, как один из возможных вариантов:
[CODE]AddEventHandler("main", "OnBeforeUserLogin", "CheckUserIsAlreadyOnline");
function CheckUserIsAlreadyOnline(&$arFields)
{
if(isset($arFields['LOGIN']) && strlen($arFields['LOGIN']) > 0)
{
$targetGroupsId = array(5); // Массив Id групп пользователей, для которых запретить одновременные "онлайны".
$user = CUser::GetByLogin($arFields['LOGIN'])->Fetch();
if(!$user) return;
$userGroups = CUser::GetUserGroup($user['ID']);
if(array_intersect($targetGroupsId, $userGroups) && !in_array(1, $userGroups)
&& CUser::IsOnline($user['ID']))
{
global $APPLICATION;
$APPLICATION->throwException("Пользователь с данным логином уже авторизован.");
return false;
}
}
}
[/CODE]Из очевидных минусов - после "разлогина" пару минут никто не сможет авторизоваться под данным логином.