Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 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.  
  11. mongoose.connect('mongodb://orion:orion@127.0.0.1:27017/test');
  12.  
  13. var Schema = mongoose.Schema;
  14. var userSchema = new Schema({
  15. name: String,
  16. email: String,
  17. password: String,
  18. pp: String
  19. });
  20. var users = mongoose.model('users', userSchema);
  21. var port = process.env.PORT || 3000;
  22.  
  23. app.set('views', './views');
  24. app.set('view engine', 'jade');
  25. app.use('/assets', express.static(__dirname + '/public'));
  26. app.use(session({secret: 'supernova', saveUninitialized: true, resave: true}));
  27. app.use(passport.initialize());
  28. app.use(passport.session());
  29.  
  30. userSchema.plugin(passportLocalMongoose);
  31. passport.serializeUser(function (user, done) {
  32. done(null, user.id);
  33. });
  34.  
  35. passport.deserializeUser(function (id, done) {
  36. users.findById(id, function (err, user) {
  37. done(err, user);
  38. });
  39. });
  40. passport.use(new LocalStrategy({
  41. usernameField: 'email',
  42. passwordField: 'password'
  43. }, function (username, password, done) {
  44.  
  45. users.findOne({email: username}, function (err, user) {
  46. if (err) {
  47. return done(err);
  48. }
  49. if (!user) {
  50. return done(null, false, {message: 'Incorrect username.'});
  51. }
  52. if (!user.validPassword(password)) {
  53. return done(null, false, {message: 'Incorrect password.'});
  54. }
  55. return done(null, user);
  56. });
  57. }));
  58.  
  59.  
  60. app.all('/', function (req, res) {
  61. res.render('login');
  62.  
  63. })
  64.  
  65. app.all('/register', function (req, res) {
  66. res.render('register');
  67. })
  68.  
  69. app.all('/login', function (req, res) {
  70. res.render('login');
  71. })
  72.  
  73. var pp = Date.now() + '.jpg';
  74.  
  75. var storage = multer.diskStorage({
  76. destination: function (request, file, callback) {
  77. callback(null, uploadDir);
  78. },
  79. filename: function (request, file, callback) {
  80. console.log(file);
  81. callback(null, pp);
  82. }
  83. });
  84. var upload = multer({storage: storage}).single('proPic');
  85.  
  86. app.all('/doReg', upload, function (request, response) {
  87. var user = users({
  88. 'name': request.body.name,
  89. 'email': request.body.email,
  90. 'password': request.body.password,
  91. 'pp': pp
  92. })
  93. user.save(function (err) {
  94. if (err) throw err;
  95. });
  96.  
  97. var url = request.protocol + '://' + request.get('host') + '/login'
  98. response.writeHead(301,
  99. {Location: url}
  100. );
  101. //response.redirect('/login');
  102. response.end();
  103. });
  104.  
  105. app.all('/doLogin', passport.authenticate('local'), function (req, res) {
  106. console.log('abc');
  107.  
  108. res.redirect('/');
  109. });
  110.  
  111. app.listen(port);
  112.  
  113. doctype html
  114. html
  115. head
  116. title.
  117. Fonebook
  118. link(rel='stylesheet', href='/assets/bootstrap/css/bootstrap.min.css')
  119. script(src='https://code.jquery.com/jquery-2.2.0.min.js')
  120. script(src='/assets/bootstrap/js/bootstrap.min.js')
  121. body
  122. div.container
  123. h3.
  124. The Fonebook
  125. form(method="post",action="/doLogin",class="center",id="loginForm")
  126. div.panel.panel-info
  127. div.panel-heading.
  128. Login
  129. div.panel-body
  130. div.col-md-offset-3.col-md-6.col-md-offset-3.form-group
  131. label.
  132. Email:
  133. input.form-control(id="email", type="email", name="email", placeholder="Enter email ")
  134. div.col-md-offset-3.col-md-6.col-md-offset-3.form-group
  135. label.
  136. Password:
  137. input.form-control(id="password", type="password", name="password")
  138. div.col-md-offset-3.col-md-6.col-md-offset-3.form-group
  139. a(href='register').
  140. Don't have an account?
  141. div.panel-footer
  142. button.btn.btn-info(type="submit").
  143. Login
  144.  
  145. {
  146. "name": "fonebook",
  147. "version": "1.0.0",
  148. "description": "a simple phonebook",
  149. "main": "app.js",
  150. "scripts": {
  151. "test": "echo "Error: no test specified" && exit 1"
  152. },
  153. "keywords": [
  154. "phonebook"
  155. ],
  156. "author": "Orion",
  157. "license": "ISC",
  158. "dependencies": {
  159. "express": "^4.13.4",
  160. "express-session": "^1.13.0",
  161. "jade": "^1.11.0",
  162. "mongoose": "^4.3.6",
  163. "multer": "^1.1.0",
  164. "passport": "^0.3.2",
  165. "passport-local": "^1.0.0",
  166. "passport-local-mongoose": "^4.0.0"
  167. }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement