From c9f7125f37f4711b4f68ea745eb8e8b51e9dcfec Mon Sep 17 00:00:00 2001 From: alma Date: Wed, 16 Apr 2025 22:42:18 +0200 Subject: [PATCH] Neah version calendar fix 3 debuger ???? ????? --- app/api/calendars/route.ts | 6 +++--- app/api/mail/route.ts | 26 +++++++++++++++++++------- prisma/schema.prisma | 24 ++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/app/api/calendars/route.ts b/app/api/calendars/route.ts index 39b55c8..3449365 100644 --- a/app/api/calendars/route.ts +++ b/app/api/calendars/route.ts @@ -11,7 +11,7 @@ import { prisma } from "@/lib/prisma"; * * The function performs the following steps: * 1. Retrieves the server session using `getServerSession`. - * 2. Checks if the user is authenticated by verifying the presence of `session.user.username`. + * 2. Checks if the user is authenticated by verifying the presence of `session.user.id`. * - If not authenticated, returns a 401 response with an error message. * 3. Attempts to fetch the calendars associated with the authenticated user from the database. * - If successful, returns the calendars in a JSON response. @@ -20,14 +20,14 @@ import { prisma } from "@/lib/prisma"; export async function GET(req: NextRequest) { const session = await getServerSession(authOptions); - if (!session?.user?.username) { + if (!session?.user?.id) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } try { const calendars = await prisma.calendar.findMany({ where: { - userId: session.user.username, + userId: session.user.id, }, include: { events: { diff --git a/app/api/mail/route.ts b/app/api/mail/route.ts index 6a08520..2902643 100644 --- a/app/api/mail/route.ts +++ b/app/api/mail/route.ts @@ -3,6 +3,9 @@ import Imap from 'imap'; import nodemailer from 'nodemailer'; import { parseEmailHeaders, decodeEmailBody } from '@/lib/email-parser'; import { cookies } from 'next/headers'; +import { getServerSession } from 'next-auth/next'; +import { authOptions } from '@/lib/auth'; +import { prisma } from '@/lib/prisma'; interface StoredCredentials { email: string; @@ -92,11 +95,20 @@ function getStoredCredentials(): StoredCredentials | null { } export async function GET(request: Request) { + const session = await getServerSession(authOptions); + + if (!session?.user?.id) { + return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); + } + try { - const credentials = getStoredCredentials(); - if (!credentials) { + const userCredentials = await prisma.emailCredentials.findUnique({ + where: { userId: session.user.id } + }); + + if (!userCredentials) { return NextResponse.json( - { error: 'No stored credentials found' }, + { error: 'No email credentials configured' }, { status: 401 } ); } @@ -110,10 +122,10 @@ export async function GET(request: Request) { return new Promise((resolve) => { const imap = new Imap({ - user: credentials.email, - password: credentials.password, - host: credentials.host, - port: credentials.port, + user: userCredentials.email, + password: userCredentials.password, + host: userCredentials.host, + port: userCredentials.port, tls: true, tlsOptions: { rejectUnauthorized: false }, authTimeout: 30000, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7c2e344..1f53154 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -40,4 +40,28 @@ model Event { @@index([calendarId]) @@index([userId]) +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + image String? + accounts Account[] + sessions Session[] + calendars Calendar[] + emailCredentials EmailCredentials? +} + +model EmailCredentials { + id String @id @default(cuid()) + userId String @unique + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + email String + password String + host String + port Int + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt } \ No newline at end of file