diff --git a/backend/src/socket/index.js b/backend/src/socket/index.js index fce5242..0dc5251 100644 --- a/backend/src/socket/index.js +++ b/backend/src/socket/index.js @@ -75,6 +75,36 @@ function initializeSocket(httpServer) { socket.join(userRoom); console.log(`📬 ${socket.user.username} joined personal room: ${userRoom}`); + // Join admin activity logs room (admin-only) + socket.on('join_admin_activity_logs', async () => { + try { + // Verify admin status + const user = await prisma.user.findUnique({ + where: { id: socket.user.id }, + select: { isAdmin: true, username: true }, + }); + + if (!user || !user.isAdmin) { + socket.emit('error', { message: 'Admin access required' }); + console.warn(`🚫 Non-admin ${socket.user.username} attempted to join admin_activity_logs`); + return; + } + + socket.join('admin_activity_logs'); + console.log(`👑 Admin ${user.username} joined activity logs streaming room`); + socket.emit('admin_activity_logs_joined', { message: 'Successfully joined activity logs stream' }); + } catch (error) { + console.error('Join admin activity logs error:', error); + socket.emit('error', { message: 'Failed to join admin activity logs' }); + } + }); + + // Leave admin activity logs room + socket.on('leave_admin_activity_logs', () => { + socket.leave('admin_activity_logs'); + console.log(`👑 Admin ${socket.user.username} left activity logs streaming room`); + }); + // Join event room socket.on('join_event_room', async ({ slug }) => { try {