2024-09-27 23:41:47 +00:00
|
|
|
const express = require('express');
|
|
|
|
const router = express.Router();
|
|
|
|
|
2024-09-29 11:49:28 +00:00
|
|
|
|
|
|
|
const bcrypt = require('bcryptjs');
|
2024-10-09 13:43:58 +00:00
|
|
|
const rateLimitMiddleware = require("../services/rate-limiter");
|
2024-09-29 11:49:28 +00:00
|
|
|
|
2024-10-09 13:43:58 +00:00
|
|
|
const { isAdmin } = require('../services/middleware');
|
2024-09-27 23:41:47 +00:00
|
|
|
const User = require("../models/User");
|
|
|
|
|
2024-09-29 11:49:28 +00:00
|
|
|
router.post('/register', rateLimitMiddleware, (req, res) => {
|
|
|
|
User.findOne({admin: true}).then((data) => {
|
|
|
|
if(!data) {
|
|
|
|
User.findOne({username: username}).then((user) => {
|
|
|
|
if(user){
|
|
|
|
res.json({
|
|
|
|
error: true,
|
|
|
|
msg: "already-exists"
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
User.findOne({email: email}).then((user) => {
|
|
|
|
if(user){
|
|
|
|
res.json({
|
|
|
|
error: true,
|
|
|
|
msg: "already-email"
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
var user = new User({
|
|
|
|
name: name,
|
|
|
|
username: username,
|
|
|
|
password: password,
|
|
|
|
email: email,
|
|
|
|
admin: true
|
|
|
|
});
|
|
|
|
|
|
|
|
bcrypt.genSalt(10, (err, salt) => {
|
|
|
|
bcrypt.hash(user.password, salt, (err, hash) => {
|
|
|
|
if(err) throw err;
|
|
|
|
user.password = hash;
|
|
|
|
user.save().then(user => {
|
|
|
|
res.json({
|
|
|
|
success: true
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}).catch((error) => { res.json({ error: true }); return; });
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}).catch((error) => { res.json({ error: true, msg: "Hi ha hagut un error intern, prova-ho més tard" }); return; });
|
|
|
|
}
|
|
|
|
}).catch((error) => { res.json({ error: true, msg: "Hi ha hagut un error intern, prova-ho més tard" }); return; });
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
2024-09-27 23:41:47 +00:00
|
|
|
router.get('/users', isAdmin, (req, res) => {
|
|
|
|
User.find({}).then((users) => {
|
|
|
|
res.json({
|
|
|
|
users
|
|
|
|
});
|
|
|
|
});
|
|
|
|
})
|
|
|
|
|
|
|
|
module.exports = router;
|