© 2026 Hedgehog Software, LLC
import { User } from "~/models/user.model"; import rateLimit from "../../../server/middleware/rateLimit"; export default defineEventHandler(async (event) => { await rateLimit(event); const body = await readBody(event); const { username, email, password } = body; if (!username || !email || !password) { throw createError({ statusCode: 400, statusMessage: "Missing fields" }); } if (await User.exists({ $or: [{ username }, { email }] })) { throw createError({ statusCode: 409, statusMessage: "Username or email already exists", }); } const user = await User.create({ username, email, password, role: "user", }); return { status: "ok", user: { id: user._id, username: user.username, email: user.email }, }; });
curl -X POST http://localhost:3000/api/auth/register \ -H "Content-Type: application/json" \ -d '{"username":"sovereign","email":"[email protected]","password":"secret"}'