Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. var express = require('express');
  2. var session = require('express-session');
  3. var mongoose = require('mongoose');
  4. var multer = require('multer');
  5. var passport = require('passport');
  6. var LocalStrategy = require('passport-local').Strategy;
  7. var passportLocalMongoose = require('passport-local-mongoose');
  8. var app = express();
  9. var uploadDir = __dirname + '/uploads';
  10. var uploadDirContact = __dirname + '/ContactUploads';
  11. var bodyParser = require('body-parser');
  12.  
  13.  
  14. var isAuthenticated = function (req, res, next) {
  15. if (req.isAuthenticated())
  16. return next();
  17. res.redirect('/');
  18. }
  19.  
  20. mongoose.connect('mongodb://orion:orion@127.0.0.1:27017/test');
  21.  
  22. var Schema = mongoose.Schema;
  23. var contactSchema = new Schema({
  24. name: String,
  25. phone: String,
  26. email: String,
  27. photo: String
  28. });
  29. var userSchema = new Schema({
  30. name: String,
  31. email: String,
  32. password: String,
  33. pp: String,
  34. contacts: [contactSchema]
  35. });
  36. var users = mongoose.model('users', userSchema);
  37. var contacts = mongoose.model('contact', contactSchema);
  38.  
  39. var port = process.env.PORT || 3000;
  40.  
  41. app.set('views', './views');
  42. app.set('view engine', 'jade');
  43. app.use('/assets', express.static(__dirname + '/public'));
  44. app.use('/contactPhotos',express.static(__dirname + '/ContactUploads'));
  45. app.use('/pp',express.static(__dirname + '/uploads'));
  46. app.use(bodyParser.urlencoded({extended: false}));
  47. app.use(bodyParser.json());
  48. app.use(session({secret: 'supernova', saveUninitialized: true, resave: true}));
  49. app.use(passport.initialize());
  50. app.use(passport.session());
  51.  
  52.  
  53. passport.use(new LocalStrategy(
  54. {
  55. usernameField: 'email'
  56. }, function (email, password, done) {
  57.  
  58. users.findOne({email: email}, function (err, user) {
  59. if (err) {
  60. return done(err);
  61. }
  62. if (!err) {
  63. console.log(user);
  64. }
  65. if (!user) {
  66. return done(null, false, {message: 'Incorrect username.'});
  67. }
  68. if (user.password != password) {
  69. return done(null, false, {message: 'Invalid password'});
  70. }
  71. return done(null, user);
  72. });
  73. }));
  74.  
  75.  
  76. passport.serializeUser(function (user, done) {
  77. done(null, user._id);
  78. });
  79.  
  80. passport.deserializeUser(function (id, done) {
  81. users.findById(id, function (err, user) {
  82. done(err, user);
  83. });
  84. });
  85. app.all('/', function (req, res) {
  86. res.render('login');
  87.  
  88. })
  89.  
  90. app.all('/register', function (req, res) {
  91. res.render('register');
  92. })
  93.  
  94. app.all('/login', function (req, res) {
  95. res.redirect('/');
  96. })
  97.  
  98. var pp = Date.now() + '.jpg';
  99.  
  100. var storage = multer.diskStorage({
  101. destination: function (request, file, callback) {
  102. callback(null, uploadDir);
  103. },
  104. filename: function (request, file, callback) {
  105. console.log(file);
  106. callback(null, pp);
  107. }
  108. });
  109. var contactPhotoStorage = multer.diskStorage({
  110. destination: function (request, file, callback) {
  111. callback(null, uploadDirContact);
  112. },
  113. filename: function (request, file, callback) {
  114. console.log(file);
  115. callback(null, pp);
  116. }
  117. });
  118. var upload = multer({storage: storage}).single('proPic');
  119. var contactPhoto = multer({storage: contactPhotoStorage}).single('photo');
  120.  
  121. app.all('/doReg', upload, function (request, response) {
  122. var user = users({
  123. 'name': request.body.name,
  124. 'email': request.body.email,
  125. 'password': request.body.password,
  126. 'pp': pp
  127. })
  128. user.save(function (err) {
  129. if (err) throw err;
  130. });
  131.  
  132. var url = request.protocol + '://' + request.get('host') + '/login'
  133. response.writeHead(301,
  134. {Location: url}
  135. );
  136. response.end();
  137. });
  138.  
  139. app.all('/doLogin', passport.authenticate('local', {
  140. successRedirect: '/home',
  141. failureRedirect: '/'
  142. }), function (req, res) {
  143. console.log(req.body)
  144. });
  145.  
  146. app.get('/home', isAuthenticated, function (req, res) {
  147. res.render('home', {serverUser: req.user});
  148. });
  149. app.post('/home', contactPhoto, function (req, res) {
  150. var contact = contacts({
  151. 'name': req.body.name,
  152. 'email': req.body.email,
  153. 'phone': req.body.phone,
  154. 'photo': pp
  155. });
  156. console.log(contact);
  157. users.update({"_id": req.user._id},
  158. {$push: {"contacts": contact}},
  159. function (err, numAffected) {
  160. if (err) {
  161.  
  162. console.log('error saving contact!')
  163. }
  164. else {
  165. console.log('success saving contact!')
  166. }
  167. });
  168. res.redirect(req.get('referer'));
  169. });
  170.  
  171. app.get('/logout', function (req, res){
  172. req.session.destroy(function (err) {
  173. res.redirect('/');
  174. });
  175. });
  176.  
  177.  
  178. app.listen(port);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement