dbeaver/pro#2116 send user deleted event for headless session (#2659)

Co-authored-by: Elizabeth <e1izabeth.k@outlook.com>
This commit is contained in:
Alexander Skoblikov
2024-06-13 16:50:37 +02:00
committed by GitHub
co-authored by Elizabeth
parent a84f822124
commit e7f6cbd2fc
2 changed files with 8 additions and 3 deletions
@@ -45,7 +45,7 @@ public class WSUserEventHandler<EVENT extends WSAbstractEvent> implements WSEven
break;
case USER_DELETED:
if (event instanceof WSUserDeletedEvent userDeletedEvent) {
sessionManager.closeUserSession(userDeletedEvent.getDeletedUserId());
sessionManager.closeUserSession(userDeletedEvent);
}
break;
default:
@@ -37,6 +37,7 @@ import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.auth.SMAuthInfo;
import org.jkiss.dbeaver.model.security.user.SMAuthPermissions;
import org.jkiss.dbeaver.model.websocket.WSConstants;
import org.jkiss.dbeaver.model.websocket.event.WSUserDeletedEvent;
import org.jkiss.dbeaver.model.websocket.event.session.WSSessionStateEvent;
import org.jkiss.utils.CommonUtils;
@@ -347,11 +348,15 @@ public class WebSessionManager {
}
}
public void closeUserSession(@NotNull String userId) {
public void closeUserSession(@NotNull WSUserDeletedEvent userDeletedEvent) {
synchronized (sessionMap) {
for (Iterator<BaseWebSession> iterator = sessionMap.values().iterator(); iterator.hasNext(); ) {
var session = iterator.next();
if (CommonUtils.equalObjects(session.getUserContext().getUserId(), userId)) {
if (CommonUtils.equalObjects(session.getUserContext().getUserId(),
userDeletedEvent.getDeletedUserId())) {
if (session instanceof WebHeadlessSession headlessSession) {
headlessSession.addSessionEvent(userDeletedEvent);
}
iterator.remove();
session.close();
}