Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var models = require('./models'),
- Schema = models.Schema;
- var usuariosSchema = new Schema({
- nombre: String,
- edad: String,
- usuario: String,
- password: String,
- });
- var Usuario = models.model('Usuario', usuariosSchema, 'usuario_sesion');
- exports.registroFuncion = function(req, res, next){
- var user = new Usuario({
- nombre: req.body.nombre,
- edad: req.body.edad,
- usuario: req.body.usuario,
- password: req.body.pass
- });
- user.save(function(err, usuario){
- if(!err){
- res.status(201);
- next();
- }else{
- res.status(400);
- res.send('Ha ocurrido un problema.');
- }
- });
- };
- var passport = require('passport'),
- passportLocal = require('passport-local'),
- LocalStrategy = passportLocal.Strategy;
- var Usuario = require('./models/usuario');
- var localConnection = function(app){
- passport.use('user', new LocalStrategy({
- //Define campos como: "xxx"
- usernameField: 'usuario',
- passwordField: 'password'
- },
- function(username, password, done){
- Usuario.findOne({usuario:username}, function(err, user){
- if(err){ return done(err); }
- if(!user){
- return done(null, false, {message: "Incorrect Username."});
- }else{
- if(user.password != password){
- return done(null, false, {message: "Incorrect Password"});
- }else{
- //Usuario existe y clave correcta, retorna el usuario
- return done(null, user);
- }
- }
- });
- }
- ));
- app.post('/login', passport.authenticate('user', {successRedirect: '/user',
- failureRedirect: '/error', failureFlash: 'User o pass equivocado.'}));
- };
- module.exports = localConnection;
- var express = require('express'),
- app = express(),
- server = require('http').createServer(app);
- /* Almacenamiento variables de session */
- var session = require('express-session');
- var RedisStore = require('connect-redis')(session);
- var passport = require('passport');
- //Flash: Mensajes temporales de respuesta
- var flash = require('connect-flash');
- /* // */
- // Recordar activar server en terminal con > redis-server
- var logger = require('morgan');
- var cookieParser = require('cookie-parser');
- var bodyParser = require('body-parser');
- var path = require('path');
- var swig = require('swig');
- /* Renderizado */
- app.engine('html', swig.renderFile);
- app.set('view engine', 'html');
- app.set('views', __dirname+'/views');
- app.set('view cache', false);
- swig.setDefaults({cache: false});
- app.use(logger('dev'));
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({extended: true}));
- app.use(cookieParser('nextapp'));
- app.use(express.static(path.join(__dirname, 'public')));
- /* Variables de sesion */
- app.use(session({
- store: new RedisStore({}),
- secret: 'nextapp',
- resave: true,
- saveUninitialized: true,
- cookie: {
- expires: false,
- secure: false
- }
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- app.use(flash());
- passport.serializeUser(function(user, done){
- console.log("Serialize: "+user);
- done(null, user);
- });
- passport.deserializeUser(function(obj, done){
- console.log("Deserialize: "+obj);
- done(null, obj);
- });
- /* Rutas */
- var routes = require('./routes/routes');
- routes(app);
- /* Conexiones */
- var local = require('./local');
- /* Server ON */
- var port = Number(process.env.PORT || 3000);
- server.listen(port, function(){
- console.log('Servidor corriendo en localhost:'+port);
- });
- var usuario = require('../controllers/usuario');
- var local = require('../local');
- var routes = function(app){
- app.get('/', function(req, res){
- res.render('login');
- });
- app.get('/user', function(req, res){
- res.send("Bienvenido: "+req.session.passport.user.nombre);
- });
- app.get('/error', function(req, res){
- res.send(req.session.flash.error[0]);
- });
- app.get('/registro', function(req, res){
- res.render('registro');
- });
- app.post('/registro', usuario.registroFuncion, function(req, res){
- res.redirect('/');
- });
- app.post('/login', function(req, res){
- res.redirect('/user');
- });
- };
- module.exports = routes;
Add Comment
Please, Sign In to add comment