import { auth } from "@/lib/auth"; import { addTutorial, generateSlug, getAllCategories } from "@/lib/tutorials"; import { revalidatePath } from "next/cache"; import Link from "next/link"; import { redirect } from "next/navigation"; import { TutorialForm } from "../_components/tutorial-form"; export const dynamic = "force-dynamic"; const ALLOWED_DISCORD_ID = "281113457833672706"; async function createTutorial(formData: FormData) { "use server"; const session = await auth(); if ( !session?.user?.discordId || session.user.discordId !== ALLOWED_DISCORD_ID ) { throw new Error("Non autorisé"); } const title = formData.get("title")?.toString().trim(); const categoryId = formData.get("categoryId")?.toString(); const difficulty = formData.get("difficulty")?.toString() || "Intermédiaire"; const readTime = formData.get("readTime")?.toString().trim(); const excerpt = formData.get("excerpt")?.toString().trim(); const content = formData.get("content")?.toString().trim(); if (!title || !categoryId || !content) { throw new Error("Titre, catégorie et contenu sont obligatoires."); } await addTutorial({ slug: generateSlug(title), title, categoryId, difficulty: difficulty as "Débutant" | "Intermédiaire" | "Avancé", readTime: readTime || "5 min", excerpt: excerpt || (content.length > 180 ? content.slice(0, 180) + "..." : content), content, }); revalidatePath("/dashboard"); revalidatePath("/"); redirect("/dashboard"); } export default async function NewTutorialPage() { const categories = await getAllCategories(); return (
Créez un nouveau tutoriel avec preview Markdown
⚠️ Vous devez d'abord créer au moins une catégorie
Gérer les catégories →