2020-08-17 16:54:43 +02:00
|
|
|
let express = require("express");
|
|
|
|
let router = express.Router();
|
|
|
|
let models = require("../models");
|
2020-08-20 12:14:38 +02:00
|
|
|
let error = require("./utils/error");
|
2020-08-17 16:54:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
router.get("/", async (req, res) => {
|
|
|
|
if (req.session.user)
|
|
|
|
res.redirect("/");
|
|
|
|
else
|
2020-08-17 19:13:00 +02:00
|
|
|
res.render("register", {title: "SOD - register", departments: await models.Department.findAll()});
|
2020-08-17 16:54:43 +02:00
|
|
|
})
|
|
|
|
.post("/", async (req, res) => {
|
|
|
|
if (!req.body.username || !req.body.email || !req.body.firstName || !req.body.lastName ||
|
|
|
|
!req.body.department || !req.body.password)
|
2020-08-20 12:14:38 +02:00
|
|
|
return error(req, res, "", 400, "Missing args");
|
|
|
|
|
|
|
|
if (await models.User.findByPk(req.body.username))
|
|
|
|
return error(req, res, "Invalid register !", 400, "Username already taken");
|
|
|
|
|
|
|
|
if (await models.User.findOne({where: {firstName: req.body.firstName,
|
2020-08-17 16:54:43 +02:00
|
|
|
lastName: req.body.lastName}}))
|
2020-08-20 12:14:38 +02:00
|
|
|
return error(req, res, "Invalid register !", 400, "First & last name already register");
|
|
|
|
|
|
|
|
if (await models.User.findOne({where: {email: req.body.email}}))
|
|
|
|
return error(req, res, "Invalid register !", 400, "Email already used");
|
|
|
|
|
|
|
|
let department = await models.Department.findByPk(req.body.department);
|
|
|
|
if (!department)
|
|
|
|
return error(req, res, "Invalid register !", 400, "Invalid department");
|
|
|
|
|
|
|
|
try {
|
|
|
|
let user = await models.User.create({
|
|
|
|
username: req.body.username,
|
|
|
|
email: req.body.email,
|
|
|
|
firstName: req.body.firstName,
|
|
|
|
lastName: req.body.lastName,
|
|
|
|
passwordHash: req.body.password
|
|
|
|
});
|
|
|
|
|
|
|
|
await user.setDepartment(department);
|
|
|
|
req.session.user = user;
|
|
|
|
res.redirect("/");
|
|
|
|
for (let c of await models.Order.findAll({where: {
|
|
|
|
firstName: user.firstName,
|
|
|
|
lastName: user.lastName,
|
|
|
|
UserUsername: null
|
|
|
|
}}))
|
|
|
|
await c.setUser(user);
|
|
|
|
} catch (e) {
|
|
|
|
error(req, res, "Registration fail !");
|
|
|
|
throw e;
|
2020-08-17 16:54:43 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = router;
|