Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var path = require('path');
- var bodyParser = require('body-parser');
- var exphbs = require('express-handlebars');
- var expressValidator = require('express-validator');
- var flash = require('connect-flash');
- // intialize Passport
- var session = require('express-session');
- var passport = require('passport');
- var LocalStrategy = require('passport-local').Strategy;
- // initialize DB
- var mongoose = require('mongoose');
- mongoose.connect('mongodb://localhost/loginapp');
- var db = mongoose.connection;
- var routes = require('./routes/index');
- var users = require('./routes/users');
- // Init App
- var app = express();
- // View Engine
- app.set('views', path.join(__dirname, 'views'));
- app.engine('handlebars', exphbs({defaultLayout:'layout'}));
- app.set('view engine', 'handlebars');
- // BodyParser Middleware
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({ extended: false }));
- // Set Static Folder
- app.use(express.static(path.join(__dirname, 'public')));
- // Express Session
- app.use(session({
- secret: 'secret',
- saveUninitialized: true,
- resave: true
- }));
- // Passport init
- 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());
- // Global Vars
- 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');
- res.locals.user = req.user || null;
- next();
- });
- app.use('/', routes);
- app.use('/users', users);
- // Set Port
- app.set('port', (process.env.PORT || 3000));
- app.listen(app.get('port'), function(){
- console.log('Server started on port '+app.get('port'));
- });
- var express = require('express');
- var router = express.Router();
- var passport = require('passport');
- var LocalStrategy = require('passport-local').Strategy;
- var User = require('../models/user');
- // Register
- router.get('/register', function(req, res){
- res.render('register');
- });
- // Login
- router.get('/login', function(req, res){
- res.render('login');
- });
- // Register User
- router.post('/register', function(req, res){
- var name = req.body.name;
- var email = req.body.email;
- var username = req.body.username;
- var password = req.body.password;
- var password2 = req.body.password2;
- // Validation
- req.checkBody('name', 'Name is required').notEmpty();
- req.checkBody('email', 'Email is required').notEmpty();
- req.checkBody('email', 'Email is not valid').isEmail();
- req.checkBody('username', 'Username is required').notEmpty();
- req.checkBody('password', 'Password is required').notEmpty();
- req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
- var errors = req.validationErrors();
- if(errors){
- res.render('register',{
- errors:errors
- });
- } else {
- var newUser = new User({
- name: name,
- email:email,
- username: username,
- password: password
- });
- User.createUser(newUser, function(err, user){
- if(err) throw err;
- console.log(user);
- });
- req.flash('success_msg', 'You are registered and can now login');
- res.redirect('/users/login');
- }
- });
- passport.use(new LocalStrategy(
- function(username, password, done) {
- User.getUserByUsername(username, function(err, user){
- if(err) throw err;
- if(!user){
- return done(null, false, {message: 'Unknown User'});
- }
- User.comparePassword(password, user.password, function(err, isMatch){
- if(err) throw err;
- if(isMatch){
- return done(null, user);
- } else {
- return done(null, false, {message: 'Invalid password'});
- }
- });
- });
- }));
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- passport.deserializeUser(function(id, done) {
- User.getUserById(id, function(err, user) {
- done(err, user);
- });
- });
- router.post('/login',
- passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
- function(req, res) {
- res.redirect('/');
- });
- router.get('/logout', function(req, res){
- req.logout();
- req.flash('success_msg', 'You are logged out');
- res.redirect('/users/login');
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement