Блог разработчика 1С-Битрикс

Возможно ли изменение даты последней авторизации пользователя в 1С-Битрикс через API?

Вопрос: В "Битрикс: Управление сайтом" (БУС) нет прямого API для изменения даты последней авторизации пользователя. Это так или есть возможность изменить дату без использования SQL запроса?

Изменение даты последней авторизации в Битрикс

Кратко: в стандартном API «Битрикс: Управление сайтом» действительно нет документированного метода, который бы позволял в явном виде поменять дату последней авторизации пользователя на произвольную. Обычно это поле (LAST_LOGIN) обновляется системой автоматически в момент входа пользователя.

Можно ли «исхитриться» и передать LAST_LOGIN через CUser::Update?

  • В большинстве случаев это поле защищено от явного изменения, и система либо игнорирует его, либо перезаписывает актуальной датой авторизации при реальном логине.
  • Документация Битрикс не описывает вариант принудительного изменения даты последней авторизации с помощью CUser::Update(). Формально, вы можете попробовать передать в Update() массив с ключом LAST_LOGIN, но нередко это либо не сработает, либо может привести к непредвиденным результатам в будущем (например, сбои в отчетности или статистике).

Что остаётся?

  1. Прямое обновление таблицы b_user через SQL-запрос. Это надёжный, но «грубый» путь — вы напрямую меняете значение поля LAST_LOGIN в базе данных. Нужно понимать, что:
    • Любые прямые манипуляции с таблицами Битрикс не рекомендуются без крайних причин.
    • При следующих реальных авторизациях система снова будет проставлять свою дату.
  2. Симуляция «псевдо-логина» (самописный скрипт, который авторизует пользователя с нужной датой через имитацию логина). Однако:
    • Дату «из прошлого» таким способом задать не выйдет, так как она проставляется текущим временем.
    • Можно лишь сохранить реальное текущее время, если система по каким-то причинам его не проставила.
  3. Собственный обработчик (хук) на события авторизации — но, повторюсь, это не даёт возможности прописать «прошедшую» дату. Событие вызывается в момент входа и подставляет реальную текущую метку времени.

Итог

  • Официального (документированного) API для установки произвольной даты последней авторизации в БУС нет.
  • Единственный гарантированный способ — это прямое обновление в базе (поле LAST_LOGIN в таблице b_user). Будьте осторожны, так как это может повлиять на отчёты, модули статистики и прочие внутренние механизмы, использующие поле последней авторизации.

Пример подобного SQL запроса


        UPDATE b_user
        SET LAST_LOGIN = '2023-10-01 12:00:00'
        WHERE ID = USER_ID;
    
Теги:  управление сайтом, API, дата последней авторизации, LAST_LOGIN, CUser::Update, SQL-запрос


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Участие в проекте

привлечение в проект на part-time основе

от 20 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.