diff --git a/packages/server/src/lib/createUser/index.js b/packages/server/src/lib/createUser/index.js new file mode 100644 index 00000000..bec0113f --- /dev/null +++ b/packages/server/src/lib/createUser/index.js @@ -0,0 +1,28 @@ +import { User } from "../../models" +import Avatars from "dicebar_lib" +import bcrypt from "bcrypt" + +export default async function (payload) { + let { username, password, email, fullName, roles, avatar } = payload + + const existentUser = await User.findOne({ username: username }) + + if (existentUser) { + throw new Error("User already exists") + } + + const hash = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_ROUNDS ?? 3)) + + let user = new User({ + username: username, + password: hash, + email: email, + fullName: fullName, + avatar: avatar ?? Avatars.generate({ seed: username, type: "initials" }).uri, + roles: roles, + }) + + user.save() + + return user +} \ No newline at end of file diff --git a/packages/server/src/lib/index.js b/packages/server/src/lib/index.js index 39ac6379..7ca29d87 100644 --- a/packages/server/src/lib/index.js +++ b/packages/server/src/lib/index.js @@ -1,3 +1,5 @@ -export * as Token from './token' -export { default as Schematized } from './schematized' -export { default as additionsHandler } from './additionsHandler' \ No newline at end of file +export { default as Schematized } from "./schematized" +export { default as additionsHandler } from "./additionsHandler" +export { default as createUser } from "./createUser" + +export * as Token from "./token" \ No newline at end of file