Guest User

Untitled

a guest
Nov 20th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. bcrypt.hash(newUser.password, salt, function(err, hash) {
  2.  
  3. let express = require("express");
  4. let router = express.Router();
  5. let mongojs = require("mongojs");
  6. let db = mongojs("carapp", ["users"]);
  7. let bcrypt = require("bcryptjs");
  8. let passport = require("passport");
  9. let LocalStrategy = require("passport-local").Strategy;
  10.  
  11. // login GET PAGE
  12. router.get("/login", function(req, res) {
  13. res.render("login");
  14. });
  15.  
  16. // Register GET PAGE
  17. router.get("/register", function(req, res) {
  18. res.render("register");
  19. });
  20. // Register POST
  21. router.post("/register", function(req, res) {
  22. let name = req.body.name;
  23. let email = req.body.email;
  24. let username = req.body.username;
  25. let password = req.body.password;
  26. let confirm_password = req.body.confirm_password;
  27.  
  28. // Validation
  29. req.checkBody("name", "Name field is required").notEmpty();
  30. req.checkBody("email", "Email field is required").notEmpty();
  31. req.checkBody("email", "Please use a Valid Email Address").isEmail();
  32. req.checkBody("username", "Username field is required").notEmpty();
  33. req.checkBody("password", "Password field is required").notEmpty();
  34. req.checkBody("confirm_password", "Passwords Do Not
  35. Match".equals(req.body.password);
  36.  
  37. // Check For Errors
  38.  
  39. let errors = req.validationErrors();
  40. if (errors) {
  41. console.log("Form has errors");
  42. res.render("register", {
  43. errors: errors,
  44. name: name,
  45. email: email,
  46. username: username,
  47. password: password,
  48. confirm_password: confirm_password
  49. });
  50. } else {
  51. let newUser = {
  52. name: name,
  53. email: email,
  54. username: username,
  55. password: password
  56. };
  57. }
  58.  
  59. bcrypt.genSalt(10, function(err, salt) {
  60. bcrypt.hash(newUser.password, salt, function(err, hash) {
  61. newUser.password = hash;
  62.  
  63. db.users.insert(newUser, function(err, doc) {
  64. if (err) {
  65. res.send(err);
  66. } else {
  67. console.log("User Added. Good JOB using MONGODB Matt!");
  68. req.flash("success", "You are registered and can log in");
  69. res.location("/");
  70. res.redirect("/");
  71. }
  72. });
  73. });
  74. });
  75.  
  76. passport.serializeUser(function(user, done) {
  77. done(null, user._id);
  78. });
  79.  
  80. passport.deserializeUser(function(id, done) {
  81. db.users.findOne({ _id: mongojs.OnjectId(id) }, function(err, user{
  82. done(err, user);
  83. });
  84. });
  85.  
  86. passport.use(
  87. new LocalStrategy(function(username, password, done) {
  88. db.users.findOne({ username: username }, function(err, user) {
  89. if (err) {
  90. return done(err);
  91. }
  92. if (!user) {
  93. return done(null, false, { message: "Incorrect Username" });
  94. }
  95.  
  96. bcrypt.compare(password, user.password, function(err, isMatch) {
  97. if (err) {
  98. return done(err);
  99. }
  100. if (isMatch) {
  101. return done(null, user);
  102. } else {
  103. return done(null, false, { message: "Incorrect Password" });
  104. }
  105. });
  106. });
  107. })
  108. );
  109.  
  110. // Login Post
  111. router.post("/login",passport.authenticate("local",{
  112. successRedirect: "/",
  113. failureRedirect: "/users/login",
  114. failureFlash: "Invalid Username or Password"
  115. } +
  116. function(req, res) {
  117. console.log("Auth Successful");
  118. res.redirect("/");
  119. }
  120. )
  121. );
  122. });
  123. module.exports = router; //brackets needed here
Add Comment
Please, Sign In to add comment