Операция деактивации пользователей (inactivateUsersJob)

Операция предназначена для блокировки неактивных в течение определенного времени пользователей.

Блокировка происходит посредством выставления в БД флагов active = false и blocked_by_system = true - в этом случае в карточке пользователя добавляется тег "Заблокирована системой".

Обратная активация возможна через интерфейс. При изменении признака активности у заблокированного пользователя автоматически снимается флаг blocked_by_system.

Внешние пользователи также могут быть заблокированы. При их входе в систему будет проверяться флаг active. При блокировке внешних пользователей сущности пользователей во внешней системе не затрагиваются, поэтому повторная синхронизация LDAP активирует заблокированных пользователей.

Параметры операции

  • Количество дней с последнего входа (поле ввода) - кол-во дней, которое вычитается из текущей даты для вычисления времени, после которого вход считается актуальным. Числовой параметр, принимает значения больше 0. Счет идет с точностью до миллисекунд, например, если текущая дата 2025-08-30 09:41:32, а значение параметра 10 дней, то пользователи, заходившие в систему до 2025-08-20 09:41:32, будут заблокированы.

  • Не блокировать суперпользователей (флаг) - отвечает за пропуск суперпользователей при блокировке.

  • Отправить отчет на email (флаг) - отвечает за отправку уведомлений с отчетом работы операции на email. Работает вместе с параметром "Email для получения отчета".

  • Email для получения отчета (поле ввода) - коллекция строк email-адресов для получения отчета. Можно указать несколько адресов для уведомлений. Сообщение отправлено не будет, если ни один не указан. Если параметр "Отправить отчет на email" выключен, то отправка не будет произведена. Отчет приходит во вложении к сообщению в формате .xlsx.

  • Генерировать отчет XLSX (флаг) - отвечает за генерацию отчета в формате xlsx для хранения в БД и скачивания из уведомлений. В отчете указывается логин заблокированного пользователя, его ФИО и дата последнего успешного входа в систему.

Примечания:

  • При отсутствии заблокированных пользователей - файл не будет отправлен/сгенерирован даже с включенными параметрами отправки или генерации отчета,

  • Для отправки сообщений на email необходимо корректно настроить параметры почтовых уведомлений (org.unidata.mdm.core.email).

  • В таблицу БД org_unidata_mdm_core.s_user для корректной работы операции были добавлены поля last_login с типом timestampz - время последнего успешного входа в систему и blocked_by_system с типом boolean - флаг блокировки пользователя системой.

    • Пользователи, не заходившие в систему после добавления поля last_login, имеют в поле значение null и подвержены блокировке этой операцией при любом параметре кол-ва дней.

  • Обновление последнего времени входа осуществляется в последнем шаге при логине в SecurityServiceImpl#login, т.е. после успешного прохождения аутентификации и получения токена.

  • Операция не затрагивает пользователей, созданных позднее скалькулированного значения времени последнего входа. Если у пользователя дата создания created_at > (сегодня - кол-во дней в параметре), но last_login = null, пользователь не будет заблокирован.

  • В случае блокировки всех администраторов (при отключенном параметре "Не блокировать суперпользователей") и пользователей с правами на администрирование подсистемы безопасности восстановление доступно через ручную замену флагов active и blocked_by_system в БД.

  • Неактивные пользователи (active = false), удовлетворяющие условию для блокировки операцией, также блокируются (для них дополнительно выставляется флаг blocked_by_system = true).