Advertisement
Guest User

Untitled

a guest
Jul 7th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. var express = require('express');
  2. var path = require('path');
  3. var bodyParser = require('body-parser');
  4. var exphbs = require('express-handlebars');
  5.  
  6. var expressValidator = require('express-validator');
  7.  
  8. var flash = require('connect-flash');
  9.  
  10. // intialize Passport
  11. var session = require('express-session');
  12. var passport = require('passport');
  13. var LocalStrategy = require('passport-local').Strategy;
  14.  
  15.  
  16. // initialize DB
  17. var mongoose = require('mongoose');
  18. mongoose.connect('mongodb://localhost/loginapp');
  19. var db = mongoose.connection;
  20.  
  21. var routes = require('./routes/index');
  22. var users = require('./routes/users');
  23.  
  24. // Init App
  25. var app = express();
  26.  
  27. // View Engine
  28. app.set('views', path.join(__dirname, 'views'));
  29. app.engine('handlebars', exphbs({defaultLayout:'layout'}));
  30. app.set('view engine', 'handlebars');
  31.  
  32. // BodyParser Middleware
  33. app.use(bodyParser.json());
  34. app.use(bodyParser.urlencoded({ extended: false }));
  35.  
  36. // Set Static Folder
  37. app.use(express.static(path.join(__dirname, 'public')));
  38.  
  39. // Express Session
  40. app.use(session({
  41. secret: 'secret',
  42. saveUninitialized: true,
  43. resave: true
  44. }));
  45.  
  46. // Passport init
  47. app.use(passport.initialize());
  48. app.use(passport.session());
  49.  
  50. // Express Validator
  51. app.use(expressValidator({
  52. errorFormatter: function(param, msg, value) {
  53. var namespace = param.split('.')
  54. , root = namespace.shift()
  55. , formParam = root;
  56.  
  57. while(namespace.length) {
  58. formParam += '[' + namespace.shift() + ']';
  59. }
  60. return {
  61. param : formParam,
  62. msg : msg,
  63. value : value
  64. };
  65. }
  66. }));
  67.  
  68. // Connect Flash
  69. app.use(flash());
  70.  
  71. // Global Vars
  72. app.use(function (req, res, next) {
  73. res.locals.success_msg = req.flash('success_msg');
  74. res.locals.error_msg = req.flash('error_msg');
  75. res.locals.error = req.flash('error');
  76. res.locals.user = req.user || null;
  77. next();
  78. });
  79.  
  80.  
  81.  
  82. app.use('/', routes);
  83. app.use('/users', users);
  84.  
  85. // Set Port
  86. app.set('port', (process.env.PORT || 3000));
  87.  
  88. app.listen(app.get('port'), function(){
  89. console.log('Server started on port '+app.get('port'));
  90. });
  91.  
  92. var express = require('express');
  93. var router = express.Router();
  94. var passport = require('passport');
  95. var LocalStrategy = require('passport-local').Strategy;
  96.  
  97. var User = require('../models/user');
  98.  
  99. // Register
  100. router.get('/register', function(req, res){
  101. res.render('register');
  102. });
  103.  
  104. // Login
  105. router.get('/login', function(req, res){
  106. res.render('login');
  107. });
  108.  
  109. // Register User
  110. router.post('/register', function(req, res){
  111. var name = req.body.name;
  112. var email = req.body.email;
  113. var username = req.body.username;
  114. var password = req.body.password;
  115. var password2 = req.body.password2;
  116.  
  117. // Validation
  118. req.checkBody('name', 'Name is required').notEmpty();
  119. req.checkBody('email', 'Email is required').notEmpty();
  120. req.checkBody('email', 'Email is not valid').isEmail();
  121. req.checkBody('username', 'Username is required').notEmpty();
  122. req.checkBody('password', 'Password is required').notEmpty();
  123. req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
  124.  
  125. var errors = req.validationErrors();
  126.  
  127. if(errors){
  128. res.render('register',{
  129. errors:errors
  130. });
  131. } else {
  132. var newUser = new User({
  133. name: name,
  134. email:email,
  135. username: username,
  136. password: password
  137. });
  138.  
  139. User.createUser(newUser, function(err, user){
  140. if(err) throw err;
  141. console.log(user);
  142. });
  143.  
  144. req.flash('success_msg', 'You are registered and can now login');
  145.  
  146. res.redirect('/users/login');
  147. }
  148. });
  149.  
  150. passport.use(new LocalStrategy(
  151. function(username, password, done) {
  152. User.getUserByUsername(username, function(err, user){
  153. if(err) throw err;
  154. if(!user){
  155. return done(null, false, {message: 'Unknown User'});
  156. }
  157.  
  158. User.comparePassword(password, user.password, function(err, isMatch){
  159. if(err) throw err;
  160. if(isMatch){
  161. return done(null, user);
  162. } else {
  163. return done(null, false, {message: 'Invalid password'});
  164. }
  165. });
  166. });
  167. }));
  168.  
  169. passport.serializeUser(function(user, done) {
  170. done(null, user.id);
  171. });
  172.  
  173.  
  174. passport.deserializeUser(function(id, done) {
  175. User.getUserById(id, function(err, user) {
  176. done(err, user);
  177. });
  178. });
  179.  
  180. router.post('/login',
  181. passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
  182. function(req, res) {
  183. res.redirect('/');
  184. });
  185.  
  186. router.get('/logout', function(req, res){
  187. req.logout();
  188.  
  189. req.flash('success_msg', 'You are logged out');
  190.  
  191. res.redirect('/users/login');
  192. });
  193.  
  194. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement