Guest User

Untitled

a guest
Aug 19th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. const express = require('express');
  2. const app = express();
  3. const bodyParser = require('body-parser');
  4. const session = require('express-session');
  5. const passport = require('passport');
  6. const localStrategy = require('passport-local').Strategy;
  7. const db = require('./db');
  8. const morgan = require('morgan');
  9. const flash = require('connect-flash');
  10. require('./passport');
  11.  
  12. app.use(bodyParser.urlencoded({extended: false}));
  13. app.use(session({
  14. secret: 'oursercret',
  15. resave: true,
  16. saveUnitialized: true
  17. }));
  18. app.use(passport.initialize());
  19. app.use(passport.session());
  20. app.use(morgan('dev'));
  21. app.use(require('./routes'));
  22.  
  23. app.set("view engine", "ejs");
  24. app.set("views", "./views");
  25.  
  26. app.listen(8000, function(err){
  27. if(!err){
  28. console.log('OK');
  29. } else {
  30. console.log('WTF?');
  31. }
  32. });
  33.  
  34. const passport = require('passport');
  35. var LocalStrategy = require('passport-local').Strategy;
  36. var { User } = require('./db');
  37.  
  38.  
  39.  
  40. passport.serializeUser(function(user, done){
  41. done(null, user.id);
  42. });
  43.  
  44. passport.deserializeUser(function(id, done){
  45. User.findById(id, function(err, user){
  46. done(err, user);
  47. });
  48. });
  49.  
  50. passport.use('signin', new LocalStrategy(
  51. {
  52. usernameField: 'email',
  53. passwordField: 'password'
  54. },
  55. async (email, password, done) => {
  56. try {
  57. const user = await User.findOne({
  58. where: { email }
  59. });
  60.  
  61. if (!user) {
  62. done(null, false, {
  63. message: 'Incorrect email'
  64. // Better
  65. // message: 'Incorrect email or password'
  66. });
  67.  
  68. return;
  69. }
  70.  
  71. if (user.password !== password) {
  72. done(null, false, {
  73. message: 'Incorrect password'
  74. // Better
  75. // message: 'Incorrect email or password'
  76. });
  77.  
  78. return;
  79. }
  80.  
  81. done(null, user);
  82. } catch (error) {
  83. done(error);
  84. }
  85. })
  86. );
  87.  
  88. passport.use('signup', new LocalStrategy(
  89. {
  90. usernameField: 'email',
  91. passwordField: 'password'
  92. },
  93. async (email, password, done) => {
  94. try {
  95. const findUser = await User.findOne({
  96. where: { email }
  97. });
  98.  
  99. if (findUser) {
  100. done(null, false, {
  101. message: 'Email already taken'
  102. });
  103.  
  104. return;
  105. }
  106.  
  107. const user = await User.create({
  108. email,
  109. password
  110. });
  111.  
  112. done(null, user);
  113. } catch (error) {
  114. done(error);
  115. }
  116. }
  117. ));
  118.  
  119. const Sequelize = require('sequelize');
  120.  
  121. var opt = {
  122. schema: 'kik_shema'
  123. };
  124.  
  125. const db = new Sequelize('postgres://alejandro:Leomessi10@127.0.0.1:5434/bd', opt);
  126.  
  127. const User = db.define('kik', {// kik - название таблицы
  128. email: Sequelize.STRING,
  129. password: Sequelize.STRING,
  130. //username: Sequelize.TEXT,
  131. }, {
  132. timestamps: false, //ЛУЧШЕ ВКЛЮЧИТЬ, ПОКАЗЫВАЕТ КОГДА БЫЛ СОЗДАН ОБЪЪЕКТ И КОГДА ОБНОВЛЯЛСЯ
  133. });
  134.  
  135. module.exports = {
  136. User,
  137. db
  138. };
  139.  
  140. const passport = require('passport');
  141. const { Router } = require('express');
  142. const router = new Router();
  143.  
  144. router.get('/signup', (req, res) => {
  145. res.render('signup');
  146. });
  147.  
  148. router.get('/signin', (req, res) => {
  149. res.render('signin');
  150. });
  151.  
  152. router.get('/index', (req, res) => {
  153. res.render('index');
  154. });
  155.  
  156. router.post('/signin', function(req, res, next) {
  157. passport.authenticate('signin', function(err, user, info) {
  158. if (err) { return next(err); }
  159. if (!user) { return res.redirect('/signin'); }
  160. req.logIn(user, function(err) {
  161. if (err) { return next(err); }
  162. return res.redirect('/users/' + user.username);
  163. });
  164. })(req, res, next);
  165. });
  166.  
  167.  
  168. router.post('/signup', passport.authenticate('signup', {
  169. //successRedirect: '/index', //из passport.use берется signup
  170. failureRedirect: '/signup',
  171. failureFlash: false
  172. }), function(req, res, next){
  173. res.redirect('/index');
  174. });
  175.  
  176. module.exports = router;
Add Comment
Please, Sign In to add comment