Guest User

Untitled

a guest
Oct 6th, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. const express = require("express");
  2. const path = require("path");
  3. const exphbs = require("express-handlebars");
  4. const bodyParser = require("body-parser");
  5. const mongoose = require("mongoose");
  6. const passport = require("passport");
  7. const Cpassport=require('./config/Cpassport');
  8.  
  9. const cookieParser = require("cookie-parser");
  10. const session = require("express-session");
  11. const methodOverride = require("method-override");
  12. const flash = require("express-flash");
  13. const mailer = require("express-mailer");
  14. //Handlebars helpers
  15. const {
  16. truncate,
  17. stripTags,
  18. formatDate,
  19. select,
  20. editIcon
  21. } = require("./helpers/hbs");
  22.  
  23.  
  24. var googleS = new passport.Passport();
  25.  
  26. var localS = new passport.Passport();
  27.  
  28. const app = express();
  29. //set static folder
  30.  
  31. app.use(express.static(path.join(__dirname, "public")));
  32.  
  33. //load keys
  34. const keys = require("./config/keys");
  35.  
  36. //Map global Promises
  37. mongoose.Promise = global.Promise;
  38.  
  39. //Mongoose Connection
  40.  
  41. mongoose
  42. .connect(keys.mongoURI)
  43. .then(() => console.log("MongoDB Connected"))
  44. .catch(err => console.log(err));
  45.  
  46. //load user model
  47. require("./models/User");
  48. //story model
  49. require("./models/Story");
  50.  
  51. //feedback model
  52. require("./models/Feedback");
  53.  
  54. //local strategy model
  55. require("./models/CUser");
  56.  
  57. //session
  58. app.use(cookieParser());
  59.  
  60. app.use(
  61. session({
  62. secret: "secret",
  63. resave: true,
  64. saveUninitialized: true
  65. })
  66. );
  67.  
  68. //passport config
  69. require("./config/passport")(googleS);
  70. require("./config/Cpassport")(localS);
  71.  
  72. //Passport Middleware
  73. app.use(passport.initialize());
  74. app.use(passport.session());
  75.  
  76.  
  77.  
  78. //flash middleware
  79. app.use(flash());
  80.  
  81. //set global variables
  82. app.use((req, res, next) => {
  83. res.locals.success_msg = req.flash("success_msg");
  84. res.locals.error_msg = req.flash("error_msg");
  85. res.locals.error = req.flash("error");
  86. res.locals.user = req.user || null;
  87. // res.locals.userr = req.userr || null;
  88.  
  89.  
  90. console.log("this is requested user");
  91. console.log(res.locals.user);
  92. // console.log(res.locals.userr);
  93.  
  94. next();
  95. });
  96.  
  97. // Load Routes
  98. const auth = require("./routes/auth");
  99. const index = require("./routes/index");
  100. const stories = require("./routes/stories");
  101. const mailOptions = require("./helper/mailer");
  102.  
  103. //body-parser middleware
  104. app.use(bodyParser.urlencoded({ extended: false }));
  105. app.use(bodyParser.json());
  106.  
  107. //method overriding body parser
  108. app.use(methodOverride("_method"));
  109.  
  110. //mailer
  111. mailer.extend(app, {
  112. from: "Belle Solutions",
  113. host: "smtp.gmail.com",
  114. secureConnection: true,
  115. port: 465,
  116. transportMethod: "SMTP",
  117. auth: {
  118. user: keys.email,
  119. pass: keys.pass
  120. }
  121. });
  122.  
  123. //handlebars
  124. app.engine(
  125. "handlebars",
  126. exphbs({
  127. helpers: {
  128. truncate: truncate,
  129. stripTags: stripTags,
  130. formatDate: formatDate,
  131. select: select,
  132. editIcon: editIcon
  133. },
  134.  
  135. defaultLayout: "main"
  136. })
  137. );
  138.  
  139.  
  140.  
  141. // app.get('*' , function(req ,res ,next){
  142. // res.locals.user=req.user || null;
  143. // console.log(req.user);
  144. // console.log('printing user');
  145. // console.log(res.locals.user);
  146.  
  147. // next();
  148. // })
  149.  
  150.  
  151.  
  152.  
  153. app.set("view engine", "handlebars");
  154.  
  155. //use routes
  156. app.use("/auth", auth);
  157. app.use("/", index);
  158. app.use("/stories", stories);
  159.  
  160. const port = process.env.PORT || 5000;
  161.  
  162. app.listen(port, () => {
  163. console.log(`Server started on port ${port}`);
  164. });
  165.  
  166. const GoogleStrategy=require('passport-google-oauth20').Strategy;
  167. const mongoose = require('mongoose');
  168. const keys = require('./keys');
  169. const passport = require('passport');
  170.  
  171. const User =mongoose.model('users');
  172.  
  173. module.exports=function(googleS){
  174.  
  175. googleS.use(
  176. new GoogleStrategy({
  177. clientID:keys.googleClientID,
  178. clientSecret:keys.googleClientSecret,
  179. callbackURL:'/auth/google/callback',
  180. proxy:true
  181. },(accessToken,refreshToken,profile,done)=>{
  182.  
  183. // console.log("This is access token......................................................");
  184. // console.log(accessToken);
  185. // console.log("This is profile...............................");
  186. // console.log(profile);
  187. const image = profile.photos[0].value.substring(0, profile.photos[0].value.indexOf('?'));
  188.  
  189. const newUser = {
  190. googleID:profile.id,
  191. firstName:profile.name.givenName,
  192. lastName:profile.name.familyName,
  193. email:profile.emails[0].value,
  194. image:image
  195. }
  196.  
  197. //check for existing model
  198. User.findOne({
  199. googleID:profile.id
  200. }).then( user=>{
  201.  
  202. if(user){
  203. done(null,user);
  204. }else{
  205.  
  206. new User(newUser)
  207. .save()
  208. .then(user => done(null,user));
  209.  
  210. }
  211.  
  212.  
  213. } )
  214.  
  215. })
  216. )
  217.  
  218.  
  219. passport.serializeUser( (user,done)=>{
  220. console.log("in serialize of oauth.............")
  221. done(null,user.id);
  222. } );
  223.  
  224. passport.deserializeUser( (id,done)=>{
  225. console.log("in deserialize of oauth.....................")
  226. User.findById(id).then(user =>done(null,user));
  227.  
  228. } );
  229.  
  230. }
  231.  
  232. const LocalStrategy=require('passport-local').Strategy;
  233. const mongoose = require('mongoose');
  234. const bcrypt=require('bcryptjs');
  235. const passport=require('passport');
  236. //const User =require('../models/CUser')
  237. //Load user Model
  238. const Strategy =require('../app');
  239.  
  240. var local=Strategy.localS;
  241.  
  242.  
  243.  
  244.  
  245. require('../models/CUser');
  246. const CUser = mongoose.model('CUsers');
  247.  
  248.  
  249. module.exports=function(localC){
  250. console.log(localC)
  251. //local Strategy
  252. console.log("inside passport...........");
  253. console.log(local);
  254.  
  255. localC.use(
  256. new LocalStrategy({
  257. usernameField:'email'},(email,password,done)=>{
  258. //match usernaame
  259. console.log(email);
  260. console.log(password)
  261. let query ={email:email};
  262.  
  263. CUser.findOne(query , function(err,user){
  264. console.log("Before error")
  265. if(err) throw err;
  266. if(!user){
  267.  
  268. return done(null,false,{message:'No user Found'});
  269.  
  270. }
  271.  
  272. bcrypt.compare(password,user.password,function(err,isMatch){
  273. console.log("In compare function......")
  274. if(err) throw err;
  275. if(isMatch){
  276.  
  277. console.log("here......")
  278. console.log(user)
  279. return done(null,user);
  280.  
  281. }else{
  282. return done(null,false,{message:'Wrong password'})
  283. }
  284.  
  285. })
  286.  
  287. })
  288.  
  289.  
  290.  
  291. }))
  292.  
  293.  
  294. passport.serializeUser(function(user, done) {
  295. console.log("in serialize of local strategy............")
  296. done(null, user.id);
  297. });
  298.  
  299.  
  300. passport.deserializeUser(function(id, done) {
  301. console.log("in deserialize og local strategy........")
  302. CUser.findById(id, function(err, user) {
  303. done(err, user);
  304. });
  305. });
  306.  
  307.  
  308. }
Add Comment
Please, Sign In to add comment