@privateaim/server-realtime-kit 0.8.28 → 0.8.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.29](https://github.com/PrivateAIM/hub/compare/v0.8.28...v0.8.29) (2026-03-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * replace robot- with client-authentication/authorization ([#1445](https://github.com/PrivateAIM/hub/issues/1445)) ([f55dc66](https://github.com/PrivateAIM/hub/commit/f55dc668df66f6efa7a0bb2285c91b1d5f2ae9ef))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @privateaim/kit bumped from ^0.8.28 to ^0.8.29
16
+ * @privateaim/telemetry-kit bumped from ^0.8.28 to ^0.8.29
17
+ * @privateaim/server-kit bumped from ^0.8.28 to ^0.8.29
18
+
3
19
  ## [0.8.28](https://github.com/PrivateAIM/hub/compare/v0.8.27...v0.8.28) (2026-02-26)
4
20
 
5
21
 
package/dist/index.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import { UnauthorizedError } from '@ebec/http';
2
- import { isRedisClientUsable, useRedisClient, isVaultClientUsable, useVaultClient, useLogger, useRedisPublishClient, useRedisSubscribeClient } from '@privateaim/server-kit';
2
+ import { useLogger, isRedisClientUsable, useRedisPublishClient, useRedisSubscribeClient } from '@privateaim/server-kit';
3
3
  import { LogChannel, LogFlag } from '@privateaim/telemetry-kit';
4
- import { RedisTokenVerifierCache, MemoryTokenVerifierCache, TokenVerifier } from '@authup/server-adapter-kit';
5
4
  import { createMiddleware } from '@authup/server-adapter-socket-io';
6
5
  import { REALM_MASTER_NAME, PermissionName } from '@authup/core-kit';
7
6
  import { PermissionChecker, PermissionMemoryRepository } from '@authup/access';
@@ -64,7 +63,7 @@ function createFakeTokenVerificationData() {
64
63
  realm_name: REALM_MASTER_NAME,
65
64
  sub_kind: 'user',
66
65
  sub: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',
67
- sub_name: 'admin',
66
+ sub_name: 'system',
68
67
  permissions: generateAbilities()
69
68
  };
70
69
  }
@@ -102,59 +101,21 @@ function applyTokenVerificationData(socket, data, fakeAbilities) {
102
101
  }
103
102
  }
104
103
 
105
- function createAuthupMiddleware(options) {
106
- let baseURL;
107
- if (options.baseURL) {
108
- baseURL = options.baseURL;
109
- }
110
- let redis;
111
- if (isRedisClientUsable()) {
112
- redis = useRedisClient();
113
- }
114
- let vault;
115
- if (isVaultClientUsable()) {
116
- vault = useVaultClient();
117
- }
118
- if (!baseURL) {
104
+ function createAuthorizationMiddleware(options) {
105
+ if (!options.baseURL) {
119
106
  const data = createFakeTokenVerificationData();
120
107
  return (socket, next)=>{
121
108
  applyTokenVerificationData(socket, data, options.fakeAbilities);
122
109
  next();
123
110
  };
124
111
  }
125
- let tokenCreator;
126
- if (vault) {
127
- tokenCreator = {
128
- type: 'robotInVault',
129
- name: 'system',
130
- vault,
131
- baseURL
132
- };
133
- } else {
134
- tokenCreator = {
135
- type: 'user',
136
- name: 'admin',
137
- password: 'start123',
138
- baseURL
139
- };
140
- }
141
- let cache;
142
- if (redis) {
143
- cache = new RedisTokenVerifierCache(redis);
144
- } else {
145
- cache = new MemoryTokenVerifierCache();
146
- }
147
112
  return createMiddleware({
148
- tokenVerifier: new TokenVerifier({
149
- baseURL,
150
- creator: tokenCreator,
151
- cache
152
- }),
113
+ tokenVerifier: options.tokenVerifier,
153
114
  tokenVerifierHandler: (socket, data)=>applyTokenVerificationData(socket, data, options.fakeAbilities)
154
115
  });
155
116
  }
156
- function mountAuthupMiddleware(nsp, options) {
157
- const middleware = createAuthupMiddleware(options);
117
+ function mountAuthorizationMiddleware(nsp, options) {
118
+ const middleware = createAuthorizationMiddleware(options);
158
119
  nsp.use(middleware);
159
120
  nsp.use((socket, next)=>{
160
121
  if (socket.data.userId) {
@@ -266,5 +227,5 @@ function createServer(httpServer) {
266
227
  return server;
267
228
  }
268
229
 
269
- export { createAuthupMiddleware, createServer, isSocketAuthenticated, mountAuthupMiddleware, mountForceLoggedInMiddleware, mountLoggingMiddleware, subscribeSocketRoom, unsubscribeSocketRoom };
230
+ export { createAuthorizationMiddleware, createServer, isSocketAuthenticated, mountAuthorizationMiddleware, mountForceLoggedInMiddleware, mountLoggingMiddleware, subscribeSocketRoom, unsubscribeSocketRoom };
270
231
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/helpers/authenticated.ts","../src/helpers/room-subscriptions.ts","../src/middlewares/authup/utils.ts","../src/middlewares/authup/create.ts","../src/middlewares/force-logged-in.ts","../src/middlewares/logging.ts","../src/server/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from '../types';\n\nexport function isSocketAuthenticated(socket: Socket) : boolean {\n return !!socket.data.userId ||\n !!socket.data.clientId ||\n !!socket.data.robotId;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from '../types';\n\nexport function subscribeSocketRoom(\n socket: Socket,\n roomName: string,\n) {\n if (!socket.data.roomSubscriptions) {\n socket.data.roomSubscriptions = {};\n }\n\n if (!socket.data.roomSubscriptions[roomName]) {\n socket.data.roomSubscriptions[roomName] = 0;\n }\n\n socket.data.roomSubscriptions[roomName]++;\n\n socket.join(roomName);\n}\n\nexport function unsubscribeSocketRoom(\n socket: Socket,\n roomName: string,\n) {\n if (!socket.data.roomSubscriptions) {\n return;\n }\n\n if (socket.data.roomSubscriptions[roomName]) {\n if (socket.data.roomSubscriptions[roomName] > 1) {\n socket.data.roomSubscriptions[roomName]--;\n } else {\n delete socket.data.roomSubscriptions[roomName];\n }\n }\n\n if (!socket.data.roomSubscriptions[roomName]) {\n socket.leave(roomName);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { PermissionName as AuthupPermissionName, REALM_MASTER_NAME } from '@authup/core-kit';\nimport type { PermissionItem } from '@authup/access';\nimport { PermissionChecker, PermissionMemoryRepository } from '@authup/access';\nimport { OAuth2SubKind } from '@authup/specs';\nimport type { TokenVerificationData } from '@authup/server-adapter-kit';\nimport { PermissionName } from '@privateaim/kit';\nimport type { Socket } from '../../types';\n\ntype TokenVerificationDataMinimal = Pick<\nTokenVerificationData,\n'permissions' |\n'realm_id' |\n'realm_name' |\n'sub' |\n'sub_kind' |\n'sub_name'\n>;\n\nfunction generateAbilities(): PermissionItem[] {\n return Object.values({\n ...PermissionName,\n ...AuthupPermissionName,\n }).map((name) => ({\n name,\n } satisfies PermissionItem));\n}\n\nexport function createFakeTokenVerificationData(): TokenVerificationDataMinimal {\n return {\n realm_id: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n realm_name: REALM_MASTER_NAME,\n\n sub_kind: 'user',\n sub: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n sub_name: 'admin',\n\n permissions: generateAbilities(),\n };\n}\n\nexport function applyTokenVerificationData(\n socket: Socket,\n data: TokenVerificationDataMinimal,\n fakeAbilities?: boolean,\n) {\n let abilities: PermissionItem[];\n if (fakeAbilities) {\n abilities = generateAbilities();\n } else {\n abilities = data.permissions;\n }\n\n socket.data.realmId = data.realm_id;\n socket.data.realmName = data.realm_name;\n\n socket.data.permissionChecker = new PermissionChecker({\n repository: new PermissionMemoryRepository(abilities),\n });\n\n switch (data.sub_kind) {\n case OAuth2SubKind.USER: {\n socket.data.userId = data.sub;\n socket.data.userName = data.sub_name;\n break;\n }\n case OAuth2SubKind.ROBOT: {\n socket.data.robotId = data.sub;\n socket.data.robotName = data.sub_name;\n break;\n }\n case OAuth2SubKind.CLIENT: {\n socket.data.clientId = data.sub;\n socket.data.clientName = data.sub_name;\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { UnauthorizedError } from '@ebec/http';\nimport type { VaultClient } from '@hapic/vault';\nimport {\n isRedisClientUsable, isVaultClientUsable, useLogger, useRedisClient, useVaultClient,\n} from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport type { Client as RedisClient } from 'redis-extension';\nimport type { TokenCreatorOptions } from '@authup/core-http-kit';\nimport type { ITokenVerifierCache } from '@authup/server-adapter-kit';\nimport { MemoryTokenVerifierCache, RedisTokenVerifierCache, TokenVerifier } from '@authup/server-adapter-kit';\nimport { createMiddleware } from '@authup/server-adapter-socket-io';\nimport type {\n Middleware, Namespace, Server, Socket,\n} from '../../types';\nimport type { AuthupMiddlewareRegistrationOptions } from './types';\nimport { applyTokenVerificationData, createFakeTokenVerificationData } from './utils';\n\nexport function createAuthupMiddleware(\n options: AuthupMiddlewareRegistrationOptions,\n) : Middleware {\n let baseURL : string | undefined;\n if (options.baseURL) {\n baseURL = options.baseURL;\n }\n\n let redis : RedisClient | undefined;\n if (isRedisClientUsable()) {\n redis = useRedisClient();\n }\n\n let vault : VaultClient | undefined;\n if (isVaultClientUsable()) {\n vault = useVaultClient();\n }\n\n if (!baseURL) {\n const data = createFakeTokenVerificationData();\n\n return (socket, next) => {\n applyTokenVerificationData(socket, data, options.fakeAbilities);\n next();\n };\n }\n\n let tokenCreator : TokenCreatorOptions;\n if (vault) {\n tokenCreator = {\n type: 'robotInVault',\n name: 'system',\n vault,\n baseURL,\n };\n } else {\n tokenCreator = {\n type: 'user',\n name: 'admin',\n password: 'start123',\n baseURL,\n };\n }\n\n let cache : ITokenVerifierCache;\n if (redis) {\n cache = new RedisTokenVerifierCache(redis);\n } else {\n cache = new MemoryTokenVerifierCache();\n }\n\n return createMiddleware({\n tokenVerifier: new TokenVerifier({\n baseURL,\n creator: tokenCreator,\n cache,\n }),\n tokenVerifierHandler: (\n socket: Socket,\n data,\n ) => applyTokenVerificationData(socket, data, options.fakeAbilities),\n });\n}\n\nexport function mountAuthupMiddleware(\n nsp: Namespace | Server,\n options: AuthupMiddlewareRegistrationOptions,\n) {\n const middleware = createAuthupMiddleware(options);\n nsp.use(middleware);\n\n nsp.use((socket, next) => {\n if (socket.data.userId) {\n useLogger().info(`Socket/${socket.id}: User connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'user',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.robotId) {\n useLogger().info(`Socket/${socket.id}: Robot connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'robot',\n actor_id: socket.data.robotId,\n });\n } else if (socket.data.clientId) {\n useLogger().info(`Socket/${socket.id}: Client connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'client',\n actor_id: socket.data.clientId,\n });\n } else {\n useLogger().warn(`Socket/${socket.id}: Not authenticated.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n\n next(new UnauthorizedError());\n return;\n }\n\n socket.on('disconnect', () => {\n if (socket.data.userId) {\n useLogger().info(`Socket/${socket.id}: User disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'user',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.robotId) {\n useLogger().info(`Socket/${socket.id}: Robot disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'robot',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.clientId) {\n useLogger().info(`Socket/${socket.id}: Client disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'client',\n actor_id: socket.data.clientId,\n });\n }\n });\n\n next();\n });\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { UnauthorizedError } from '@ebec/http';\nimport type { Namespace, Server } from '../types';\n\nexport function mountForceLoggedInMiddleware(input: Namespace | Server) {\n input.use((socket, next) => {\n if (socket.data.userId || socket.data.robotId) {\n next();\n return;\n }\n\n next(new UnauthorizedError());\n });\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { useLogger } from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport type { Namespace, Server } from '../types';\n\nexport function mountLoggingMiddleware(\n nsp: Namespace | Server,\n) {\n nsp.on('error', (err) => {\n useLogger().error(err, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n nsp.use((socket, next) => {\n useLogger().debug(`Socket/${socket.id}: Connected.`, {\n namespace: socket.nsp.name,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n\n socket.on('disconnect', () => {\n useLogger().debug(`Socket/${socket.id}: Disconnected.`, {\n namespace: socket.nsp.name,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n next();\n });\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n isRedisClientUsable, useLogger, useRedisPublishClient, useRedisSubscribeClient,\n} from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport { createAdapter } from '@socket.io/redis-adapter';\nimport type { Server as HTTPServer } from 'node:http';\nimport type { DefaultEventsMap, ServerOptions } from 'socket.io';\nimport { Server } from 'socket.io';\n\nexport function createServer<\n ListenEvents extends Record<string, any> = DefaultEventsMap,\n EmitEvents extends Record<string, any> = ListenEvents,\n ServerSideEvents extends Record<string, any> = DefaultEventsMap,\n SocketData = any,\n>(\n httpServer: HTTPServer,\n): Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {\n let adapter : ServerOptions['adapter'] | undefined;\n if (isRedisClientUsable()) {\n adapter = createAdapter(\n useRedisPublishClient(),\n useRedisSubscribeClient(),\n );\n }\n\n const server = new Server<\n ListenEvents,\n EmitEvents,\n ServerSideEvents,\n SocketData\n >(httpServer, {\n adapter,\n cors: {\n origin(origin, callback) {\n callback(null, true);\n },\n credentials: true,\n },\n transports: ['websocket', 'polling'],\n });\n\n server.engine.on('connection_error', (err) => {\n useLogger().error({\n message: err.message,\n code: err.code,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n return server;\n}\n"],"names":["isSocketAuthenticated","socket","data","userId","clientId","robotId","subscribeSocketRoom","roomName","roomSubscriptions","join","unsubscribeSocketRoom","leave","generateAbilities","Object","values","PermissionName","AuthupPermissionName","map","name","createFakeTokenVerificationData","realm_id","realm_name","REALM_MASTER_NAME","sub_kind","sub","sub_name","permissions","applyTokenVerificationData","fakeAbilities","abilities","realmId","realmName","permissionChecker","PermissionChecker","repository","PermissionMemoryRepository","OAuth2SubKind","USER","userName","ROBOT","robotName","CLIENT","clientName","createAuthupMiddleware","options","baseURL","redis","isRedisClientUsable","useRedisClient","vault","isVaultClientUsable","useVaultClient","next","tokenCreator","type","password","cache","RedisTokenVerifierCache","MemoryTokenVerifierCache","createMiddleware","tokenVerifier","TokenVerifier","creator","tokenVerifierHandler","mountAuthupMiddleware","nsp","middleware","use","useLogger","info","id","LogFlag","CHANNEL","LogChannel","WEBSOCKET","actor_type","actor_id","warn","UnauthorizedError","on","mountForceLoggedInMiddleware","input","mountLoggingMiddleware","err","error","debug","namespace","createServer","httpServer","adapter","createAdapter","useRedisPublishClient","useRedisSubscribeClient","server","Server","cors","origin","callback","credentials","transports","engine","message","code"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/helpers/authenticated.ts","../src/helpers/room-subscriptions.ts","../src/middlewares/authup/utils.ts","../src/middlewares/authup/create.ts","../src/middlewares/force-logged-in.ts","../src/middlewares/logging.ts","../src/server/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from '../types';\n\nexport function isSocketAuthenticated(socket: Socket) : boolean {\n return !!socket.data.userId ||\n !!socket.data.clientId ||\n !!socket.data.robotId;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Socket } from '../types';\n\nexport function subscribeSocketRoom(\n socket: Socket,\n roomName: string,\n) {\n if (!socket.data.roomSubscriptions) {\n socket.data.roomSubscriptions = {};\n }\n\n if (!socket.data.roomSubscriptions[roomName]) {\n socket.data.roomSubscriptions[roomName] = 0;\n }\n\n socket.data.roomSubscriptions[roomName]++;\n\n socket.join(roomName);\n}\n\nexport function unsubscribeSocketRoom(\n socket: Socket,\n roomName: string,\n) {\n if (!socket.data.roomSubscriptions) {\n return;\n }\n\n if (socket.data.roomSubscriptions[roomName]) {\n if (socket.data.roomSubscriptions[roomName] > 1) {\n socket.data.roomSubscriptions[roomName]--;\n } else {\n delete socket.data.roomSubscriptions[roomName];\n }\n }\n\n if (!socket.data.roomSubscriptions[roomName]) {\n socket.leave(roomName);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { PermissionName as AuthupPermissionName, REALM_MASTER_NAME } from '@authup/core-kit';\nimport type { PermissionItem } from '@authup/access';\nimport { PermissionChecker, PermissionMemoryRepository } from '@authup/access';\nimport { OAuth2SubKind } from '@authup/specs';\nimport type { TokenVerificationData } from '@authup/server-adapter-kit';\nimport { PermissionName } from '@privateaim/kit';\nimport type { Socket } from '../../types';\n\ntype TokenVerificationDataMinimal = Pick<\nTokenVerificationData,\n'permissions' |\n'realm_id' |\n'realm_name' |\n'sub' |\n'sub_kind' |\n'sub_name'\n>;\n\nfunction generateAbilities(): PermissionItem[] {\n return Object.values({\n ...PermissionName,\n ...AuthupPermissionName,\n }).map((name) => ({\n name,\n } satisfies PermissionItem));\n}\n\nexport function createFakeTokenVerificationData(): TokenVerificationDataMinimal {\n return {\n realm_id: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n realm_name: REALM_MASTER_NAME,\n\n sub_kind: 'user',\n sub: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n sub_name: 'system',\n\n permissions: generateAbilities(),\n };\n}\n\nexport function applyTokenVerificationData(\n socket: Socket,\n data: TokenVerificationDataMinimal,\n fakeAbilities?: boolean,\n) {\n let abilities: PermissionItem[];\n if (fakeAbilities) {\n abilities = generateAbilities();\n } else {\n abilities = data.permissions;\n }\n\n socket.data.realmId = data.realm_id;\n socket.data.realmName = data.realm_name;\n\n socket.data.permissionChecker = new PermissionChecker({\n repository: new PermissionMemoryRepository(abilities),\n });\n\n switch (data.sub_kind) {\n case OAuth2SubKind.USER: {\n socket.data.userId = data.sub;\n socket.data.userName = data.sub_name;\n break;\n }\n case OAuth2SubKind.ROBOT: {\n socket.data.robotId = data.sub;\n socket.data.robotName = data.sub_name;\n break;\n }\n case OAuth2SubKind.CLIENT: {\n socket.data.clientId = data.sub;\n socket.data.clientName = data.sub_name;\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { UnauthorizedError } from '@ebec/http';\nimport {\n useLogger,\n} from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport { createMiddleware } from '@authup/server-adapter-socket-io';\nimport type {\n Middleware, Namespace, Server, Socket,\n} from '../../types';\nimport type { AuthorizationMiddlewareRegistrationOptions } from './types';\nimport { applyTokenVerificationData, createFakeTokenVerificationData } from './utils';\n\nexport function createAuthorizationMiddleware(\n options: AuthorizationMiddlewareRegistrationOptions,\n) : Middleware {\n if (!options.baseURL) {\n const data = createFakeTokenVerificationData();\n\n return (socket, next) => {\n applyTokenVerificationData(socket, data, options.fakeAbilities);\n next();\n };\n }\n\n return createMiddleware({\n tokenVerifier: options.tokenVerifier,\n tokenVerifierHandler: (\n socket: Socket,\n data,\n ) => applyTokenVerificationData(socket, data, options.fakeAbilities),\n });\n}\n\nexport function mountAuthorizationMiddleware(\n nsp: Namespace | Server,\n options: AuthorizationMiddlewareRegistrationOptions,\n) {\n const middleware = createAuthorizationMiddleware(options);\n nsp.use(middleware);\n\n nsp.use((socket, next) => {\n if (socket.data.userId) {\n useLogger().info(`Socket/${socket.id}: User connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'user',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.robotId) {\n useLogger().info(`Socket/${socket.id}: Robot connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'robot',\n actor_id: socket.data.robotId,\n });\n } else if (socket.data.clientId) {\n useLogger().info(`Socket/${socket.id}: Client connected.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'client',\n actor_id: socket.data.clientId,\n });\n } else {\n useLogger().warn(`Socket/${socket.id}: Not authenticated.`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n\n next(new UnauthorizedError());\n return;\n }\n\n socket.on('disconnect', () => {\n if (socket.data.userId) {\n useLogger().info(`Socket/${socket.id}: User disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'user',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.robotId) {\n useLogger().info(`Socket/${socket.id}: Robot disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'robot',\n actor_id: socket.data.userId,\n });\n } else if (socket.data.clientId) {\n useLogger().info(`Socket/${socket.id}: Client disconnected`, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n actor_type: 'client',\n actor_id: socket.data.clientId,\n });\n }\n });\n\n next();\n });\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { UnauthorizedError } from '@ebec/http';\nimport type { Namespace, Server } from '../types';\n\nexport function mountForceLoggedInMiddleware(input: Namespace | Server) {\n input.use((socket, next) => {\n if (socket.data.userId || socket.data.robotId) {\n next();\n return;\n }\n\n next(new UnauthorizedError());\n });\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { useLogger } from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport type { Namespace, Server } from '../types';\n\nexport function mountLoggingMiddleware(\n nsp: Namespace | Server,\n) {\n nsp.on('error', (err) => {\n useLogger().error(err, {\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n nsp.use((socket, next) => {\n useLogger().debug(`Socket/${socket.id}: Connected.`, {\n namespace: socket.nsp.name,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n\n socket.on('disconnect', () => {\n useLogger().debug(`Socket/${socket.id}: Disconnected.`, {\n namespace: socket.nsp.name,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n next();\n });\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n isRedisClientUsable, useLogger, useRedisPublishClient, useRedisSubscribeClient,\n} from '@privateaim/server-kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport { createAdapter } from '@socket.io/redis-adapter';\nimport type { Server as HTTPServer } from 'node:http';\nimport type { DefaultEventsMap, ServerOptions } from 'socket.io';\nimport { Server } from 'socket.io';\n\nexport function createServer<\n ListenEvents extends Record<string, any> = DefaultEventsMap,\n EmitEvents extends Record<string, any> = ListenEvents,\n ServerSideEvents extends Record<string, any> = DefaultEventsMap,\n SocketData = any,\n>(\n httpServer: HTTPServer,\n): Server<ListenEvents, EmitEvents, ServerSideEvents, SocketData> {\n let adapter : ServerOptions['adapter'] | undefined;\n if (isRedisClientUsable()) {\n adapter = createAdapter(\n useRedisPublishClient(),\n useRedisSubscribeClient(),\n );\n }\n\n const server = new Server<\n ListenEvents,\n EmitEvents,\n ServerSideEvents,\n SocketData\n >(httpServer, {\n adapter,\n cors: {\n origin(origin, callback) {\n callback(null, true);\n },\n credentials: true,\n },\n transports: ['websocket', 'polling'],\n });\n\n server.engine.on('connection_error', (err) => {\n useLogger().error({\n message: err.message,\n code: err.code,\n [LogFlag.CHANNEL]: LogChannel.WEBSOCKET,\n });\n });\n\n return server;\n}\n"],"names":["isSocketAuthenticated","socket","data","userId","clientId","robotId","subscribeSocketRoom","roomName","roomSubscriptions","join","unsubscribeSocketRoom","leave","generateAbilities","Object","values","PermissionName","AuthupPermissionName","map","name","createFakeTokenVerificationData","realm_id","realm_name","REALM_MASTER_NAME","sub_kind","sub","sub_name","permissions","applyTokenVerificationData","fakeAbilities","abilities","realmId","realmName","permissionChecker","PermissionChecker","repository","PermissionMemoryRepository","OAuth2SubKind","USER","userName","ROBOT","robotName","CLIENT","clientName","createAuthorizationMiddleware","options","baseURL","next","createMiddleware","tokenVerifier","tokenVerifierHandler","mountAuthorizationMiddleware","nsp","middleware","use","useLogger","info","id","LogFlag","CHANNEL","LogChannel","WEBSOCKET","actor_type","actor_id","warn","UnauthorizedError","on","mountForceLoggedInMiddleware","input","mountLoggingMiddleware","err","error","debug","namespace","createServer","httpServer","adapter","isRedisClientUsable","createAdapter","useRedisPublishClient","useRedisSubscribeClient","server","Server","cors","origin","callback","credentials","transports","engine","message","code"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Middleware, Namespace, Server } from '../../types';
2
- import type { AuthupMiddlewareRegistrationOptions } from './types';
3
- export declare function createAuthupMiddleware(options: AuthupMiddlewareRegistrationOptions): Middleware;
4
- export declare function mountAuthupMiddleware(nsp: Namespace | Server, options: AuthupMiddlewareRegistrationOptions): void;
2
+ import type { AuthorizationMiddlewareRegistrationOptions } from './types';
3
+ export declare function createAuthorizationMiddleware(options: AuthorizationMiddlewareRegistrationOptions): Middleware;
4
+ export declare function mountAuthorizationMiddleware(nsp: Namespace | Server, options: AuthorizationMiddlewareRegistrationOptions): void;
5
5
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/middlewares/authup/create.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACR,UAAU,EAAE,SAAS,EAAE,MAAM,EAChC,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,mCAAmC,GAC5C,UAAU,CA4Db;AAED,wBAAgB,qBAAqB,CACjC,GAAG,EAAE,SAAS,GAAG,MAAM,EACvB,OAAO,EAAE,mCAAmC,QAyD/C"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/middlewares/authup/create.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,UAAU,EAAE,SAAS,EAAE,MAAM,EAChC,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,SAAS,CAAC;AAG1E,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,0CAA0C,GACnD,UAAU,CAiBb;AAED,wBAAgB,4BAA4B,CACxC,GAAG,EAAE,SAAS,GAAG,MAAM,EACvB,OAAO,EAAE,0CAA0C,QAyDtD"}
@@ -1,4 +1,6 @@
1
- export type AuthupMiddlewareRegistrationOptions = {
1
+ import type { TokenVerifier } from '@authup/server-adapter-kit';
2
+ export type AuthorizationMiddlewareRegistrationOptions = {
3
+ tokenVerifier?: TokenVerifier;
2
4
  baseURL?: string;
3
5
  fakeAbilities?: boolean;
4
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middlewares/authup/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mCAAmC,GAAG;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middlewares/authup/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,MAAM,0CAA0C,GAAG;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@privateaim/server-realtime-kit",
3
3
  "type": "module",
4
- "version": "0.8.28",
4
+ "version": "0.8.29",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
@@ -19,17 +19,18 @@
19
19
  "license": "Apache-2.0",
20
20
  "description": "This package contains the realtime application which connects the API with socket based clients.",
21
21
  "dependencies": {
22
- "@authup/access": "^1.0.0-beta.29",
23
- "@authup/specs": "^1.0.0-beta.29",
24
- "@authup/kit": "^1.0.0-beta.29",
25
- "@authup/core-kit": "^1.0.0-beta.29",
26
- "@authup/core-realtime-kit": "^1.0.0-beta.29",
27
- "@authup/server-adapter-kit": "^1.0.0-beta.28",
28
- "@authup/server-adapter-socket-io": "^1.0.0-beta.28",
22
+ "@authup/access": "^1.0.0-beta.30",
23
+ "@authup/specs": "^1.0.0-beta.30",
24
+ "@authup/kit": "^1.0.0-beta.30",
25
+ "@authup/core-kit": "^1.0.0-beta.30",
26
+ "@authup/core-http-kit": "^1.0.0-beta.30",
27
+ "@authup/core-realtime-kit": "^1.0.0-beta.30",
28
+ "@authup/server-adapter-kit": "^1.0.0-beta.30",
29
+ "@authup/server-adapter-socket-io": "^1.0.0-beta.30",
29
30
  "@socket.io/redis-adapter": "^8.3.0",
30
- "@privateaim/kit": "^0.8.28",
31
- "@privateaim/telemetry-kit": "^0.8.28",
32
- "@privateaim/server-kit": "^0.8.28",
31
+ "@privateaim/kit": "^0.8.29",
32
+ "@privateaim/telemetry-kit": "^0.8.29",
33
+ "@privateaim/server-kit": "^0.8.29",
33
34
  "@ebec/http": "^2.3.0"
34
35
  },
35
36
  "devDependencies": {
@@ -6,41 +6,21 @@
6
6
  */
7
7
 
8
8
  import { UnauthorizedError } from '@ebec/http';
9
- import type { VaultClient } from '@hapic/vault';
10
9
  import {
11
- isRedisClientUsable, isVaultClientUsable, useLogger, useRedisClient, useVaultClient,
10
+ useLogger,
12
11
  } from '@privateaim/server-kit';
13
12
  import { LogChannel, LogFlag } from '@privateaim/telemetry-kit';
14
- import type { Client as RedisClient } from 'redis-extension';
15
- import type { TokenCreatorOptions } from '@authup/core-http-kit';
16
- import type { ITokenVerifierCache } from '@authup/server-adapter-kit';
17
- import { MemoryTokenVerifierCache, RedisTokenVerifierCache, TokenVerifier } from '@authup/server-adapter-kit';
18
13
  import { createMiddleware } from '@authup/server-adapter-socket-io';
19
14
  import type {
20
15
  Middleware, Namespace, Server, Socket,
21
16
  } from '../../types';
22
- import type { AuthupMiddlewareRegistrationOptions } from './types';
17
+ import type { AuthorizationMiddlewareRegistrationOptions } from './types';
23
18
  import { applyTokenVerificationData, createFakeTokenVerificationData } from './utils';
24
19
 
25
- export function createAuthupMiddleware(
26
- options: AuthupMiddlewareRegistrationOptions,
20
+ export function createAuthorizationMiddleware(
21
+ options: AuthorizationMiddlewareRegistrationOptions,
27
22
  ) : Middleware {
28
- let baseURL : string | undefined;
29
- if (options.baseURL) {
30
- baseURL = options.baseURL;
31
- }
32
-
33
- let redis : RedisClient | undefined;
34
- if (isRedisClientUsable()) {
35
- redis = useRedisClient();
36
- }
37
-
38
- let vault : VaultClient | undefined;
39
- if (isVaultClientUsable()) {
40
- vault = useVaultClient();
41
- }
42
-
43
- if (!baseURL) {
23
+ if (!options.baseURL) {
44
24
  const data = createFakeTokenVerificationData();
45
25
 
46
26
  return (socket, next) => {
@@ -49,36 +29,8 @@ export function createAuthupMiddleware(
49
29
  };
50
30
  }
51
31
 
52
- let tokenCreator : TokenCreatorOptions;
53
- if (vault) {
54
- tokenCreator = {
55
- type: 'robotInVault',
56
- name: 'system',
57
- vault,
58
- baseURL,
59
- };
60
- } else {
61
- tokenCreator = {
62
- type: 'user',
63
- name: 'admin',
64
- password: 'start123',
65
- baseURL,
66
- };
67
- }
68
-
69
- let cache : ITokenVerifierCache;
70
- if (redis) {
71
- cache = new RedisTokenVerifierCache(redis);
72
- } else {
73
- cache = new MemoryTokenVerifierCache();
74
- }
75
-
76
32
  return createMiddleware({
77
- tokenVerifier: new TokenVerifier({
78
- baseURL,
79
- creator: tokenCreator,
80
- cache,
81
- }),
33
+ tokenVerifier: options.tokenVerifier,
82
34
  tokenVerifierHandler: (
83
35
  socket: Socket,
84
36
  data,
@@ -86,11 +38,11 @@ export function createAuthupMiddleware(
86
38
  });
87
39
  }
88
40
 
89
- export function mountAuthupMiddleware(
41
+ export function mountAuthorizationMiddleware(
90
42
  nsp: Namespace | Server,
91
- options: AuthupMiddlewareRegistrationOptions,
43
+ options: AuthorizationMiddlewareRegistrationOptions,
92
44
  ) {
93
- const middleware = createAuthupMiddleware(options);
45
+ const middleware = createAuthorizationMiddleware(options);
94
46
  nsp.use(middleware);
95
47
 
96
48
  nsp.use((socket, next) => {
@@ -5,7 +5,10 @@
5
5
  * view the LICENSE file that was distributed with this source code.
6
6
  */
7
7
 
8
- export type AuthupMiddlewareRegistrationOptions = {
8
+ import type { TokenVerifier } from '@authup/server-adapter-kit';
9
+
10
+ export type AuthorizationMiddlewareRegistrationOptions = {
11
+ tokenVerifier?: TokenVerifier,
9
12
  baseURL?: string,
10
13
  fakeAbilities?: boolean
11
14
  };
@@ -39,7 +39,7 @@ export function createFakeTokenVerificationData(): TokenVerificationDataMinimal
39
39
 
40
40
  sub_kind: 'user',
41
41
  sub: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',
42
- sub_name: 'admin',
42
+ sub_name: 'system',
43
43
 
44
44
  permissions: generateAbilities(),
45
45
  };