Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const mongoose = require('mongoose');
- const bodyParser = require('body-parser');
- const passport = require('passport');
- const LocalStrategy = require('passport-local').Strategy;
- const port = 3001;
- const Book = require('./models/Book.js');
- const User = require('./models/User.js');
- const session = require('express-session');
- const cors = require('cors');
- const corsOptions ={
- origin:'http://localhost:3000',
- credentials:true,
- optionSuccessStatus:200
- }
- passport.use(new LocalStrategy(
- function(username, password, cb) {
- User.findOne({username}, function(err, user) {
- if (err) { return cb(err); }
- if (!user) {
- console.log('Invalid username')
- return cb(null, false);
- }
- if (user.password != password) {
- console.log(user.password);
- console.log(password);
- console.log('Invalid password');
- return cb(null, false);
- }
- return cb(null, user);
- });
- }));
- passport.serializeUser(function(user, cb) {
- cb(null, user.username);
- });
- passport.deserializeUser(function(username, cb) {
- User.findOne({username}, function (err, user) {
- if (err) { return cb(err); }
- console.log(user);
- cb(null, user);
- });
- });
- const app = express();
- app.use(cors(corsOptions));
- app.use(express.json());
- app.use(express.urlencoded({ extended: false }));
- app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
- app.use(passport.initialize());
- app.use(passport.session());
- mongoose.connect('mongodb://localhost/book-library', {useNewUrlParser: true, useUnifiedTopology: true});
- const db = mongoose.connection;
- db.on('error', console.error.bind(console, 'connection error:'));
- db.once('open', function() {
- console.log('DB connected');
- });
- app.post('/api/add-book', (req, res) => {
- res.header('Access-Control-Allow-Origin', '*');
- res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
- const book = new Book({name: req.body.name, author: req.body.author})
- book.save(function (err) {
- if (err) return console.error(err);
- else res.send('Succesfull');
- });
- })
- app.get('/api/get-books', async (req, res) => {
- res.header('Access-Control-Allow-Origin', '*');
- res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
- await Book.find((err, data) => {
- if(err) res.json(err);
- res.json({items: data});
- });
- })
- app.post('/api/register-account', (req, res) => {
- res.header('Access-Control-Allow-Origin', '*');
- res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');
- const user = new User({username: req.body.username, password: req.body.password})
- user.save(function (err) {
- if (err) return console.error(err);
- else res.send('Succesfull! Account saved!');
- });
- })
- app.post('/api/login', passport.authenticate('local', {failureRedirect: '/login'}), function (req, res) {
- console.log('Succesfull')
- // console.log(req.user);
- // res.redirect('/')
- res.send('Ok');
- })
- app.get('/api/me', function (req, res) {
- // console.log(req.user);
- res.json({user: req.user});
- })
- app.listen(port, () => {
- console.log('Server has been started');
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement