52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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);
 | 
						|
      }
 | 
						|
 | 
						|
      return res.status(200).send({ message: "Bruker registrert. Velkommen " + req.body.username, success: true })
 | 
						|
     }
 | 
						|
  );
 | 
						|
};
 | 
						|
 | 
						|
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);
 | 
						|
    }
 | 
						|
 | 
						|
    if (!user) return res.status(404).send({ message: "Incorrect username or password", success: false })
 | 
						|
 | 
						|
    req.logIn(user, (err) => {
 | 
						|
      if (err) { return next(err) }
 | 
						|
 | 
						|
      return res.status(200).send({ message: "Velkommen " + user.username, success: true })
 | 
						|
    })
 | 
						|
  })(req, res, next);
 | 
						|
};
 | 
						|
 | 
						|
const logout = (req, res) => {
 | 
						|
  req.logout();
 | 
						|
  res.redirect("/");
 | 
						|
};
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  register,
 | 
						|
  login,
 | 
						|
  logout
 | 
						|
};
 |