Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. import express from 'express';
  2. import cors from 'cors';
  3. import bodyParser from 'body-parser';
  4. import mongoose from 'mongoose';
  5. import key from './config/key';
  6. import session from 'express-session';
  7. import index from './routes/index';
  8. import users from './routes/users';
  9. import dreams from './routes/dreams';
  10. import cookieParse from 'cookie'
  11. const passport = require('passport');
  12. import flash from 'connect-flash';
  13. const cookieSession = require('cookie-session');
  14.  
  15.  
  16. //init express
  17. const app = express();
  18. require('./config/passport')(passport);
  19. const router = express.Router();
  20. const db = key.mongoURI;
  21.  
  22. app.use(cors());
  23. app.use(bodyParser.json());
  24.  
  25.  
  26.  
  27. app.use(session({
  28. secret: 'secret'
  29. }));
  30. // pasport middelware
  31. app.use(passport.initialize());
  32. app.use(passport.session());
  33. mongoose.connect(db)
  34. .then(() => console.log('mongoDB Connected...'))
  35. .catch(err => console.log(err));
  36.  
  37. // const connection = mongoose.connection;
  38. //
  39. // //establish mongoose connection
  40. // connection.once('open', () => {
  41. // console.log('MongoDB database connection established succesfully');
  42. // });
  43.  
  44.  
  45.  
  46.  
  47. //routes :
  48. app.use('/',index);
  49. app.use('/users', users);
  50. app.use('/dreams', dreams);
  51.  
  52. app.listen(4000, () => console.log('Express server running on port 4000'));
  53.  
  54. const LocalStrategy = require('passport-local').Strategy;
  55. import mongoose from 'mongoose';
  56. import bcrypt from 'bcryptjs';
  57.  
  58. import User from '../models/user'
  59.  
  60. // Load User Model
  61. module.exports = function (passport) {
  62. passport.use(
  63. new LocalStrategy({ usernameField: 'email'}, (email, password, done) =>{
  64. //Match User
  65. User.findOne({email: email})
  66. .then(user => {
  67. if(!user){
  68. return done(null, false, { message: 'That email is not registered'});
  69. }
  70. //Match password
  71. bcrypt.compare(password, user.password, (err, isMatch) => {
  72. if(err) throw err;
  73. if(isMatch){
  74. return done(null, user);
  75. }else{
  76. return done(null, false, {message: 'Password Incorrect'});
  77. }
  78. });
  79. })
  80. .catch(err => console.log(err));
  81. })
  82. );
  83. passport.serializeUser(function (user, done) {
  84. console.log(user);
  85. done(null, user.id);
  86. });
  87. passport.deserializeUser(function(id, done){
  88. User.findById(id, function (err, user) {
  89. done(err, user);
  90. })
  91. })
  92. };
  93.  
  94. import express from 'express';
  95. import User from '../models/user'
  96. import bcrypt from 'bcryptjs'
  97. import passport from 'passport';
  98. const app = express();
  99. const router = express.Router();
  100. const {ensureAuthenticated} = require('../config/auth');
  101.  
  102. //All users : DELETE THIS !!!
  103. router.get("/all", (req, res) => {
  104.  
  105. User.find((err, users) => {
  106. if (err)
  107. console.log(err);
  108. else
  109. res.json(users);
  110. });
  111. });
  112. //Login Page
  113. router.get("/login", (req, res) => res.status(401).send("wrong password"));
  114. router.get("/loggedIn",ensureAuthenticated, (req, res) => res.send(req.user.id));
  115. router.get("/login/error", (req, res) => res.send("error"));
  116. //Register Page
  117. router.get("/register", (req, res) => res.send("Register"));
  118.  
  119. //register Handle
  120. router.post('/register', (req, res) => {
  121. const {name, email, password, password2} = req.body;
  122. let errors = [];
  123. //check required fields
  124. if (!name || !email || !password || !password2) {
  125. errors.push({msg: 'Please fill in all fields'});
  126. }
  127. //check if passwords match
  128. if (password != password2) {
  129. errors.push({msg: 'Passwords do not match'});
  130. }
  131.  
  132. //check if passwords is at least 6 characters long
  133. if (password.length < 6) {
  134. errors.push({msg: 'Password should be at least 6 characters'});
  135. }
  136. if (errors.length > 0) {
  137. res.send({error: errors});
  138. } else {
  139. User.findOne({email: email})
  140. .then(user => {
  141. if (user) {
  142. errors.push({msg: "Email is already registered"});
  143. res.send({error: errors});
  144. } else {
  145. const newUser = new User({
  146. name,
  147. email,
  148. password
  149. });
  150. //hash password
  151. bcrypt.genSalt(10, (err, salt) =>
  152. bcrypt.hash(newUser.password, salt, (err, hash) => {
  153. if (err) throw err;
  154. //set password to hashed
  155. newUser.password = hash;
  156. newUser.save()
  157. .then(user => {
  158. res.redirect("/users/login");
  159. })
  160. .catch(err => console.log(err))
  161. }));
  162.  
  163. }
  164. });
  165.  
  166. }
  167. });
  168. //Login
  169. // Login
  170. router.post('/login', passport.authenticate('local'),
  171. function(req, res) {
  172. // If this function gets called, authentication was successful.
  173. // `req.user` contains the authenticated user.
  174. res.send(req.user);
  175. }
  176. );
  177. router.get('/logout', function(req, res){
  178. req.logout();
  179. res.redirect('/');
  180. });
  181. module.exports = router;
  182.  
  183. module.exports = {
  184. ensureAuthenticated: function(req, res, next) {
  185. console.log(req);
  186. if (req.isAuthenticated()) {
  187. return next();
  188. }
  189. res.send({msg: "not logged in"});
  190. }
  191. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement