Skip to content

Commit 7e7d663

Browse files
dbeaver/pro#7157 save origin in web session (#3976)
* dbeaver/pro#7157 save origin in web session * dbeaver/pro#7157 rename origin and add event object --------- Co-authored-by: Evgenia <[email protected]>
1 parent c125619 commit 7e7d663

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ public class WebSession extends BaseWebSession
8585
private static final AtomicInteger TASK_ID = new AtomicInteger();
8686

8787
public static String RUNTIME_PARAM_AUTH_INFOS = "auth-infos";
88+
public static String RUNTIME_PARAM_CLIENT_ORIGIN = "client-origin";
8889
private final AtomicInteger taskCount = new AtomicInteger();
8990

9091
private final String lastRemoteAddr;
9192
private String lastRemoteUserAgent;
9293

9394
private String locale;
9495
private boolean cacheExpired;
96+
private String clientOrigin;
9597

9698
protected WebSessionGlobalProjectImpl globalProject;
9799
private final List<WebServerMessage> sessionMessages = new ArrayList<>();
@@ -278,6 +280,10 @@ public DBPEventListener getDataSourceConnectListener() {
278280
return connectListener;
279281
}
280282

283+
public void updateClientOrigin(@NotNull String originFromRequest) {
284+
this.clientOrigin = originFromRequest;
285+
}
286+
281287
private void initNavigatorModel() {
282288

283289
// Cleanup current data
@@ -845,6 +851,7 @@ public boolean provideAuthParameters(
845851
contextCredentialsProvider.provideAuthParameters(monitor, dataSourceContainer, configuration);
846852
}
847853
configuration.setRuntimeAttribute(RUNTIME_PARAM_AUTH_INFOS, getAllAuthInfo());
854+
configuration.setRuntimeAttribute(RUNTIME_PARAM_CLIENT_ORIGIN, this.clientOrigin);
848855

849856
WebSessionProjectImpl project = getProjectById(dataSourceContainer.getProject().getId());
850857
if (project != null) {

server/bundles/io.cloudbeaver.server.ce/src/io/cloudbeaver/service/session/CBSessionManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.cloudbeaver.server.WebAppSessionManager;
2727
import io.cloudbeaver.server.events.WSWebUtils;
2828
import io.cloudbeaver.service.DBWSessionHandler;
29+
import io.cloudbeaver.utils.ServletAppUtils;
2930
import jakarta.servlet.http.HttpServletRequest;
3031
import jakarta.servlet.http.HttpServletResponse;
3132
import jakarta.servlet.http.HttpSession;
@@ -165,6 +166,8 @@ public WebSession getWebSession(
165166

166167
validateSessionIp(request, webSession);
167168

169+
webSession.updateClientOrigin(ServletAppUtils.getOriginFromRequest(request));
170+
168171
return webSession;
169172
}
170173

server/bundles/io.cloudbeaver.server/schema/service.events.graphqls

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ enum CBServerEventId {
7474
cb_session_task_confirmation_request @since(version: "25.2.2")
7575
cb_session_task_query_confirmation_request @since(version: "25.2.2")
7676
cb_session_task_query_params_confirmation_request @since(version: "25.2.5")
77+
78+
"Open URL request in client"
79+
cb_open_url @since(version: "25.3.1")
7780
}
7881

7982
"Events sent by client"
@@ -108,6 +111,7 @@ enum CBEventTopic {
108111
cb_workspace_configuration @since(version: "25.1.1")
109112
cb_ai @since(version: "25.1.1")
110113
cb_notification @since(version: "25.2.1")
114+
cb_session_action @since(version: "25.3.1")
111115
}
112116

113117
"Base server event interface"
@@ -301,6 +305,13 @@ type WSServerNotificationEvent implements CBServerEvent @since(version: "25.2.1"
301305
notificationType: WSServerNotificationEventType!
302306
}
303307

308+
"Event for opening URL in client application"
309+
type WSOpenUrlEvent implements CBServerEvent @since(version: "25.3.1") {
310+
id: CBServerEventId!
311+
topicId: CBEventTopic!
312+
url: String!
313+
}
314+
304315
type WSSessionTaskConfirmationRequestEvent implements CBServerEvent @since(version: "25.2.2") {
305316
id: CBServerEventId!
306317
topicId: CBEventTopic!

0 commit comments

Comments
 (0)