import { NextRequest, NextResponse } from "next/server"; import { getServerSession } from "next-auth/next"; import { authOptions } from "@/app/api/auth/[...nextauth]/route"; import { prisma } from "@/lib/prisma"; import crypto from "crypto"; // Non testé, généré automatiquement par IA export async function POST( req: NextRequest, { params }: { params: { id: string } } ) { const session = await getServerSession(authOptions); if (!session?.user?.username) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } try { // Vérifier que le calendrier appartient à l'utilisateur const calendar = await prisma.calendar.findUnique({ where: { id: params.id, }, }); if (!calendar) { return NextResponse.json( { error: "Calendrier non trouvé" }, { status: 404 } ); } if (calendar.userId !== session.user.username) { return NextResponse.json({ error: "Non autorisé" }, { status: 403 }); } // Générer un token de partage const shareToken = crypto.randomBytes(32).toString("hex"); // Dans une implémentation réelle, on stockerait ce token dans la base de données // avec une date d'expiration et des permissions const shareUrl = `${process.env.NEXT_PUBLIC_BASE_URL}/calendars/shared/${shareToken}`; return NextResponse.json({ shareUrl, shareToken, }); } catch (error) { console.error("Erreur lors de la création du lien de partage:", error); return NextResponse.json({ error: "Erreur serveur" }, { status: 500 }); } }