46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { weirdToNormalChars as w2nc } from "weird-to-normal-chars";
|
|
import crypto from "crypto";
|
|
import { usernameRegex } from "@server/constants";
|
|
import { User } from "@models/user";
|
|
import mongoose from "mongoose";
|
|
import captcha from "@server/middlewareButNotReally/captcha";
|
|
|
|
export default eventHandler(async (event) => {
|
|
const body = await readBody(event);
|
|
console.log(typeof body);
|
|
console.log(body);
|
|
if (!body.username || !body.password || !body.email) {
|
|
throw createError({ statusCode: 400 });
|
|
}
|
|
await captcha(event);
|
|
console.log("fields exist");
|
|
const user = await User.findOne({
|
|
$or: [
|
|
{ username: usernameRegex(body.username) },
|
|
{ email: (body.email as string).toLowerCase() },
|
|
],
|
|
});
|
|
console.log("after f0", user);
|
|
if (user)
|
|
throw createError({
|
|
statusCode: 400,
|
|
message: "A user with that username or email already exists.",
|
|
});
|
|
let nuser = new User({
|
|
email: body.email.toLowerCase(),
|
|
username: w2nc(body.username.trim()),
|
|
password: User.generateHash(body.password),
|
|
auth: {
|
|
activationKey: crypto.randomBytes(256).toString("hex"),
|
|
emailVerified: false,
|
|
},
|
|
});
|
|
console.log("nu", nuser);
|
|
console.log("nnibg", mongoose.connections);
|
|
await nuser.save();
|
|
console.log("savey", await nuser.save());
|
|
return {
|
|
success: true,
|
|
};
|
|
});
|