ChatHistory behaved like controller already, renamed.
This commit is contained in:
@@ -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 = {
|
||||||
49
api/controllers/userController.js
Normal file
49
api/controllers/userController.js
Normal 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
|
||||||
|
};
|
||||||
103
api/user.js
103
api/user.js
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user