prf/server/index.js
Norbi Peti 91f599645b
Routing/menü fejlesztés, SPA fix
- Logout hozzáadva
- Read only lista kijelentkezve
2023-05-07 21:58:00 +02:00

75 lines
2.3 KiB
JavaScript

const express = require('express');
const mongoose = require('mongoose');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const expressSession = require('express-session');
const app = express();
mongoose.connect(`mongodb://${process.env.DBHOST ?? 'localhost'}:27017/cheesecrescent`, {
useNewUrlParser: true,
useUnifiedTopology: true, //ezek a paraméterek azért kellenek, hogy kompatibilisek legyünk akár régebbi Mongo verziókkal is
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', function () {
console.log('Connected to MongoDB successfully!');
});
const User = require('./db/userSchema');
require('./db/bootstrapper')();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const {mongo} = require("mongoose");
const path = require("path");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
passport.use('local', new LocalStrategy({}, async function (username, password, done) {
const user = await User.findOne({ username: username }).catch(() => done('Hiba lekeres soran', null));
if (!user) return done('Nincs ilyen felhasználónév', null);
user.comparePasswords(password, function (error, isMatch) {
if (error) return done(error, false);
if (!isMatch) return done('Hibás jelszó', false);
return done(null, user);
});
}));
passport.serializeUser(function (user, done) {
if (!user) return done('nincs megadva szerializálható felhasználó', null);
return done(null, user);
});
passport.deserializeUser(function (user, done) {
if (!user) return done("nincs megadva deszerializálható felhasználó", null);
return done(null, user);
});
app.use(expressSession({ secret: 'prfcheesecrescentmc', resave: true, saveUninitialized: false }));
app.use(passport.initialize({}));
app.use(passport.session({}));
app.use('/api/users', require('./usersRouter'))
app.use('/api/products', require('./productsRouter'))
app.use(function (req, res, next) {
if (!req.url.startsWith('/api') && req.url.indexOf('.') === -1) {
res.sendFile(path.resolve('public', 'index.html'));
} else {
next();
}
})
app.use('', express.static('public'))
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000')
})