Отправка событий всем пользователям

Здравствуйте, есть задача отправки события всем пользователям системы.
Использовал метод расписанный здесь, через GlobalUiEventPublisher - оповещение приходит во все экраны. Проблема в том, что если в EventListener попытаться получить информацию о пользователе, в частности currentUserSubstitution.authenticatedUser.username и currentUserSubstitution.substitutedUser?.username то они возвращают информацию того юзера, что событие отправил (то есть во всех экранах одно и то же значение). Не подскажите как это можно исправить?

Добрый день!

Можно не получать информацию о текущем пользователе внутри слушателя, а заранее сохранить текущего пользователя в каком-либо поле экрана, где у вас объявлен листенер. Внутри листенера уже обратиться к этому полю.

Да… спасибо. Но тогда есть еще связанная с этим проблема. Дело в том, что мы хотим сделать так, чтоб если для пользователя удаляли Замещение и данный пользователь в это время этим замещением пользуется, переключать пользователя на его настройки. То есть вызывать userSubstitutionManager.substituteUser(username) и на этом этапе как раз применяется сессия юзера что вызвал событие.

SystemAuthenticator позволяет проставить в SecurityContext нужного вам пользователя.

Таким образом currentUserSubstitution.substitutedUser возвращает null. Ибо authentication SystemAuthenticationToken

image

Тут уже вопрос как заранее сохранить substitutedUser

Попробую дополнить UserIndicatorImpl чтоб отправлять в ui событие схожее с UserSubstitutedEvent ибо оно отправляется не через UiEventPublisher. Вопрос как оно в таком случае приходит в UserChangedListener.