Guest User

Untitled

a guest
Dec 20th, 2017
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. 'use strict'
  2.  
  3. var express = require('express'),
  4. app = express(),
  5. expressSession = require('express-session'),
  6. bodyParser = require('body-parser'),
  7. passport = require('passport'),
  8. userRoutes = require('./routes/user-routes');
  9.  
  10. app.use(passport.initialize());
  11. app.use(passport.session());
  12. app.use(bodyParser.urlencoded({extended: false, limit: '50mb', paramterLimit: 500000}));
  13. app.use(bodyParser.json({limit: '50mb'}));
  14. app.use(expressSession({
  15. secret: 'secretillo mio',
  16. resave: false,
  17. saveUninitialized: true,
  18. cookie: {secure: true}
  19. }));
  20.  
  21. app.use('/api', userRoutes);
  22.  
  23.  
  24. module.exports = app;
  25.  
  26. 'use strict'
  27.  
  28. var passport = require('passport'),
  29. LocalStrategy = require('passport-local').Strategy,
  30. User = require('../models/user');
  31.  
  32. passport.serializeUser((user, done) => {
  33. done(null, user._id);
  34. });
  35.  
  36. passport.deserializeUser((id, done) => {
  37. User.findById(id, (err, user) => {
  38. done(err, user);
  39. });
  40. });
  41.  
  42. passport.use(new LocalStrategy(
  43. {usernameField: 'email'},
  44. (email, password, done) => {
  45. User.findOne({email}, (err, user) => {
  46. if (!user) {
  47. return done(null, false, {message: 'Este email: ${email} no está registrado.'});
  48. }else{
  49. user.comparePass(password, (err, equals) => {
  50. if (equals) {
  51. return done(null, user);
  52. }else{
  53. return done(null, false, {message: 'La contraseña no es valida.'});
  54. }
  55. });
  56. }
  57. })
  58. }
  59. ));
  60.  
  61. exports.authenticated = (req, res, next) => {
  62. if (req.isAutheticated()) {
  63. return next();
  64. }
  65. return res.send({message: 'Tienes que hacer login para acceder a este recurso.'});
  66. }
  67.  
  68. 'use strict'
  69.  
  70. var User = require('../models/user'),
  71. bcrypt = require('bcrypt-nodejs'),
  72. passport = require('passport');
  73.  
  74. function saveUser(req, res){
  75. var user = new User();
  76. var params = req.body;
  77. var email = params.email;
  78. user.email = params.email;
  79. user.password = params.password;
  80. user.name = params.name;
  81.  
  82. User.findOne({email}, (err, existsUser) => {
  83. if (err) {
  84. return res.send({message: 'Error en el servidor al buscar registros similares.'});
  85. }
  86. if (existsUser) {
  87. return res.send({message: 'El email solicitado, ya está registrado en la base de datos.'});
  88. }
  89. if (user.password) {
  90. bcrypt.hash(user.password, null, null, (err, hash) => {
  91. user.password = hash;
  92. if (user.name != null && user.email != null) {
  93. user.save((err, userStored) => {
  94. if (err) { return res.send({message: 'Error al guardar el registro solicitado.'}); }
  95. return res.send({message: 'El registro ha sido guardado', user: userStored});
  96. });
  97. }else{
  98. return res.send({message: 'Es necesario completar todos los campos.'});
  99. }
  100. });
  101. }
  102. });
  103. }
  104.  
  105. function getAllUsers(req, res){
  106. User.find({}, (err, users) => {
  107. if (err) { return res.send({message: 'Error al buscar los registros solkicitados.'}); }
  108. return res.send({message: 'Se han encontrado estos registros: ', users: users});
  109. });
  110. }
  111.  
  112. function singIn(req, res, next){
  113. passport.authenticate('local', (err, user, info) => {
  114. if (err) { next(err); }
  115. if (!user) { return res.send({message:'Email o contraseña no validos.'}); }
  116. req.logIn(user, (err) => {
  117. if (err) { next(err); }
  118. res.send({message: 'Login exitoso.'});
  119. });
  120. })(req, res, next);
  121. }
  122.  
  123. function logout(req, res){
  124. req.logout();
  125. res.send({message: 'Logout exitoso.'});
  126. }
  127.  
  128. module.exports = {
  129. saveUser,
  130. getAllUsers,
  131. singIn,
  132. logout
  133. }
  134.  
  135. var express = require('express'),
  136. router = express.Router(),
  137. userController = require('../controllers/user-controller'),
  138. passportConfig = require('../config/passport');
  139.  
  140.  
  141. router.post('/singUp', userController.saveUser);
  142. router.post('/login', userController.singIn);
  143. router.get('/users', userController.getAllUsers);
  144. router.get('/logout', passportConfig.authenticated, userController.logout);
  145.  
  146. module.exports = router;
  147.  
  148. 'use strict'
  149.  
  150. var mongoose = require('mongoose'),
  151. Schema = mongoose.Schema,
  152. bcrypt = require('bcrypt-nodejs');
  153.  
  154. const userSchema = new Schema({
  155. email: {type: String, unique: true, lowercase: true, required: true},
  156. password: {type: String, required: true},
  157. name: {type: String, required: true}
  158. });
  159.  
  160. userSchema.methods.comparePass = (password, cb) => {
  161. bcrypt.compare(password, this.password, (err, equals) => {
  162. if (err) {
  163. return cb(err);
  164. }
  165. cb(null, equals);
  166. });
  167. }
  168.  
  169. module.exports = mongoose.model('User', userSchema);
Add Comment
Please, Sign In to add comment