Как записать в "журнал событий" данные из массива получаемого в событии OnAfterUserAuthorize (1c Bitrix)

При авторизации в файле init.php вызываю событие OnAfterUserAuthorize и записываю данные в логи. Событие отрабатывает корректно, данные в массиве есть но в логи данные из массива не записываются.

AddEventHandler("main", "OnAfterUserAuthorize", function(&$fields) {
    $id = $fields['ID'];
        CEventLog::Add(array(
            "DESCRIPTION" => "Пользователь с ID " . $id . " и именем " . $fields['NAME'] . " успешно авторизовался." . $fields['ID'], // получение ID и имени из $fields
        ));
});

Соответственно вывод такой - "Пользователь с ID и именем успешно авторизовался." Подскажите пожалуйста, что не так?


Ответы (1 шт):

Автор решения: Виктор Карев

Судя по коду функции CUser::Authorize, в параметры обработчика события OnAfterUserAuthorize передаётся массив

            $arParams = array(
                "user_fields" => $arUser,
                "save" => $bSave,
                "update" => $bUpdate,
                "applicationId" => $applicationId,
            );

Соответственно, ваш обработчик должен иметь вид

AddEventHandler("main", "OnAfterUserAuthorize", function(&$fields) {
    $userFields = $fields['user_fields'];
    $id = $userFields ['ID'];
        CEventLog::Add(array(
            "DESCRIPTION" => "Пользователь с ID " . $id . " и именем " . $userFields ['NAME'] . " успешно авторизовался.",
        ));
});
→ Ссылка