Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict'
- var express = require('express'),
- app = express(),
- expressSession = require('express-session'),
- bodyParser = require('body-parser'),
- passport = require('passport'),
- userRoutes = require('./routes/user-routes');
- app.use(passport.initialize());
- app.use(passport.session());
- app.use(bodyParser.urlencoded({extended: false, limit: '50mb', paramterLimit: 500000}));
- app.use(bodyParser.json({limit: '50mb'}));
- app.use(expressSession({
- secret: 'secretillo mio',
- resave: false,
- saveUninitialized: true,
- cookie: {secure: true}
- }));
- app.use('/api', userRoutes);
- module.exports = app;
- 'use strict'
- var passport = require('passport'),
- LocalStrategy = require('passport-local').Strategy,
- User = require('../models/user');
- passport.serializeUser((user, done) => {
- done(null, user._id);
- });
- passport.deserializeUser((id, done) => {
- User.findById(id, (err, user) => {
- done(err, user);
- });
- });
- passport.use(new LocalStrategy(
- {usernameField: 'email'},
- (email, password, done) => {
- User.findOne({email}, (err, user) => {
- if (!user) {
- return done(null, false, {message: 'Este email: ${email} no está registrado.'});
- }else{
- user.comparePass(password, (err, equals) => {
- if (equals) {
- return done(null, user);
- }else{
- return done(null, false, {message: 'La contraseña no es valida.'});
- }
- });
- }
- })
- }
- ));
- exports.authenticated = (req, res, next) => {
- if (req.isAutheticated()) {
- return next();
- }
- return res.send({message: 'Tienes que hacer login para acceder a este recurso.'});
- }
- 'use strict'
- var User = require('../models/user'),
- bcrypt = require('bcrypt-nodejs'),
- passport = require('passport');
- function saveUser(req, res){
- var user = new User();
- var params = req.body;
- var email = params.email;
- user.email = params.email;
- user.password = params.password;
- user.name = params.name;
- User.findOne({email}, (err, existsUser) => {
- if (err) {
- return res.send({message: 'Error en el servidor al buscar registros similares.'});
- }
- if (existsUser) {
- return res.send({message: 'El email solicitado, ya está registrado en la base de datos.'});
- }
- if (user.password) {
- bcrypt.hash(user.password, null, null, (err, hash) => {
- user.password = hash;
- if (user.name != null && user.email != null) {
- user.save((err, userStored) => {
- if (err) { return res.send({message: 'Error al guardar el registro solicitado.'}); }
- return res.send({message: 'El registro ha sido guardado', user: userStored});
- });
- }else{
- return res.send({message: 'Es necesario completar todos los campos.'});
- }
- });
- }
- });
- }
- function getAllUsers(req, res){
- User.find({}, (err, users) => {
- if (err) { return res.send({message: 'Error al buscar los registros solkicitados.'}); }
- return res.send({message: 'Se han encontrado estos registros: ', users: users});
- });
- }
- function singIn(req, res, next){
- passport.authenticate('local', (err, user, info) => {
- if (err) { next(err); }
- if (!user) { return res.send({message:'Email o contraseña no validos.'}); }
- req.logIn(user, (err) => {
- if (err) { next(err); }
- res.send({message: 'Login exitoso.'});
- });
- })(req, res, next);
- }
- function logout(req, res){
- req.logout();
- res.send({message: 'Logout exitoso.'});
- }
- module.exports = {
- saveUser,
- getAllUsers,
- singIn,
- logout
- }
- var express = require('express'),
- router = express.Router(),
- userController = require('../controllers/user-controller'),
- passportConfig = require('../config/passport');
- router.post('/singUp', userController.saveUser);
- router.post('/login', userController.singIn);
- router.get('/users', userController.getAllUsers);
- router.get('/logout', passportConfig.authenticated, userController.logout);
- module.exports = router;
- 'use strict'
- var mongoose = require('mongoose'),
- Schema = mongoose.Schema,
- bcrypt = require('bcrypt-nodejs');
- const userSchema = new Schema({
- email: {type: String, unique: true, lowercase: true, required: true},
- password: {type: String, required: true},
- name: {type: String, required: true}
- });
- userSchema.methods.comparePass = (password, cb) => {
- bcrypt.compare(password, this.password, (err, equals) => {
- if (err) {
- return cb(err);
- }
- cb(null, equals);
- });
- }
- module.exports = mongoose.model('User', userSchema);
Add Comment
Please, Sign In to add comment