fixes to user registration

This commit is contained in:
SrGooglo 2024-02-19 18:59:37 +00:00
parent 3e6de98d10
commit 240d67fbfa
4 changed files with 17 additions and 5 deletions

View File

@ -27,7 +27,6 @@
"busboy": "^1.6.0", "busboy": "^1.6.0",
"connect-mongo": "^4.6.0", "connect-mongo": "^4.6.0",
"content-range": "^2.0.2", "content-range": "^2.0.2",
"dicebar_lib": "1.0.1",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"infisical-node": "^1.2.1", "infisical-node": "^1.2.1",
"jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.0",

View File

@ -10,11 +10,17 @@ export default {
select: ["username", "email", "password", "fullName"], select: ["username", "email", "password", "fullName"],
}, async (req, res) => { }, async (req, res) => {
const result = await createUser(req.selection).catch((err) => { const result = await createUser(req.selection).catch((err) => {
return res.status(500).json({ res.status(500).json({
message: `Error creating user > ${err.message}`, message: `Error creating user > ${err.message}`,
}) })
return false
}) })
if (!result) {
return false
}
return res.json(result) return res.json(result)
}) })
} }

View File

@ -1,10 +1,17 @@
import { User } from "@shared-classes/DbModels" import { User } from "@shared-classes/DbModels"
import Avatars from "dicebar_lib"
import bcrypt from "bcrypt" import bcrypt from "bcrypt"
export default async function (payload) { export default async function (payload) {
let { username, password, email, fullName, roles, avatar } = payload let { username, password, email, fullName, roles, avatar } = payload
if (username.length < 3) {
throw new Error("Username must be at least 3 characters")
}
if (username.length > 64) {
throw new Error("Username cannot be longer than 64 characters")
}
// if username has capital letters, throw error // if username has capital letters, throw error
if (username !== username.toLowerCase()) { if (username !== username.toLowerCase()) {
throw new Error("Username must be lowercase") throw new Error("Username must be lowercase")
@ -43,7 +50,7 @@ export default async function (payload) {
password: hash, password: hash,
email: email, email: email,
fullName: fullName, fullName: fullName,
avatar: avatar ?? Avatars.generate({ seed: username, type: "initials" }).uri, avatar: avatar ?? `https://api.dicebear.com/7.x/thumbs/svg?seed=${username}`,
roles: roles, roles: roles,
createdAt: new Date().getTime(), createdAt: new Date().getTime(),
}) })

View File

@ -1,4 +1,4 @@
global.FORCE_ENV = "prod" global.FORCE_ENV = "dev"
import Boot from "linebridge/bootstrap" import Boot from "linebridge/bootstrap"
import { Server } from "linebridge/dist/server" import { Server } from "linebridge/dist/server"