diff --git a/apps/edr-passenger-api/src/modules/support/support.gateway.ts b/apps/edr-passenger-api/src/modules/support/support.gateway.ts index 203c39035..c5b65497b 100644 --- a/apps/edr-passenger-api/src/modules/support/support.gateway.ts +++ b/apps/edr-passenger-api/src/modules/support/support.gateway.ts @@ -7,7 +7,6 @@ import { import { Server, Socket } from 'socket.io'; import { Passenger as PassengerTypes } from '@edr/types'; -import { PrismaService } from '../../common/prisma.service'; import { WsAuthService } from './ws-auth.service'; /** @@ -34,27 +33,24 @@ export class SupportGateway implements OnGatewayConnection { @WebSocketServer() private readonly server!: Server; - constructor( - private readonly wsAuth: WsAuthService, - private readonly prisma: PrismaService, - ) {} + constructor(private readonly wsAuth: WsAuthService) {} async handleConnection(socket: Socket): Promise { const userId = await this.wsAuth.resolveUserId(this.extractToken(socket)); - // Authenticated: passenger (own room) or backoffice staff (shared room). + // A valid token means a backoffice agent: the portal connects only with a + // device/guest id (never a token), so every token-authed socket is staff. + // Join the shared backoffice room — no passenger-row heuristic needed. if (userId) { socket.data.userId = userId; - const passenger = await this.prisma.passenger.findUnique({ - where: { iamUserId: userId }, + socket.data.side = 'AGENT'; + await socket.join(SupportGateway.BACKOFFICE_ROOM); + socket.emit('support:hello', { + side: 'AGENT', + room: SupportGateway.BACKOFFICE_ROOM, + userId, }); - if (passenger) { - await socket.join(`user:${userId}`); - socket.data.side = 'USER'; - } else { - await socket.join(SupportGateway.BACKOFFICE_ROOM); - socket.data.side = 'AGENT'; - } + this.logger.debug(`support socket ${socket.id} → AGENT (backoffice)`); return; } diff --git a/apps/edr-passenger-web/backoffice/src/features/support/useSupportSocket.ts b/apps/edr-passenger-web/backoffice/src/features/support/useSupportSocket.ts index 503793d2f..aabeb0ce4 100644 --- a/apps/edr-passenger-web/backoffice/src/features/support/useSupportSocket.ts +++ b/apps/edr-passenger-web/backoffice/src/features/support/useSupportSocket.ts @@ -44,6 +44,20 @@ export function useSupportSocket( }, ); + // Temporary diagnostics — remove once live delivery is confirmed. + socket.on('connect', () => + console.warn('[support] agent socket connected', socket.id), + ); + socket.on('connect_error', (err) => + console.warn('[support] agent socket connect_error:', err.message), + ); + socket.on('disconnect', (reason) => + console.warn('[support] agent socket disconnected:', reason), + ); + socket.on('support:hello', (info) => + console.warn('[support] server assigned:', info), + ); + socket.on( Passenger.PASSENGER_SUPPORT_WS_EVENTS.MESSAGE_NEW, (event: Passenger.PassengerSupportMessageEvent) => {