Advertisement
Guest User

Untitled

a guest
Jan 28th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.74 KB | None | 0 0
  1. const express = require("express");
  2. const ejs = require("ejs")
  3. const bodyParser = require("body-parser");
  4. // const multer = require("multer");
  5. const mongoose = require("mongoose");
  6. const app = express();
  7.  
  8. const User = require("./database/models/user");
  9.  
  10.  
  11. const port = process.env.port || 3000;
  12.  
  13. /**********Express session*********/
  14. const expressSession = require("express-session");
  15. /**********************************/
  16. const passport = require("passport");
  17. const localStrategy = require("passport-local").Strategy;
  18.  
  19. mongoose.connect("mongodb://localhost/passport-ajax");
  20. //Make sure capital P for promise.
  21. mongoose.Promise = global.Promise;
  22.  
  23.  
  24.  
  25. app.use(bodyParser.urlencoded({extended : true}));
  26. app.use(bodyParser.json());
  27. // app.use(multer({dest : "./uploads"}));
  28.  
  29. app.use(expressSession({
  30. secret : "longString",
  31. resave:false,
  32. saveUninitialized: false
  33. }))
  34.  
  35.  
  36.  
  37. /********************Configure passport*************************/
  38.  
  39.  
  40. passport.use("login", new localStrategy({
  41. usernameField : "emailOrUsername",
  42. passwordField : "password",
  43. passReqToCallback : true
  44. },
  45. function(req, username, password, done){
  46. console.log("HIT HERE");
  47. User.findOne({emailOrUsername: username})
  48. .then((user)=>{
  49. console.log("FINDING!!");
  50. if(!user){
  51. console.log("My error: NO SUCH USER");
  52. return done(null, false, "No such user");
  53. }
  54. if(password !== user.password){
  55. console.log(`Password Doesnt Match`);
  56. done(null, false , "Passwords dont match");
  57. }
  58. console.log("USER MATCHED!!");
  59. done(null, user)
  60.  
  61. })
  62. .catch((err) => console.log(err));
  63. }
  64. ))
  65.  
  66. passport.use("signUp", new localStrategy({
  67. usernameField : "emailOrUsername",
  68. passwordField : "password",
  69. passReqToCallback : true
  70. },
  71. function(req, username, password, done){
  72. // Removing from the DB first so there won't be multiple records while testing.
  73. User.remove({})
  74. .then(() =>{
  75. User.findOne({emailOrUsername : username})
  76. .then((user) => {
  77. console.log("FINDING INSIDE SIGNUP");
  78. if(user){
  79. return done(null, false, "User "+ username + "allready exists. " );
  80. }
  81. var user = {
  82. emailOrUsername : username,
  83. password : password
  84. };
  85. new User(user).save()
  86. //possible do done(err)
  87. .then((newUser) =>{
  88. if(!newUser) return done("Failed On Create User");
  89. done(null, user)
  90. })
  91. })
  92. })
  93. .catch((err) => {
  94. console.log(err);
  95. })
  96. }
  97. ))
  98.  
  99. function verifyAuth(req, res, next){
  100. if(!req.isAuthenticated()){
  101. return res.status(401).json({
  102. err : "Please login correctly. You received a 401 error.",
  103. sesstionId : req.session.id
  104. })
  105. }
  106. next();
  107. }
  108. app.use(passport.initialize());
  109. app.use(passport.session());
  110.  
  111. passport.serializeUser(function(user, done){
  112. done(null, user.id);
  113. });
  114.  
  115. passport.deserializeUser(function(id, done){
  116. User.findById(id, function(err, user){
  117. done(err,user);
  118. })
  119. })
  120.  
  121. /**************************************************************/
  122.  
  123.  
  124. app.set("view engine", "ejs");
  125.  
  126. //file will be served like http://localhost:4000/style.css
  127. app.use(express.static(__dirname + "/public"));
  128.  
  129. app.get("/", (req, res) => {
  130. console.log("req.user : ", req.user);
  131. console.log("session: ", req.session);
  132. const authenticated = req.user ? true : false;
  133. var query = req.query.message;
  134. res.render("index", {
  135. query,
  136. authenticated
  137. })
  138. })
  139.  
  140. app.get("/signUp", (req, res) =>{
  141. res.render("signUp", {
  142. })
  143. })
  144.  
  145. app.post("/signUp", (req, res, next) => {
  146. // console.log(req.body);
  147.  
  148.  
  149. passport.authenticate("signUp", function(err, user, info){
  150. if(err) console.log(err, " authenticate Signup error! ");
  151. if(!user) console.log("USER ERROR!");
  152. req.login(user, function(err) {
  153. if(err) return err;
  154. console.log("req.login called!")
  155.  
  156. console.log("INFO, " , info)
  157. })
  158. // res.redirect("/");
  159. res.status(201).json({
  160. user : user,
  161. session : req.session,
  162. "req.user" : req.user // This is null right now.
  163. });
  164.  
  165. })(req, res, next)
  166. }, function(err, req, res, next){
  167. console.log("req.isAuthenticated() >", req.isAuthenticated());
  168. });
  169. app.get("/login", (req,res) =>{
  170. res.render("loginForm");
  171. });
  172.  
  173. app.post("/login", function(req, res, next) {
  174. console.log("req.body : ", req.body)
  175. passport.authenticate("login", function(err, user, info){
  176. console.log("inside authenticate");
  177. if(err) console.log(err, " ", req.session.id);
  178. if(!user) console.log("No user : ", info);
  179. req.login(user, function(err) { // need this when using custom function
  180. if(err) console.log(err);
  181. });
  182. res.status(201).json({
  183. user : user,
  184. session : req.session,
  185. "req.user" : req.user
  186. });
  187. })(req, res, next); // very import to call this self-executing function
  188. }, function(err, req, res, next){
  189. //possible function here
  190. });
  191.  
  192. app.get("/unProtected", (req, res) => {
  193. res.json({
  194. session : req.session,
  195. "req.user" : req.user
  196. })
  197. })
  198. app.get("/protected", verifyAuth, (req, res) =>{
  199. res.json({
  200. session : req.session,
  201. "req.user" : req.user
  202. });
  203. });
  204.  
  205.  
  206. app.listen(port, function(){
  207. console.log(`Listening on port ${port}`);
  208. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement