Untitled
unknown
javascript
a year ago
2.7 kB
6
Indexable
const router = require("express").Router();
const bcrypt = require("bcryptjs");
const User = require("../../../../database/models/User");
router.post("/", async (req, res) => {
const { username, password } = req.body;
// username checks
if (!/^[a-z0-9]+$/i.test(username)) return res.status(200).json({
success: false,
error: {
name: "username",
error: "Your username must only contain alphanumeric characters."
}
});
if (username.length < 4) return res.status(200).json({
success: false,
error: {
name: "username",
error: "Your username must be at least 4 characters long."
}
});
User.findOne({ username: username }).then(user => {
if (user) {
return res.status(200).json({
success: false,
error: {
name: "username",
error: "That username is already taken."
}
});
}
// password checks
if (password.length < 6) {
return res.status(200).json({
success: false,
error: {
name: "password",
error: "Your password must be at least 6 characters long."
}
});
}
// hash password and insert user into database
bcrypt.genSalt(10, async (err, salt) => {
if (err) return res.status(200).json({
success: false,
error: {
name: "password",
error: err.message
}
});
bcrypt.hash(password, salt, async (err, hash) => {
if (err) return res.status(200).json({
success: false,
error: {
name: "password",
error: err.message
}
});
const time = Math.floor(new Date().getTime() / 1000);
const user = {
username: username,
password: hash,
membership: 0,
role: 0,
total_queries: 0,
time_created: time,
last_updated: time
};
const result = new User(user);
await result.save();
return res.status(200).json({
success: true
});
});
});
});
});
module.exports = router;
Editor is loading...
Leave a Comment