Advertisement
Guest User

Server.js

a guest
Apr 26th, 2021
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const express = require('express');
  2. const mongoose = require('mongoose');
  3. const bodyParser = require('body-parser');
  4. const passport = require('passport');
  5. const LocalStrategy = require('passport-local').Strategy;
  6. const port = 3001;
  7. const Book = require('./models/Book.js');
  8. const User = require('./models/User.js');
  9. const session = require('express-session');
  10.  
  11. const cors = require('cors');
  12. const corsOptions ={
  13.   origin:'http://localhost:3000',
  14.   credentials:true,
  15.   optionSuccessStatus:200
  16. }
  17.  
  18. passport.use(new LocalStrategy(
  19.     function(username, password, cb) {
  20.       User.findOne({username}, function(err, user) {
  21.         if (err) { return cb(err); }
  22.         if (!user) {
  23.           console.log('Invalid username')
  24.           return cb(null, false);
  25.         }
  26.         if (user.password != password) {
  27.           console.log(user.password);
  28.           console.log(password);
  29.           console.log('Invalid password');
  30.           return cb(null, false);
  31.         }
  32.         return cb(null, user);
  33.       });
  34.     }));
  35.  
  36.  
  37. passport.serializeUser(function(user, cb) {
  38.   cb(null, user.username);
  39. });
  40.  
  41. passport.deserializeUser(function(username, cb) {
  42.   User.findOne({username}, function (err, user) {
  43.     if (err) { return cb(err); }
  44.     console.log(user);
  45.     cb(null, user);
  46.   });
  47. });
  48.  
  49. const app = express();
  50. app.use(cors(corsOptions));
  51. app.use(express.json());
  52. app.use(express.urlencoded({ extended: false }));
  53. app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false  }));
  54.  
  55. app.use(passport.initialize());
  56. app.use(passport.session());
  57.  
  58. mongoose.connect('mongodb://localhost/book-library', {useNewUrlParser: true, useUnifiedTopology: true});
  59.  
  60. const db = mongoose.connection;
  61. db.on('error', console.error.bind(console, 'connection error:'));
  62. db.once('open', function() {
  63.   console.log('DB connected');
  64. });
  65.  
  66. app.post('/api/add-book', (req, res) => {
  67.   res.header('Access-Control-Allow-Origin', '*');
  68.   res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
  69.   const book = new Book({name: req.body.name, author: req.body.author})
  70.   book.save(function (err) {
  71.     if (err) return console.error(err);
  72.     else res.send('Succesfull');
  73.   });
  74. })
  75.  
  76. app.get('/api/get-books', async (req, res) => {
  77.   res.header('Access-Control-Allow-Origin', '*');
  78.   res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
  79.   await Book.find((err, data) => {
  80.     if(err) res.json(err);
  81.     res.json({items: data});
  82.   });
  83. })
  84.  
  85. app.post('/api/register-account', (req, res) => {
  86.   res.header('Access-Control-Allow-Origin', '*');
  87.   res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
  88.   const user = new User({username: req.body.username, password: req.body.password})
  89.   user.save(function (err) {
  90.     if (err) return console.error(err);
  91.     else res.send('Succesfull! Account saved!');
  92.   });
  93. })
  94.  
  95. app.post('/api/login', passport.authenticate('local', {failureRedirect: '/login'}), function (req, res) {
  96.   console.log('Succesfull')
  97.   // console.log(req.user);
  98.   // res.redirect('/')
  99.   res.send('Ok');
  100. })
  101.  
  102. app.get('/api/me', function (req, res) {
  103.   // console.log(req.user);
  104.   res.json({user: req.user});
  105. })
  106.  
  107. app.listen(port, () => {
  108.   console.log('Server has been started');
  109. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement