diff --git a/convex/tickets.ts b/convex/tickets.ts index 834a4d9..3cc9ce4 100644 --- a/convex/tickets.ts +++ b/convex/tickets.ts @@ -1018,10 +1018,23 @@ async function requireTicketChatParticipant( return { user: viewer.user, role: normalizedRole, kind: "manager" }; } if (normalizedRole === "COLLABORATOR") { - if (String(ticket.requesterId) !== String(viewer.user._id)) { - throw new ConvexError("Apenas o solicitante pode conversar neste chamado"); + // Verificar se e o solicitante + if (String(ticket.requesterId) === String(viewer.user._id)) { + return { user: viewer.user, role: normalizedRole, kind: "requester" }; } - return { user: viewer.user, role: normalizedRole, kind: "requester" }; + // Verificar se esta vinculado a maquina do ticket + if (ticket.machineId) { + const machine = await ctx.db.get(ticket.machineId); + if (machine) { + const isLinkedToMachine = + machine.assignedUserId?.toString() === viewer.user._id.toString() || + machine.linkedUserIds?.some((id) => id.toString() === viewer.user._id.toString()); + if (isLinkedToMachine) { + return { user: viewer.user, role: normalizedRole, kind: "requester" }; + } + } + } + throw new ConvexError("Apenas o solicitante pode conversar neste chamado"); } throw new ConvexError("Usuário não possui acesso ao chat deste chamado"); }