Guest User

Untitled

a guest
Jun 20th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. const bodyParser = require("body-parser");
  2. const mongoose = require("mongoose");
  3. const User = require("../models/user.js");
  4. const bcrypt = require("bcrypt");
  5. const session = require("express-session");
  6. const cookieParser = require("cookie-parser");
  7.  
  8. //Connect to local mongo database
  9. mongoose.connect("mongodb://localhost/login");
  10.  
  11. module.exports = function loginController(app) {
  12.  
  13. //For HTML <form> submits, use bodyParser.urlencoded()
  14. //For FETCH API submits, use bodyParser.json()
  15.  
  16. //Handle Post Requests for registration
  17. app.post("/register", bodyParser.json(), function(req, res, next) {
  18. console.log(req.body);
  19.  
  20. //Check if passwords match
  21. if (req.body.password !== req.body.passwordConf) {
  22. console.log("Passwords dont match")
  23. return res.status(500).send({
  24. status: "Passwords dont match"
  25. });
  26. }
  27.  
  28. //Check if any POST field is empty
  29. if (req.body.email && req.body.username && req.body.password && req.body.passwordConf) { //all fields filled
  30. //Store the data in an object
  31. let newUser = new User({
  32. email: req.body.email,
  33. username: req.body.username,
  34. password: req.body.password,
  35. passwordConf: req.body.passwordConf
  36. });
  37.  
  38. //save data to database
  39. newUser.save(function(err, result) {
  40.  
  41. if (err) { //If error, return error
  42. console.log(err);
  43. if (err.name === 'MongoError' && err.code === 11000) {
  44. // Duplicate username
  45. return res.status(500).send({
  46. status: "User already exists"
  47. });
  48. }
  49. // Some other error
  50. return res.status(500).send(err);
  51.  
  52. } else { // Else send Success Message
  53. return res.status(200).json({
  54. status: "Success"
  55. });
  56. }
  57. })
  58.  
  59. } else { //fields missing - ERROR
  60. let err = new Error("All fields required");
  61. err.status = 400;
  62. return next(err);
  63. }
  64. })
  65.  
  66.  
  67. //Handle Post requests for login
  68. app.post("/login", bodyParser.json(), function(req, res, next) {
  69.  
  70.  
  71. //Check if any POST field is empty
  72. if (req.body.email && req.body.password) { //all fields filled
  73.  
  74. User.findOne({
  75. email: req.body.email
  76. }).then(function(user) {
  77.  
  78. if (user !== null) { //User exists
  79. bcrypt.compare(req.body.password, user.password, function(err, result) {
  80. if (result === true) { //Password is correct
  81. console.log("True: " + result);
  82. return res.status(200).json({
  83. status: "Password and user validated"
  84. });
  85. next();
  86. } else { //Password or user is incorecz
  87. console.log("Error" + err);
  88. return res.status(500).json({
  89. status: "Password or user invalid"
  90. });
  91. }
  92. })
  93. } else { //User does not exist
  94. return res.status(500).json({
  95. status: "Password or user invalid"
  96. });
  97. }
  98.  
  99. })
  100. }
  101. })
  102. }
  103.  
  104. const express = require("express");
  105. const app = express();
  106. const session = require("express-session");
  107. const morgan = require("morgan");
  108. const cookieParser = require("cookie-parser");
  109.  
  110.  
  111. //Console log HTTP reqs and sends
  112. app.use(morgan("dev"));
  113.  
  114. //Access cookie
  115. app.use(cookieParser());
  116.  
  117. //use sessions for tracking logins
  118. app.use(session({
  119. secret: 'Bingo Banana',
  120. resave: true,
  121. saveUninitialized: false,
  122. cookie: {
  123. maxAge: 6000
  124. }
  125. }))
  126.  
  127. //Require the controller
  128. const routes = require("./controllers/controller.js")
  129. routes(app);
  130.  
  131. //Show static folder
  132. app.use(express.static("./public"));
  133.  
  134. app.listen(3000);
  135. console.log("Now listening to port 3000");
Add Comment
Please, Sign In to add comment