Guest User

Untitled

a guest
Jul 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. const express = require('express');
  2. const app = express();
  3. const path = require('path');
  4. const mongo = require('mongodb').MongoClient;
  5. const objectId = require('mongodb').ObjectID;
  6. const bcrypt = require('bcryptjs');
  7. const cookieParser = require('cookie-parser');
  8. const expressHandlebars = require('express-handlebars');
  9. const expressValidator = require('express-validator');
  10. const flash = require('connect-flash');
  11. const session = require('express-session');
  12. const passport = require('passport');
  13. const localStrategy = require('passport-local').Strategy;
  14. const mongoose = require('mongoose');
  15. const User = require('./models/user.js');
  16. const Admin = require('./models/admin');
  17.  
  18.  
  19. app.engine('handlebars', expressHandlebars({defaultLayout:'layout'}));
  20. app.set('view engine', 'handlebars');
  21.  
  22. const bodyParser = require('body-parser');
  23. app.use(bodyParser.json());
  24. app.use(bodyParser.urlencoded({ extended: true }));
  25. app.use(cookieParser());
  26.  
  27. app.use(session({
  28. secret: 'secret',
  29. saveUninitialized: true,
  30. resave: true
  31. }));
  32.  
  33. app.use(passport.initialize());
  34. app.use(passport.session());
  35.  
  36. //express Validator
  37. app.use(expressValidator({
  38. errorFormatter: function(param, msg, value) {
  39. var namespace = param.split('.'),
  40. root = namespace.shift(),
  41. formParam = root;
  42. while (namespace.length) {
  43. formParam += '[' + namespace.shift() + ']';
  44. }
  45. return {
  46. param: formParam,
  47. msg: msg,
  48. value: value
  49. };
  50. }
  51. }));
  52.  
  53. //Connect Flash
  54. app. use(flash());
  55. app.use(function (req, res, next) {
  56. res.locals.success_msg = req.flash('success_msg');
  57. res.locals.error_msg =req.flash('error_msg');
  58. res.locals.error = req.flash('error');
  59. next();
  60. });
  61.  
  62. app.use(express.static(__dirname)); // For Loading all the files present in Directory
  63.  
  64. mongoose.Promise = global.Promise;
  65. const url = 'mongodb://localhost:27017/userDB';
  66. mongoose.connect(url);
  67.  
  68. app.get("/login", function (req, res) {
  69. const loginPath = path.join(__dirname, '/login.html');
  70. res.sendFile(loginPath);
  71. });
  72.  
  73. passport.use(new localStrategy(
  74. function (adminUsername, password, done) {
  75. Admin.getAdminByAdminUsername(adminUsername, function (err, admin) {
  76. if (err) throw err;
  77. if (!admin) {
  78. console.log('Not admin');
  79. return done(null, false, function()
  80. {
  81. console.log('Missing credentials!');
  82. })
  83. }
  84.  
  85. Admin.comparePassword(password, admin.password, function (err, isMatch) {
  86. if (err) throw err;
  87. if (isMatch) {
  88. return done(null, admin);
  89. } else {
  90. return done(null, false, function()
  91. {
  92. console.log('Invalid Password!');
  93. });
  94. }
  95. });
  96. });
  97. }));
  98.  
  99. passport.serializeUser(function (admin, done) {
  100. done(null, admin.id);
  101. });
  102. passport.deserializeUser(function (id, done) {
  103. Admin.getAdminById(id, function (err, admin) {
  104. done(err, admin);
  105. });
  106. });
  107.  
  108. app.post('/login', passport.authenticate('local', { successRedirect: '/',
  109. failureRedirect: '/login'}),
  110. function(req, res){
  111. res.redirect('/');
  112. }
  113. );
  114.  
  115. const mongoose = require("mongoose");
  116. const bcrypt = require('bcryptjs');
  117.  
  118. const schema = new mongoose.Schema({
  119. adminEmail: {
  120. type: String,
  121. unique: true,
  122. required: true
  123. },
  124. adminUsername:{
  125. type: String,
  126. unique: true,
  127. required: true
  128. },
  129. password:{
  130. type: String,
  131. required: true
  132. }
  133. });
  134.  
  135. const Admin = mongoose.model('Admin', schema);
  136. module.exports = Admin;
  137.  
  138. module.exports.getAdminByAdminUsername = function (adminUsername, callback) {
  139. const query = {adminUsername: adminUsername};
  140. Admin.findOne(query, callback);
  141. }
  142.  
  143. module.exports.getAdminById = function (adminId, callback) {
  144. Admin.findById(adminId, callback);
  145. }
  146.  
  147. module.exports.comparePassword = function (password, hash, callback) {
  148. bcrypt.compare(password, hash, function (err, isMatch) {
  149. if (err) throw err;
  150. callback(null, isMatch);
  151. });
  152. }
Add Comment
Please, Sign In to add comment