This commit is contained in:
srgooglo 2022-03-14 18:44:35 +01:00
parent cde9caa24b
commit 1fbaef76a9

View File

@ -1,11 +1,9 @@
import { ComplexController } from "linebridge/dist/classes" import { ComplexController } from "linebridge/dist/classes"
import passport from "passport" import passport from "passport"
import bcrypt from "bcrypt"
import { User } from "../../models" import { User } from "../../models"
import { Token, Schematized, createUser } from "../../lib"
import SessionController from "../SessionController" import SessionController from "../SessionController"
import { Token, Schematized } from "../../lib"
import AvatarController from "dicebar_lib"
import _ from "lodash" import _ from "lodash"
const AllowedUserUpdateKeys = [ const AllowedUserUpdateKeys = [
@ -20,6 +18,13 @@ export default class UserController extends ComplexController {
static refName = "UserController" static refName = "UserController"
methods = { methods = {
createNew: async (payload) => {
const user = await createUser(payload)
// maybe for the future can implement a event listener for this
return user
},
update: async (payload) => { update: async (payload) => {
if (typeof payload.user_id === "undefined") { if (typeof payload.user_id === "undefined") {
throw new Error("No user_id provided") throw new Error("No user_id provided")
@ -171,33 +176,16 @@ export default class UserController extends ComplexController {
return SessionController.delete(req, res, next) return SessionController.delete(req, res, next)
}, },
}, },
"/register": async (req, res) => { "/register": Schematized({
User.findOne({ username: req.body.username }) required: ["username", "email", "password"],
.then((data) => { select: ["username", "email", "password", "fullName"],
if (data) { }, async (req, res) => {
return res.status(409).json("Username is already exists") const result = await this.methods.createNew(req.selection).catch((err) => {
} return res.status(500).json(err.message)
})
const avatar = AvatarController.generate({ seed: req.body.username, type: "initials" }) return res.json(result)
const hash = bcrypt.hashSync(req.body.password, parseInt(process.env.BCRYPT_ROUNDS)) }),
let document = new User({
username: req.body.username,
fullName: req.body.fullName,
avatar: avatar.uri,
email: req.body.email,
password: hash
})
return document.save()
})
.then(data => {
return res.send(data)
})
.catch(err => {
return res.json(err)
})
},
"/update_user": { "/update_user": {
middlewares: ["withAuthentication", "roles"], middlewares: ["withAuthentication", "roles"],
fn: Schematized({ fn: Schematized({