apps/bot/src/lib/tickets.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import db, { tickets, eq, getUser, getUserByDiscordId } from "@stealth-developers/db";
export async function hasAccessToTicket(userId: string, ticketId: number) {
const [ticket] = await db.select().from(tickets).where(eq(tickets.id, ticketId)).limit(1);
if (!ticket) return false;
const userPromise = getUserByDiscordId(userId);
const subjectPromise = getUser(ticket.subject);
const openedByPromise = ticket.subject === ticket.openedBy ? null : getUser(ticket.openedBy);
const [user, subject, openedByResult] = await Promise.all([
userPromise,
subjectPromise,
openedByPromise,
]);
const openedBy = ticket.subject === ticket.openedBy ? subject : openedByResult;
if (!user) return false;
if (user.moderator) return true;
if (!subject || !openedBy) return false;
if (user.id === subject.id || user.id === openedBy.id) return true;
}
|