fix: ws relay

This commit is contained in:
Philipinho
2026-09-08 13:54:02 +01:00
parent 7c368c86c6
commit 2a6d936fd4
+15
View File
@@ -3,6 +3,8 @@ import { CACHE_MANAGER } from '@nestjs/cache-manager';
import { Cache } from 'cache-manager'; import { Cache } from 'cache-manager';
import { Server, Socket } from 'socket.io'; import { Server, Socket } from 'socket.io';
import { PagePermissionRepo } from '@docmost/db/repos/page/page-permission.repo'; import { PagePermissionRepo } from '@docmost/db/repos/page/page-permission.repo';
import { SpaceMemberRepo } from '@docmost/db/repos/space/space-member.repo';
import { SpaceRole } from '../common/helpers/types/permission';
import { import {
TREE_EVENTS, TREE_EVENTS,
WS_SPACE_RESTRICTION_CACHE_PREFIX, WS_SPACE_RESTRICTION_CACHE_PREFIX,
@@ -18,6 +20,7 @@ export class WsService {
constructor( constructor(
private readonly pagePermissionRepo: PagePermissionRepo, private readonly pagePermissionRepo: PagePermissionRepo,
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache, @Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
private readonly spaceMemberRepo: SpaceMemberRepo,
) {} ) {}
setServer(server: Server): void { setServer(server: Server): void {
@@ -31,6 +34,18 @@ export class WsService {
return; return;
} }
const userSpaceRoles = await this.spaceMemberRepo.getUserSpaceRoles(
client.data.userId,
data.spaceId,
);
const canPublish = userSpaceRoles?.some(
({ role }) => role === SpaceRole.ADMIN || role === SpaceRole.WRITER,
);
if (!canPublish) {
return;
}
if (data.operation === 'refetchRootTreeNodeEvent') { if (data.operation === 'refetchRootTreeNodeEvent') {
client.broadcast.to(room).emit('message', data); client.broadcast.to(room).emit('message', data);
return; return;