Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var bodyParser = require('body-parser'); // necessário para PUT e POST
- var mongoose = require('mongoose');
- var expressLayouts = require('express-ejs-layouts');
- var passport = require('passport');
- var flash = require('connect-flash');
- var morgan = require('morgan');
- var cookieParser = require('cookie-parser');
- var session = require('express-session');
- var configDB = require('./config/database.js');
- // conexão à base de dados (o servidor MongoDB necessita já ter sido iniciado)
- mongoose.Promise = global.Promise; //resolução de warning:
- mongoose.connect(configDB.url);
- //require('./config/passport')(passport); // pass passport for configuration
- // Configura a aplicação Express (e seus middlewares)
- var app = express();
- app.use(morgan('dev')); // log every request to the console
- app.use(cookieParser()); // read cookies (needed for auth)
- app.use(bodyParser()); // get information from html forms
- app.set('views', './views');
- app.set('view engine','ejs');
- app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
- app.use(passport.initialize());
- app.use(passport.session()); // persistent login sessions
- app.use(flash());
- app.use(expressLayouts);
- app.use(express.static('./public'));
- app.use('/', require('./routes/register')(passport));
- app.use('/', require('./routes/login')(passport));
- app.use('/', require('./routes/profile')(passport));
- app.use('/', require('./routes/main')(passport));
- app.use('/', require('./routes/logout')(passport));
- //middlewares de terceiros
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({ extended: true }));
- //middlewares de roteamento
- // inicia servidor
- var server = app.listen(8081, function() {
- console.log('Express server listening on port ' + server.address().port);
- });
- var User = require('../models/user');
- var express = require('express');
- // routeamento do Express
- var router = express.Router();
- //GET request - /movies
- module.exports = function(passport) {
- router.route('/register')
- .get(function(req, res) {
- res.render('./pages/register',{ message: req.flash('signupMessage') });
- })
- .post(passport.authenticate('local-signup', {
- successRedirect : '/profile', // redirect to the secure profile section
- failureRedirect : '/register', // redirect back to the signup page if there is an error
- failureFlash : true // allow flash messages
- }));
- }
- / config/passport.js
- // load all the things we need
- var LocalStrategy = require('passport-local').Strategy;
- // load up the user model
- var User = require('../models/user');
- // expose this function to our app using module.exports
- module.exports = function(passport) {
- // =========================================================================
- // passport session setup ==================================================
- // =========================================================================
- // required for persistent login sessions
- // passport needs ability to serialize and unserialize users out of session
- // used to serialize the user for the session
- passport.serializeUser(function(user, done) {
- done(null, user.id);
- });
- // used to deserialize the user
- passport.deserializeUser(function(id, done) {
- User.findById(id, function(err, user) {
- done(err, user);
- });
- });
- // =========================================================================
- // LOCAL SIGNUP ============================================================
- // =========================================================================
- // we are using named strategies since we have one for login and one for signup
- // by default, if there was no name, it would just be called 'local'
- passport.use('local-signup', new LocalStrategy({
- // by default, local strategy uses username and password, we will override with email
- usernameField : 'email',
- passwordField : 'password',
- passReqToCallback : true // allows us to pass back the entire request to the callback
- },
- function(req, email, password, done) {
- // asynchronous
- // User.findOne wont fire unless data is sent back
- process.nextTick(function() {
- // find a user whose email is the same as the forms email
- // we are checking to see if the user trying to login already exists
- User.findOne({ 'local.email' : email }, function(err, user) {
- // if there are any errors, return the error
- if (err)
- return done(err);
- // check to see if theres already a user with that email
- if (user) {
- return done(null, false, req.flash('signupMessage', 'That email is already taken.'));
- } else {
- // if there is no user with that email
- // create the user
- var newUser = new User();
- // set the user's local credentials
- newUser.local.email = email;
- newUser.local.password = newUser.generateHash(password);
- // save the user
- newUser.save(function(err) {
- if (err)
- throw err;
- return done(null, newUser);
- });
- }
- });
- });
- }));
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement