ChatHistory behaved like controller already, renamed.
This commit is contained in:
		| @@ -8,19 +8,23 @@ const getAllHistory = (req, res) => { | ||||
| 
 | ||||
|   return history(page, limit) | ||||
|     .then(messages => res.json(messages)) | ||||
|     .catch(error =>  res.status(500).json({ | ||||
|       message: error.message, | ||||
|       success: false | ||||
|     })); | ||||
|     .catch(error => | ||||
|       res.status(500).json({ | ||||
|         message: error.message, | ||||
|         success: false | ||||
|       }) | ||||
|     ); | ||||
| }; | ||||
| 
 | ||||
| const deleteHistory = (req, res) => { | ||||
|   return clearHistory() | ||||
|     .then(message => res.json(message)) | ||||
|     .catch(error => res.status(500).json({ | ||||
|       message: error.message, | ||||
|       success: false | ||||
|     })); | ||||
|     .catch(error => | ||||
|       res.status(500).json({ | ||||
|         message: error.message, | ||||
|         success: false | ||||
|       }) | ||||
|     ); | ||||
| }; | ||||
| 
 | ||||
| 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 path = require("path"); | ||||
| const User = require(path.join(__dirname, "/schemas/User")); | ||||
| const router = require("express").Router(); | ||||
|  | ||||
| const register = (req, res, next) => { | ||||
|   User.register( | ||||
|     new User({ username: req.body.username }), | ||||
|     req.body.password, | ||||
|     function(err) { | ||||
|       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); | ||||
|       } | ||||
| class UserExistsError extends Error { | ||||
|   constructor(message = "Username already exists.") { | ||||
|     super(message); | ||||
|     this.name = "UserExists"; | ||||
|     this.statusCode = 409; | ||||
|   } | ||||
| } | ||||
|  | ||||
|       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) => { | ||||
|   passport.authenticate("local", function(err, user, info) { | ||||
|     if (err) { | ||||
|       if (err.name == "MissingUsernameError" || err.name == "MissingPasswordError") | ||||
|         return res.status(400).send({ message: err.message, success: false }) | ||||
|       return next(err); | ||||
|     } | ||||
| const authenticate = req => { | ||||
|   return new Promise((resolve, reject) => { | ||||
|     const { username, password } = req.body; | ||||
|  | ||||
|     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) => { | ||||
|       if (err) { return next(err) } | ||||
|     passport.authenticate("local", function(err, user, info) { | ||||
|       if (err) { | ||||
|         reject(err); | ||||
|       } | ||||
|  | ||||
|       return res.status(200).send({ message: "Velkommen " + user.username, success: true }) | ||||
|     }) | ||||
|   })(req, res, next); | ||||
|       if (!user) { | ||||
|         reject(new IncorrectUserCredentialsError()); | ||||
|       } | ||||
|  | ||||
|       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) => { | ||||
| @@ -46,6 +90,7 @@ const logout = (req, res) => { | ||||
|  | ||||
| module.exports = { | ||||
|   register, | ||||
|   authenticate, | ||||
|   login, | ||||
|   logout | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user