Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const app = express();
- const path = require('path');
- const mongo = require('mongodb').MongoClient;
- const objectId = require('mongodb').ObjectID;
- const bcrypt = require('bcryptjs');
- const cookieParser = require('cookie-parser');
- const expressHandlebars = require('express-handlebars');
- const expressValidator = require('express-validator');
- const flash = require('connect-flash');
- const session = require('express-session');
- const passport = require('passport');
- const localStrategy = require('passport-local').Strategy;
- const mongoose = require('mongoose');
- const User = require('./models/user.js');
- const Admin = require('./models/admin');
- app.engine('handlebars', expressHandlebars({defaultLayout:'layout'}));
- app.set('view engine', 'handlebars');
- const bodyParser = require('body-parser');
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({ extended: true }));
- app.use(cookieParser());
- app.use(session({
- secret: 'secret',
- saveUninitialized: true,
- resave: true
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- //express Validator
- app.use(expressValidator({
- errorFormatter: function(param, msg, value) {
- var namespace = param.split('.'),
- root = namespace.shift(),
- formParam = root;
- while (namespace.length) {
- formParam += '[' + namespace.shift() + ']';
- }
- return {
- param: formParam,
- msg: msg,
- value: value
- };
- }
- }));
- //Connect Flash
- app. use(flash());
- app.use(function (req, res, next) {
- res.locals.success_msg = req.flash('success_msg');
- res.locals.error_msg =req.flash('error_msg');
- res.locals.error = req.flash('error');
- next();
- });
- app.use(express.static(__dirname)); // For Loading all the files present in Directory
- mongoose.Promise = global.Promise;
- const url = 'mongodb://localhost:27017/userDB';
- mongoose.connect(url);
- app.get("/login", function (req, res) {
- const loginPath = path.join(__dirname, '/login.html');
- res.sendFile(loginPath);
- });
- passport.use(new localStrategy(
- function (adminUsername, password, done) {
- Admin.getAdminByAdminUsername(adminUsername, function (err, admin) {
- if (err) throw err;
- if (!admin) {
- console.log('Not admin');
- return done(null, false, function()
- {
- console.log('Missing credentials!');
- })
- }
- Admin.comparePassword(password, admin.password, function (err, isMatch) {
- if (err) throw err;
- if (isMatch) {
- return done(null, admin);
- } else {
- return done(null, false, function()
- {
- console.log('Invalid Password!');
- });
- }
- });
- });
- }));
- passport.serializeUser(function (admin, done) {
- done(null, admin.id);
- });
- passport.deserializeUser(function (id, done) {
- Admin.getAdminById(id, function (err, admin) {
- done(err, admin);
- });
- });
- app.post('/login', passport.authenticate('local', { successRedirect: '/',
- failureRedirect: '/login'}),
- function(req, res){
- res.redirect('/');
- }
- );
- const mongoose = require("mongoose");
- const bcrypt = require('bcryptjs');
- const schema = new mongoose.Schema({
- adminEmail: {
- type: String,
- unique: true,
- required: true
- },
- adminUsername:{
- type: String,
- unique: true,
- required: true
- },
- password:{
- type: String,
- required: true
- }
- });
- const Admin = mongoose.model('Admin', schema);
- module.exports = Admin;
- module.exports.getAdminByAdminUsername = function (adminUsername, callback) {
- const query = {adminUsername: adminUsername};
- Admin.findOne(query, callback);
- }
- module.exports.getAdminById = function (adminId, callback) {
- Admin.findById(adminId, callback);
- }
- module.exports.comparePassword = function (password, hash, callback) {
- bcrypt.compare(password, hash, function (err, isMatch) {
- if (err) throw err;
- callback(null, isMatch);
- });
- }
Add Comment
Please, Sign In to add comment