#How to set cookies in Next.js 13 App router API routes?
3 messages · Page 1 of 1 (latest)
Here's my code for that:
import bcrypt from "bcryptjs";
import { NextResponse } from "next/server";
import { prisma } from "~/prisma/db";
import { User } from "~/providers/auth";
export type SignUpResponse = {
user: User;
message: string;
};
export async function POST(req: Request) {
try {
const { email, password } = await req.json();
const prevUser = await prisma.user.findUnique({
where: { email },
});
if (prevUser) return NextResponse.json({ message: "Email already in use" }, { status: 409 });
const hashedPassword = await bcrypt.hash(password, 12);
const user = await prisma.user.create({
data: { email, password: hashedPassword },
select: { id: true, email: true },
});
// 👉 set cookie over here
// how is that done?
return NextResponse.json({
user,
message: "Your account has been created!",
} satisfies SignUpResponse);
} catch (err) {
if (err instanceof Error) {
return NextResponse.json({ message: err.message }, { status: 500 });
}
}
}
I tried this:
NextResponse.next().cookies.set({ ... })
But unfortunately, this is only for middleware 😅