Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. var express = require('express');
  2. var path = require('path');
  3. var favicon = require('serve-favicon');
  4. var logger = require('morgan');
  5. var cookieParser = require('cookie-parser');
  6. var bodyParser = require('body-parser');
  7. var expressValidator = require('express-validator');
  8.  
  9.  
  10. // Authentication
  11. var session = require('express-session');
  12. var MySQLStore = require('express-mysql-session')(session);
  13. var passport = require('passport')
  14. , LocalStrategy = require('passport-local').Strategy;
  15. var bcrypt = require('bcryptjs');
  16.  
  17.  
  18. var index = require('./routes/index');
  19. var users = require('./routes/users');
  20.  
  21. var app = express();
  22.  
  23. require('dotenv').config();
  24.  
  25. // view engine setup
  26. app.set('views', path.join(__dirname, 'views'));
  27. app.set('view engine', 'hbs');
  28.  
  29. // uncomment after placing your favicon in /public
  30. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  31. app.use(logger('dev'));
  32. app.use(bodyParser.json());
  33. app.use(bodyParser.urlencoded({ extended: false }));
  34. app.use(expressValidator());
  35. app.use(cookieParser());
  36. app.use(express.static(path.join(__dirname, 'public')));
  37. var options = {
  38. host: process.env.DB_HOST,
  39. user: process.env.DB_USER,
  40. password: process.env.DB_PASSWORD,
  41. database : process.env.DB_NAME
  42. };
  43. var sessionStore = new MySQLStore(options);
  44. app.use(session({
  45. secret: '1g2o3l4d5f6i7s8h9',
  46. resave: false,
  47. store: sessionStore,
  48. saveUninitialized: false,
  49. // cookie: { secure: true }
  50. }))
  51. app.use(passport.initialize());
  52. app.use(passport.session());
  53.  
  54. app.use(function(req,res, next){
  55. res.locals.isAuthenticated = req.isAuthenticated();
  56. next();
  57. });
  58.  
  59. app.use('/', index);
  60. app.use('/users', users);
  61.  
  62. passport.use(new LocalStrategy(
  63. function(username, password, done) {
  64. const db = require('./db');
  65. db.query('SELECT id, password FROM users WHERE username = ? LIMIT 1', [username], function(err,results,fields){
  66. if(err) {done(err);}
  67.  
  68. if(results.length === 0) {
  69. done(null,false);
  70. }
  71. else {
  72. const hash = results[0].password.toString();
  73. bcrypt.compare(password, hash,function(err,response){
  74. if(response === true) {
  75. return done(null,{user_id: results[0].id});
  76. }else {
  77. return done(null, false);
  78. }
  79. });
  80. }
  81. });
  82. }
  83. ));
  84.  
  85. // catch 404 and forward to error handler
  86. app.use(function(req, res, next) {
  87. var err = new Error('Not Found');
  88. err.status = 404;
  89. next(err);
  90. });
  91.  
  92. // error handler
  93. app.use(function(err, req, res, next) {
  94. // set locals, only providing error in development
  95. res.locals.message = err.message;
  96. res.locals.error = req.app.get('env') === 'development' ? err : {};
  97.  
  98. // render the error page
  99. res.status(err.status || 500);
  100. res.render('error');
  101. });
  102.  
  103.  
  104. // Handlebars default config
  105. const hbs = require('hbs');
  106. const fs = require('fs');
  107.  
  108. const partialsDir = __dirname + '/views/partials';
  109.  
  110. const filenames = fs.readdirSync(partialsDir);
  111.  
  112. filenames.forEach(function (filename) {
  113. const matches = /^([^.]+).hbs$/.exec(filename);
  114. if (!matches) {
  115. return;
  116. }
  117. const name = matches[1];
  118. const template = fs.readFileSync(partialsDir + '/' + filename, 'utf8');
  119. hbs.registerPartial(name, template);
  120. });
  121.  
  122. hbs.registerHelper('json', function(context) {
  123. return JSON.stringify(context, null, 2);
  124. });
  125.  
  126.  
  127. module.exports = app;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement