Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const bcrypt = require('bcryptjs');
- const app = express();
- const saltRouds = 10;
- const session = require('express-session');
- const MySQLStore = require('mysql-express-session')(session);
- const LocalStrategy = require('passport-local').Strategy;
- const passport = require('passport');
- /*
- code du fichier "db.js" que j'ai mis dans un fichier a l'ecart
- (modules)
- --------------------------------------------------
- const mysql = require('mysql');
- const config = {
- host: 'localhost',
- user: 'root',
- password: '',
- database: 'buildinglab'
- }
- const connection = mysql.createConnection(config);
- connection.connect();
- module.exports = connection;
- */
- app.use((req, res, next) => {
- res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
- res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
- next();
- });
- const config = {
- host: 'localhost',
- user: 'root',
- password: '',
- database: 'buildinglab'
- }
- app.use(express.urlencoded({ extended: true }))
- app.use(express.json());
- const sessionStore = new MySQLStore(config);
- app.use(session({
- secret: 'keyboard cat',
- resave: false,
- store: sessionStore,
- saveUninitialized: false,
- // cookie: { secure: true }
- }))
- app.use(passport.initialize());
- app.use(passport.session());
- app.get('/', (req, res) => {
- res.send('home page')
- })
- app.get('/profil', (req, res) => {
- res.json(req.url + ' ' + req.isAuthenticated());
- })
- app.get('/login', (req, res, next) => {
- res.json(req.url + ' ' + req.isAuthenticated());
- })
- app.post('/login',
- passport.authenticate('local', { failureRedirect: '/login' }),
- function(req, res) {
- res.redirect('/profil');
- });
- passport.use(new LocalStrategy({
- usernameField: 'email',
- passwordField: 'password',
- passReqToCallback: true,
- session: true
- },
- (req, username, password, done) => {
- const db = require('./db');
- db.query("SELECT id,password FROM users where email=?", [req.body.email], (err, results, fields) => {
- if (err) { done(err) };
- if (results.length === 0) {
- return done(null, false);
- }
- const hash = results[0].password.toString();
- bcrypt.compare(req.body.password, hash, (err, response) => {
- if (response === true) {
- return done(null, { user_id: results[0].id });
- } else {
- return done(null, false);
- }
- })
- })
- }
- ));
- app.post('/signup', (req, res, next) => {
- bcrypt.hash(req.body.password, saltRouds, (error, hash) => {
- if (error) throw error;
- const db = require('./db');
- let insertUser = "INSERT INTO `users` SET `email`=?,`password`=? ";
- db.query(insertUser, [req.body.email, hash], (error, results, fields) => {
- if (error) throw error
- let getUser = "SELECT LAST_INSERT_ID() AS user_id";
- db.query(getUser, (error, results, fields) => {
- if (error) throw error
- const user_id = results[0];
- req.login(user_id, (error) => {
- if (error) throw error;
- const authData = {
- isAuthenticated: req.isAuthenticated(),
- sessionId: req.sessionID,
- userId: results[0]
- }
- res.json(authData);
- })
- })
- })
- })
- })
- app.use((req, res, next) => {
- res.send("Page Not Found");
- })
- app.use((error, req, res, next) => {
- if (error) throw error;
- })
- passport.serializeUser(function(user_id, done) {
- done(null, user_id);
- });
- passport.deserializeUser(function(user_id, done) {
- done(null, user_id);
- });
- const PORT = process.env.PORT || 3000;
- app.listen(PORT, () => {
- console.log('le serveur est lancer sur le port ' + PORT)
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement