src/app/api/auth/client/reset-mdp/route.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
Concepts détectés — comprends la théorie
Route API Next.js
3 occurrencesCe fichier est une route API Next.js (App Router). Voir le contrat API complet pour les conventions de réponse et d'auth.
Voir l'article général
ORM Prisma
2 occurrencesCe fichier accède à la base de données via Prisma. Prisma est l'ORM utilisé côté backend pour les requêtes typées sur PostgreSQL.
Voir l'article général
1 export
POST
Code source· typescript
import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/prisma/client";
import { getSession } from "@/lib/auth/session";
import bcrypt from "bcryptjs";
export async function POST(req: NextRequest) {
try {
const session = await getSession();
if (!session || session.role !== "CLIENT") {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const { motDePasse } = await req.json();
if (!motDePasse || motDePasse.length < 8) {
return NextResponse.json({ error: "Mot de passe trop court (8 caractères min)" }, { status: 400 });
}
const hash = await bcrypt.hash(motDePasse, 10);
await prisma.clientAccount.update({
where: { id: session.userId },
data: { motDePasseHash: hash },
});
return NextResponse.json({ success: true });
} catch (error) {
console.error("reset-mdp error:", error);
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
}
import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/prisma/client";
import { getSession } from "@/lib/auth/session";
import bcrypt from "bcryptjs";
export async function POST(req: NextRequest) {
try {
const session = await getSession();
if (!session || session.role !== "CLIENT") {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const { motDePasse } = await req.json();
if (!motDePasse || motDePasse.length < 8) {
return NextResponse.json({ error: "Mot de passe trop court (8 caractères min)" }, { status: 400 });
}
const hash = await bcrypt.hash(motDePasse, 10);
await prisma.clientAccount.update({
where: { id: session.userId },
data: { motDePasseHash: hash },
});
return NextResponse.json({ success: true });
} catch (error) {
console.error("reset-mdp error:", error);
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
}