Advertisement
Guest User

express-mysql-auth

a guest
Dec 7th, 2019
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const express = require('express');
  2. const bcrypt = require('bcryptjs');
  3. const app = express();
  4. const saltRouds = 10;
  5. const session = require('express-session');
  6. const MySQLStore = require('mysql-express-session')(session);
  7. const LocalStrategy = require('passport-local').Strategy;
  8. const passport = require('passport');
  9.  
  10. /*
  11.     code du fichier "db.js" que j'ai mis dans un fichier a l'ecart
  12.     (modules)
  13.     --------------------------------------------------
  14.     const mysql = require('mysql');
  15.  
  16.     const config = {
  17.     host: 'localhost',
  18.     user: 'root',
  19.     password: '',
  20.     database: 'buildinglab'
  21.     }
  22.  
  23.     const connection = mysql.createConnection(config);
  24.     connection.connect();
  25.  
  26.     module.exports = connection;
  27. */
  28.  
  29. app.use((req, res, next) => {
  30.     res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
  31.     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  32.     next();
  33. });
  34.  
  35.  
  36. const config = {
  37.     host: 'localhost',
  38.     user: 'root',
  39.     password: '',
  40.     database: 'buildinglab'
  41. }
  42.  
  43.  
  44. app.use(express.urlencoded({ extended: true }))
  45. app.use(express.json());
  46.  
  47. const sessionStore = new MySQLStore(config);
  48. app.use(session({
  49.     secret: 'keyboard cat',
  50.     resave: false,
  51.     store: sessionStore,
  52.     saveUninitialized: false,
  53.     // cookie: { secure: true }
  54. }))
  55.  
  56. app.use(passport.initialize());
  57. app.use(passport.session());
  58.  
  59. app.get('/', (req, res) => {
  60.     res.send('home page')
  61. })
  62. app.get('/profil', (req, res) => {
  63.     res.json(req.url + ' ' + req.isAuthenticated());
  64. })
  65.  
  66. app.get('/login', (req, res, next) => {
  67.  
  68.     res.json(req.url + ' ' + req.isAuthenticated());
  69. })
  70.  
  71. app.post('/login',
  72.     passport.authenticate('local', { failureRedirect: '/login' }),
  73.     function(req, res) {
  74.         res.redirect('/profil');
  75.     });
  76.  
  77. passport.use(new LocalStrategy({
  78.         usernameField: 'email',
  79.         passwordField: 'password',
  80.         passReqToCallback: true,
  81.         session: true
  82.     },
  83.     (req, username, password, done) => {
  84.  
  85.         const db = require('./db');
  86.         db.query("SELECT id,password FROM users where email=?", [req.body.email], (err, results, fields) => {
  87.             if (err) { done(err) };
  88.  
  89.             if (results.length === 0) {
  90.                 return done(null, false);
  91.             }
  92.  
  93.             const hash = results[0].password.toString();
  94.             bcrypt.compare(req.body.password, hash, (err, response) => {
  95.                 if (response === true) {
  96.  
  97.                     return done(null, { user_id: results[0].id });
  98.                 } else {
  99.                     return done(null, false);
  100.                 }
  101.             })
  102.         })
  103.     }
  104. ));
  105.  
  106. app.post('/signup', (req, res, next) => {
  107.  
  108.     bcrypt.hash(req.body.password, saltRouds, (error, hash) => {
  109.         if (error) throw error;
  110.         const db = require('./db');
  111.         let insertUser = "INSERT INTO `users` SET `email`=?,`password`=? ";
  112.         db.query(insertUser, [req.body.email, hash], (error, results, fields) => {
  113.             if (error) throw error
  114.             let getUser = "SELECT LAST_INSERT_ID() AS user_id";
  115.             db.query(getUser, (error, results, fields) => {
  116.                 if (error) throw error
  117.                 const user_id = results[0];
  118.                 req.login(user_id, (error) => {
  119.                     if (error) throw error;
  120.  
  121.                     const authData = {
  122.                         isAuthenticated: req.isAuthenticated(),
  123.                         sessionId: req.sessionID,
  124.                         userId: results[0]
  125.                     }
  126.                     res.json(authData);
  127.                 })
  128.             })
  129.         })
  130.     })
  131.  
  132. })
  133.  
  134.  
  135. app.use((req, res, next) => {
  136.     res.send("Page Not Found");
  137. })
  138.  
  139. app.use((error, req, res, next) => {
  140.     if (error) throw error;
  141. })
  142.  
  143. passport.serializeUser(function(user_id, done) {
  144.     done(null, user_id);
  145. });
  146.  
  147. passport.deserializeUser(function(user_id, done) {
  148.     done(null, user_id);
  149. });
  150.  
  151. const PORT = process.env.PORT || 3000;
  152.  
  153. app.listen(PORT, () => {
  154.     console.log('le serveur est lancer sur le port ' + PORT)
  155. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement