Событие - ограничение сеанса пользователей

Доброго дня. Ограничил сеансы для пользователей методом описанным тут Concurrent Session disable - Support - Jmix
Теперь стал вопрос, как вывести сообщение для пользователя, чей сеанс закрыт с помощью метода expireNow? Есть ли какой либо event на который можно подписаться в данной ситуации, чтобы оповестить пользователя, чью сессию закрыли?

Как я понимаю, вы хотите отправить оповещение в старый браузер.
Тогда скорее всего нужно будет создать GlobalUiEventPublisher как написано здесь и перед expireNow отправить event и в MainScreen подписаться на этот event чтоб отправить notify. Только в примере отправка идет во все экраны всех пользователей. Скорее всего в отправляемое событие нужно будет добавить нужную сессию в которую вы хотите отправить сообщение и перед sendEvent проверять что сессия та что нужна.

1 симпатия

Благодарю! Сработало! Прошу ответить на последний вопрос. Возможно ли программно создать в Dialogs DialogAction, который отработает аналогично всплывающему сообщению сверху
image
чтобы перенаправить пользователя с завершенной сессией на экран входа в систему?

Думаю в dialogs.withActions() можно добавить DialogAction с handler который бы открывал LoginScreen

String loginScreenId = uiProperties.getLoginScreenId();
Screen loginScreen = screens.create(loginScreenId, OpenMode.ROOT);
loginScreen.show();

Вопрос в том. Будет ли это работать т.к. сессию закончили.

Да, как раз проблема в том, что это не работает, т.к. сессия завершена, т.е. при нажатии на любую кнопку в Dialogs выходит сообщение сверху экрана. Может быть тогда есть способ создать новую сессию и перенаправить на экран авторизации? Если да, прошу подсказать как создать новую сессию.

Мб вам в принципе не заканчивать сессию?
Просто когда прилетает event разлогинивать юзера?
AppUI.getCurrent()?.app?.logout()