import { prisma } from "@/prisma/prismaClient"; export async function isEmailVerified(id: string) { const user = await prisma.user.findUnique({ where: { id }, select: { emailVerified: true, email: true, accounts: { select: { provider: true, access_token: true } }, }, }); if (!user) return false; if (user?.emailVerified) return true; const discordAccount = user.accounts.find((a) => a.provider === "discord"); if (user && discordAccount?.access_token) { const dcUser = await getDiscordUserInfo(discordAccount.access_token); if (!dcUser.verified) return false; prisma.user.update({ where: { id }, data: { emailVerified: new Date() } }); return true; } } async function getDiscordUserInfo(accessToken: string): Promise<{ id: string; username: string; discriminator: string; avatar: string; verified: boolean; email: string; flags: number; banner: string; accent_color: number; premium_type: number; public_flags: number; avatar_decoration_data: { sku_id: string; asset: string; }; }> { try { const response = await fetch("https://discord.com/api/users/@me", { headers: { Authorization: `Bearer ${accessToken}`, }, }); return await response.json(); } catch (error) { console.error("Error fetching user info from Discord:", error); throw error; } }