# Настройка блокировки пользователей

Инструмент используется для временного ограничения доступа пользователей к приложениям.

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

Блокировку можно запустить немедленно или запланировать на определенную дату и время. При необходимости система может закрыть активные сессии пользователей и заранее показать им информационное оповещение о предстоящей блокировке.

Путь: `Настройки системы > Настройки и сервисы > Настройка блокировки пользователей`.

**Общая схема работы**

1. Создайте объект настройки.
2. Заполните поля **Код**, **Наименование**.
3. Заполните основные параметры блокировки:
   - **Текст блокировки**;
   - **Дата начала**;
   - **Дата окончания**;
   - **Текст оповещения**, если нужно заранее уведомить пользователей о предстоящей блокировке.
4. Определите область действия настройки:
   - включите параметры **Для всех пользователей** и **Для всех приложений**;
   - или заполните вкладки **Список пользователей**, **Список ролей**, **Список профилей** и **Список приложений**.
5. Запустите настройку действием **Выполнить**.

## Как работает блокировка

Блокировка запрещает вход в приложения, указанные в настройке.

- Если блокировка действует, пользователь не может войти в приложение.
- Текст блокировки отображается при попытке входа.
- Блокировка действует до **Даты окончания** или до ручного отключения настройки.

### Работа пользователя при блокировке

Поведение пользователя зависит от того, включен ли параметр **Закрыть сессию**.

Если параметр **Закрыть сессию** включен:

1. Пользователь получает информационное оповещение в момент, определенный настройкой, если для блокировки настроено предварительное уведомление.
2. В момент начала блокировки система получает список активных рабочих сессий на узлах кластера.
3. Система фильтрует найденные сессии по пользователям и приложениям из настройки.

   При фильтрации учитываются:
   - пользователь сессии;
   - приложение, в котором открыта сессия;
   - параметр **Для всех приложений**;
   - список приложений, указанный на вкладке **Список приложений**.

4. Найденные сессии принудительно закрываются через `Btk_WorkSessionPkg().killSession`.
5. Текст блокировки в момент закрытия сессии не отображается.
6. Увидеть текст блокировки пользователь сможет только при следующей попытке входа, если блокировка еще действует.

Если параметр **Закрыть сессию** выключен:

1. Пользователь получает информационное оповещение в момент, определенный настройкой, если для блокировки настроено предварительное уведомление.
2. После наступления времени блокировки текущая сессия продолжает работать.
3. В рамках текущей сессии текст блокировки не отображается.
4. Пользователь может продолжать работу в текущей сессии, пока сам не выйдет из системы.
5. После завершения текущей сессии повторный вход в приложение будет заблокирован, пока блокировка действует.
6. Увидеть текст блокировки пользователь сможет только при следующей попытке входа, если блокировка еще действует.

## Информационное оповещение при блокировке

При блокировке можно дополнительно настроить информационное оповещение для пользователей. Для этого включите параметр **Показать уведомление** и заполните поля **Текст оповещения** и **Кол-во минут до старта, когда нужно прислать уведомление**.

Информационное оповещение используется для предварительного предупреждения пользователей о предстоящей блокировке. При запуске по **Дате начала** уведомление отправляется до начала блокировки. При немедленном запуске поведение зависит от параметра **Закрыть сессию**: если сессии не закрываются, уведомление отправляется сразу; если сессии закрываются, уведомление не отправляется.

## Основные параметры настройки

В карточке объекта задаются основные параметры блокировки. Также доступны вкладки для выбора пользователей, ролей, профилей и приложений.

В шапке карточки отображаются общие поля объекта:

- **Код** — уникальный код настройки.
- **Наименование** — название настройки.
- **Тип объекта** — тип настройки. 
- **Состояние** — поле, которое показывает текущий этап обработки настройки. Поле заполняется системой автоматически и не редактируется вручную.

![alt text](/service/img_serv/block2.png)

### Параметры карточки

- **Для всех пользователей** — при включении настройка применяется ко всем пользователям системы.  
  При выключении настройка действует только для пользователей, ролей и профилей, указанных на вкладках **Список пользователей**, **Список ролей** и **Список профилей**.
- **Для всех приложений** — при включении настройка действует для всех приложений.  
  При выключении настройка действует только для приложений, указанных на вкладке **Список приложений**.
- **Немедленно** — при включении блокировка активируется сразу после запуска настройки.
- **Дата начала** — дата и время начала действия блокировки.
- **Дата окончания** — дата и время, после которых блокировка автоматически перестает действовать.
- **Текст блокировки** — текст, который пользователь увидит при попытке входа в заблокированное приложение.
- **Закрыть сессию** — закрывает активные сессии пользователей в момент начала действия блокировки.
- **Показать уведомление** — включает предварительное информационное оповещение пользователей о предстоящей блокировке.
- **Текст оповещения** — текст уведомления, которое будет показано пользователю перед началом блокировки.
- **Кол-во минут до старта, когда нужно прислать уведомление** — определяет, за сколько минут до начала блокировки отправляется уведомление.

### Списки пользователей, ролей и профилей

На вкладках **Список пользователей**, **Список ролей** и **Список профилей** указываются целевые пользователи, роли и профили.

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

### Список приложений

На вкладке **Список приложений** указываются приложения, для которых действует настройка.

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

## Применение настройки

Для запуска настройки нажмите **Выполнить**.

После запуска поведение настройки зависит от параметра **Немедленно** и заполненных дат:

- если параметр **Немедленно** включен, блокировка активируется сразу после выполнения операции;
- если параметр **Немедленно** выключен, блокировка будет активирована в дату и время, указанные в поле **Дата начала**;
- после наступления **Даты окончания** блокировка автоматически перестает действовать.

Если блокировка запускается по **Дате начала** и включен параметр **Показать уведомление**, система дополнительно создает фоновую задачу для отправки уведомления до начала блокировки. Уведомление отправляется за количество минут, указанное в параметре **Кол-во минут до старта, когда нужно прислать уведомление**.

```{note}
Если блокировка запускается немедленно и параметр **Закрыть сессию** выключен, информационное оповещение будет отправлено пользователю сразу после запуска настройки.

Если блокировка запускается немедленно и параметр **Закрыть сессию** включен, информационное оповещение не отправляется, так как пользователь не успеет его увидеть. Поэтому параметры **Немедленно**, **Показать уведомление** и **Закрыть сессию** нельзя включить одновременно.
```

## Отключение настройки

По умолчанию блокировка отключается автоматически после наступления **Даты окончания**.

- Для отключения настройки вручную в карточке нажмите **Отключить настройку**.  
  Настройка перейдет в состояние **Отменено**.
- Чтобы вернуть настройку в исходное состояние, нажмите **Откатить настройку в начальное состояние**.  
  Настройка перейдет в состояние **Формируется** и будет доступна для повторного запуска.