Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const app = express();
- const uuid = require('uuid/v4');
- const cookieParser = require('cookie-parser');
- const serveStatic = require('serve-static');
- const expressSession = require('express-session');
- const FileStore = require('session-file-store')(expressSession);
- const bodyParser = require('body-parser');
- const passport = require('passport');
- const LocalStrategy = require('passport-local');
- const path = require('path');
- // Fake user
- const user = { username: 'admin', password: 'admin'};
- passport.use(new LocalStrategy(
- function(username, password, done) {
- if (username !== user.username) {
- return done(null, false);
- }
- if (password !== user.password) {
- return done(null, false);
- }
- return done(null, user);
- }
- ));
- passport.serializeUser((user, done) => {
- done(null, user.username);
- });
- passport.deserializeUser((id, done) => {
- const checkedUser = user.username === id ? user : false;
- done(null, checkedUser);
- });
- app.use(serveStatic(path.join(__dirname + '/../api/build'), {
- index: false
- }));
- app.use(cookieParser());
- app.use(bodyParser.urlencoded({ extended: true }));
- app.use(bodyParser.json());
- app.use(expressSession({
- genid: (req) => {
- return uuid() // use UUIDs for session IDs
- },
- store: new FileStore(),
- secret: 'keyboard cat',
- resave: false,
- saveUninitialized: true
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- app.set('views', path.join(__dirname, 'views'));
- // Set Pug as template engine.
- app.set('view engine', 'pug');
- app.get('/', (req, res) => {
- if (req.user) {
- res.redirect('/v1'); // User already logged in
- } else {
- res.render('index'); // Unauthorized users must log in first
- }
- });
- app.post('/', passport.authenticate('local', {
- successRedirect: '/v1', // authentication succeeded
- failureRedirect: '/' // // authentication failed
- }));
- // show this page only if user is logged in
- app.get('/v1', passport.authorize('local', { failureRedirect: '/' }), (req, res) => {
- res.sendFile(path.join(__dirname + '/../api/build/index.html'));
- });
- app.listen(process.env.PORT || 8080);
Add Comment
Please, Sign In to add comment