36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
const User = require('src/user/user');
|
|
const Token = require('src/user/token');
|
|
const UserSecurity = require('src/user/userSecurity');
|
|
const UserRepository = require('src/user/userRepository');
|
|
const configuration = require('src/config/configuration').getInstance();
|
|
|
|
const secret = configuration.get('authentication', 'secret');
|
|
const userSecurity = new UserSecurity();
|
|
const userRepository = new UserRepository();
|
|
|
|
/**
|
|
* Controller: Register a new user
|
|
* @param {Request} req http request variable
|
|
* @param {Response} res
|
|
* @returns {Callback}
|
|
*/
|
|
function registerController(req, res) {
|
|
const user = new User(req.body.username, req.body.email);
|
|
const password = req.body.password;
|
|
|
|
userSecurity.createNewUser(user, password)
|
|
.then(() => userRepository.checkAdmin(user))
|
|
.then(checkAdmin => {
|
|
const isAdmin = checkAdmin === 1 ? true : false;
|
|
const token = new Token(user, isAdmin).toString(secret);
|
|
res.send({
|
|
success: true, message: 'Welcome to Seasoned!', token
|
|
});
|
|
})
|
|
.catch(error => {
|
|
res.status(401).send({ success: false, message: error.message });
|
|
});
|
|
}
|
|
|
|
module.exports = registerController;
|