Advertisement
Guest User

Untitled

a guest
Dec 31st, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.39 KB | None | 0 0
  1. var express = require('express');
  2. var bodyParser = require('body-parser'); // necessário para PUT e POST
  3. var mongoose = require('mongoose');
  4. var expressLayouts = require('express-ejs-layouts');
  5. var passport = require('passport');
  6. var flash = require('connect-flash');
  7. var morgan = require('morgan');
  8. var cookieParser = require('cookie-parser');
  9. var session = require('express-session');
  10. var configDB = require('./config/database.js');
  11.  
  12. // conexão à base de dados (o servidor MongoDB necessita já ter sido iniciado)
  13. mongoose.Promise = global.Promise; //resolução de warning:
  14. mongoose.connect(configDB.url);
  15.  
  16. //require('./config/passport')(passport); // pass passport for configuration
  17.  
  18. // Configura a aplicação Express (e seus middlewares)
  19.  
  20. var app = express();
  21.  
  22. app.use(morgan('dev')); // log every request to the console
  23. app.use(cookieParser()); // read cookies (needed for auth)
  24. app.use(bodyParser()); // get information from html forms
  25.  
  26. app.set('views', './views');
  27. app.set('view engine','ejs');
  28.  
  29. app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
  30. app.use(passport.initialize());
  31. app.use(passport.session()); // persistent login sessions
  32. app.use(flash());
  33.  
  34. app.use(expressLayouts);
  35. app.use(express.static('./public'));
  36. app.use('/', require('./routes/register')(passport));
  37. app.use('/', require('./routes/login')(passport));
  38. app.use('/', require('./routes/profile')(passport));
  39. app.use('/', require('./routes/main')(passport));
  40. app.use('/', require('./routes/logout')(passport));
  41.  
  42. //middlewares de terceiros
  43. app.use(bodyParser.json());
  44. app.use(bodyParser.urlencoded({ extended: true }));
  45. //middlewares de roteamento
  46.  
  47. // inicia servidor
  48. var server = app.listen(8081, function() {
  49. console.log('Express server listening on port ' + server.address().port);
  50. });
  51.  
  52. var User = require('../models/user');
  53. var express = require('express');
  54. // routeamento do Express
  55. var router = express.Router();
  56. //GET request - /movies
  57. module.exports = function(passport) {
  58.  
  59. router.route('/register')
  60. .get(function(req, res) {
  61. res.render('./pages/register',{ message: req.flash('signupMessage') });
  62. })
  63. .post(passport.authenticate('local-signup', {
  64. successRedirect : '/profile', // redirect to the secure profile section
  65. failureRedirect : '/register', // redirect back to the signup page if there is an error
  66. failureFlash : true // allow flash messages
  67. }));
  68. }
  69.  
  70. / config/passport.js
  71.  
  72. // load all the things we need
  73. var LocalStrategy = require('passport-local').Strategy;
  74. // load up the user model
  75. var User = require('../models/user');
  76.  
  77. // expose this function to our app using module.exports
  78. module.exports = function(passport) {
  79. // =========================================================================
  80. // passport session setup ==================================================
  81. // =========================================================================
  82. // required for persistent login sessions
  83. // passport needs ability to serialize and unserialize users out of session
  84.  
  85. // used to serialize the user for the session
  86. passport.serializeUser(function(user, done) {
  87. done(null, user.id);
  88. });
  89.  
  90. // used to deserialize the user
  91. passport.deserializeUser(function(id, done) {
  92. User.findById(id, function(err, user) {
  93. done(err, user);
  94. });
  95. });
  96.  
  97. // =========================================================================
  98. // LOCAL SIGNUP ============================================================
  99. // =========================================================================
  100. // we are using named strategies since we have one for login and one for signup
  101. // by default, if there was no name, it would just be called 'local'
  102.  
  103. passport.use('local-signup', new LocalStrategy({
  104. // by default, local strategy uses username and password, we will override with email
  105. usernameField : 'email',
  106. passwordField : 'password',
  107. passReqToCallback : true // allows us to pass back the entire request to the callback
  108. },
  109. function(req, email, password, done) {
  110.  
  111. // asynchronous
  112. // User.findOne wont fire unless data is sent back
  113. process.nextTick(function() {
  114.  
  115. // find a user whose email is the same as the forms email
  116. // we are checking to see if the user trying to login already exists
  117. User.findOne({ 'local.email' : email }, function(err, user) {
  118. // if there are any errors, return the error
  119. if (err)
  120. return done(err);
  121.  
  122. // check to see if theres already a user with that email
  123. if (user) {
  124. return done(null, false, req.flash('signupMessage', 'That email is already taken.'));
  125. } else {
  126.  
  127. // if there is no user with that email
  128. // create the user
  129. var newUser = new User();
  130.  
  131. // set the user's local credentials
  132. newUser.local.email = email;
  133. newUser.local.password = newUser.generateHash(password);
  134.  
  135. // save the user
  136. newUser.save(function(err) {
  137. if (err)
  138. throw err;
  139. return done(null, newUser);
  140. });
  141. }
  142.  
  143. });
  144.  
  145. });
  146.  
  147. }));
  148.  
  149. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement