ChatHistory behaved like controller already, renamed.

This commit is contained in:
2021-01-16 14:23:02 +01:00
parent 54c6c0eb97
commit 5e06a3fc28
3 changed files with 135 additions and 37 deletions

View File

@@ -8,19 +8,23 @@ const getAllHistory = (req, res) => {
return history(page, limit) return history(page, limit)
.then(messages => res.json(messages)) .then(messages => res.json(messages))
.catch(error => res.status(500).json({ .catch(error =>
message: error.message, res.status(500).json({
success: false message: error.message,
})); success: false
})
);
}; };
const deleteHistory = (req, res) => { const deleteHistory = (req, res) => {
return clearHistory() return clearHistory()
.then(message => res.json(message)) .then(message => res.json(message))
.catch(error => res.status(500).json({ .catch(error =>
message: error.message, res.status(500).json({
success: false message: error.message,
})); success: false
})
);
}; };
module.exports = { module.exports = {

View File

@@ -0,0 +1,49 @@
const path = require("path");
const userRepository = require(path.join(__dirname, "../user"));
function register(req, res, next) {
const { username, password } = req.body;
return userRepository
.register(username, password)
.then(user => userRepository.login(req, user))
.then(_ =>
res.send({
messsage: `Bruker registrert. Velkommen ${username}`,
success: true
})
)
.catch(error => {
const { statusCode, message } = error;
return res.status(statusCode || 500).send({
message: message || "Unable to sign in with given username and passowrd",
success: false
});
});
}
const login = (req, res, next) => {
return userRepository
.authenticate(req)
.then(user => userRepository.login(req, user))
.then(user => {
res.send({
message: `Velkommen ${user.username}`,
success: true
});
})
.catch(error => {
const { statusCode, message } = error;
return res.status(statusCode || 500).send({
message: message || "Unable to sign in with given username and passowrd",
success: false
});
});
};
module.exports = {
register,
login
};

View File

@@ -1,42 +1,86 @@
const passport = require("passport"); const passport = require("passport");
const path = require("path"); const path = require("path");
const User = require(path.join(__dirname, "/schemas/User")); const User = require(path.join(__dirname, "/schemas/User"));
const router = require("express").Router();
const register = (req, res, next) => { class UserExistsError extends Error {
User.register( constructor(message = "Username already exists.") {
new User({ username: req.body.username }), super(message);
req.body.password, this.name = "UserExists";
function(err) { this.statusCode = 409;
if (err) { }
if (err.name == "UserExistsError") }
res.status(409).send({ success: false, message: err.message })
else if (err.name == "MissingUsernameError" || err.name == "MissingPasswordError")
res.status(400).send({ success: false, message: err.message })
return next(err);
}
return res.status(200).send({ message: "Bruker registrert. Velkommen " + req.body.username, success: true }) class MissingUsernameError extends Error {
} constructor(message = "No username given.") {
); super(message);
this.name = "MissingUsernameError";
this.statusCode = 400;
}
}
class MissingPasswordError extends Error {
constructor(message = "No password given.") {
super(message);
this.name = "MissingPasswordError";
this.statusCode = 400;
}
}
class IncorrectUserCredentialsError extends Error {
constructor(message = "Incorrect username or password") {
super(message);
this.name = "IncorrectUserCredentialsError";
this.statusCode = 404;
}
}
function userAuthenticationErrorHandler(err) {
if (err.name == "UserExistsError") {
throw new UserExistsError(err.message);
} else if (err.name == "MissingUsernameError") {
throw new MissingUsernameError(err.message);
} else if (err.name == "MissingPasswordError") {
throw new MissingPasswordError(err.message);
}
throw err;
}
const register = (username, password) => {
return User.register(new User({ username: username }), password).catch(userAuthenticationErrorHandler);
}; };
const login = (req, res, next) => { const authenticate = req => {
passport.authenticate("local", function(err, user, info) { return new Promise((resolve, reject) => {
if (err) { const { username, password } = req.body;
if (err.name == "MissingUsernameError" || err.name == "MissingPasswordError")
return res.status(400).send({ message: err.message, success: false })
return next(err);
}
if (!user) return res.status(404).send({ message: "Incorrect username or password", success: false }) if (username == undefined) throw new MissingUsernameError();
if (password == undefined) throw new MissingPasswordError();
req.logIn(user, (err) => { passport.authenticate("local", function(err, user, info) {
if (err) { return next(err) } if (err) {
reject(err);
}
return res.status(200).send({ message: "Velkommen " + user.username, success: true }) if (!user) {
}) reject(new IncorrectUserCredentialsError());
})(req, res, next); }
resolve(user);
})(req);
});
};
const login = (req, user) => {
return new Promise((resolve, reject) => {
req.logIn(user, err => {
if (err) {
reject(err);
}
resolve(user);
});
});
}; };
const logout = (req, res) => { const logout = (req, res) => {
@@ -46,6 +90,7 @@ const logout = (req, res) => {
module.exports = { module.exports = {
register, register,
authenticate,
login, login,
logout logout
}; };