Skip to content

Commit b4af0b0

Browse files
committed
Use cds.context instead of ws.request to derive user and tenant
1 parent 8123dc1 commit b4af0b0

File tree

5 files changed

+49
-40
lines changed

5 files changed

+49
-40
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
77

8-
## Version 1.0.2 - 2024-07-xx
8+
## Version 1.0.2 - 2024-06-24
99

1010
### Fixed
1111

12+
- Use `cds.context` instead of `ws.request` to derive user and tenant
1213
- Add `cds.requires.kinds` for websockets and merge config
1314
- Pass all `cds.env.websocket` config to adapter and redis implementation
1415
- Streamline `cds.env` access in socket and redis implementation

package-lock.json

Lines changed: 32 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@eslint/js": "^9.5.0",
5555
"@sap/cds": "^7.9.2",
5656
"@sap/cds-dk": "^7.9.4",
57-
"@sap/xssec": "^4.1.1",
57+
"@sap/xssec": "^4.1.2",
5858
"@socket.io/redis-adapter": "^8.3.0",
5959
"@socket.io/redis-streams-adapter": "^0.2.2",
6060
"@types/express": "^4.17.21",

src/socket/socket.io.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ class SocketIOServer extends SocketServer {
3333
io.on("connection", async (socket) => {
3434
try {
3535
this.enforceAuth(socket);
36-
socket.tenant = socket.request.tenant;
37-
socket.user = socket.request.user?.id;
36+
socket.contextId = cds.context.id;
37+
socket.user = cds.context.user;
38+
socket.tenant = cds.context.tenant;
3839
socket.join(room({ tenant: socket.tenant }));
39-
socket.join(room({ tenant: socket.tenant, user: socket.user }));
40+
socket.join(room({ tenant: socket.tenant, user: socket.user?.id }));
4041
if (socket.request._query?.id) {
4142
socket.join(room({ tenant: socket.tenant, identifier: socket.request._query?.id }));
4243
}
@@ -49,9 +50,9 @@ class SocketIOServer extends SocketServer {
4950
socket,
5051
get context() {
5152
return {
52-
id: socket.request.correlationId,
53-
user: socket.request.user,
54-
tenant: socket.request.tenant,
53+
id: socket.contextId,
54+
user: socket.user,
55+
tenant: socket.tenant,
5556
http: { req: socket.request, res: socket.request.res },
5657
ws: { service: facade, socket, io },
5758
};

src/socket/ws.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,17 @@ class SocketWSServer extends SocketServer {
6565
this.applyMiddlewares(ws, async () => {
6666
try {
6767
this.enforceAuth(ws);
68-
ws.tenant = ws.request.tenant;
69-
ws.user = ws.request.user?.id;
68+
ws.contextId = cds.context.id;
69+
ws.user = cds.context.user;
70+
ws.tenant = cds.context.tenant;
7071
const facade = {
7172
service,
7273
socket: ws,
7374
get context() {
7475
return {
75-
id: ws.request.correlationId,
76-
user: ws.request.user,
77-
tenant: ws.request.tenant,
76+
id: ws.contextId,
77+
user: ws.user,
78+
tenant: ws.tenant,
7879
http: { req: ws.request, res: ws.request.res },
7980
ws: { service: facade, socket: ws },
8081
};
@@ -159,7 +160,7 @@ class SocketWSServer extends SocketServer {
159160
client.readyState === WebSocket.OPEN &&
160161
client.request?.url === servicePath &&
161162
client.tenant === tenant &&
162-
(!user || client.user !== user) &&
163+
(!user || client.user?.id !== user) &&
163164
(!contexts ||
164165
contexts.find((context) => {
165166
return !!client.contexts[context];

0 commit comments

Comments
 (0)