Advertisement
Guest User

Untitled

a guest
May 27th, 2018
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var express = require('express');
  3. var session = require('express-session');
  4. var session = require('cookie-session');
  5.  
  6. var bodyParser = require('body-parser');
  7. var mysql= require('mysql');
  8. var validator = require('validator');
  9. var flash= require('connect-flash');
  10. var crypto= require('crypto');
  11. const bcrypt = require('bcrypt')
  12.  
  13. var passport= require('passport');
  14. var LocalStrategy= require('passport-local').Strategy;
  15. var sess= require('express-session');
  16.  
  17. // POUR TRAITER LES COOKIES
  18. let cookieParser = require('cookie-parser');
  19.  
  20. var urlencodedParser = bodyParser.urlencoded({ extended: false }); //Used in add forms
  21.  
  22. //Connection to DB
  23. var con = mysql.createConnection({
  24.   host: "localhost",
  25.   user: "root",
  26.   password: "",
  27.   database: 'riddle'
  28. });
  29.  
  30. con.connect(function(err) {
  31.   if (err) throw err;
  32.   console.log("Connected!");
  33.  
  34. });
  35.  
  36.  
  37.  
  38. //Launch express
  39. var app = express();
  40.  
  41. app.use(cookieParser());
  42.  
  43. var infos="Fill in the form";
  44. //Session
  45.  
  46. app.use(session({
  47.   secret: 'bigSecret',
  48.   resave: false,
  49.   saveUninitialized: false
  50. }))
  51. app.use(passport.initialize());
  52. app.use(passport.session());
  53.  
  54. app.use(flash());
  55.  
  56.  
  57. //Show form  ----> ERROR : Unknown authentication strategy "local"
  58. app.get('/form', function(req, res) {
  59.  
  60.    res.render('formHome.ejs', { message : req.flash('message'),infos: infos});
  61.  
  62. })
  63.  
  64. //home page for sign in and sign up
  65. app.get('/form/Riddle', function(req, res) {
  66.   infos="";
  67.    res.render('formRiddle.ejs', { infos: infos});
  68.  
  69. })
  70.  
  71.  
  72. //Show all riddle
  73. //Erro : Unknown authentication strategy "local"
  74. .get('/form/seeRiddle', /*passport.authenticate('local', { failureRedirect: '/form' }),*/function(req, res) {
  75.  
  76.   // *******************************************
  77.   //  ici tu peux check si le cookie existe grace a cookieParser
  78.   // if(!req.cookies.user_cookie){
  79.       return res.render('login')
  80.   // } else {
  81.     // all gooc
  82.   // }
  83.   // *******************************************
  84.     infos="";
  85.     var sql="SELECT name, content, answer FROM riddle";
  86.     con.query(sql, function( error, result){
  87.           if(!!error){
  88.           console.log('Error in query : ');
  89.  
  90.           }else{
  91.           console.log('SUCCESS!');
  92.  
  93.           result.forEach(function (result) {
  94.           result.name=validator.unescape(result.name);
  95.           result.content=validator.unescape(result.content);
  96.           result.answer=validator.unescape(result.answer);
  97.         })
  98.  
  99.           obj={print: result, info: infos};
  100.           res.render('showRiddle.ejs', obj);
  101.           }
  102.       })
  103.   }
  104. )
  105.  
  106.  
  107. // user sign up and inserting in database if everything is correct
  108. .post('/form/add/', urlencodedParser, function(req, res) {
  109.  
  110.     if (req.body.email != '' && req.body.name != '' && req.body.surname != '' && req.body.password != '') {
  111.           req.body.email=validator.escape(req.body.email);
  112.           req.body.password=validator.escape(req.body.password);
  113.           req.body.name=validator.escape(req.body.name);
  114.           req.body.surname=validator.escape(req.body.surname);
  115.           var date=req.body.year+'.'+req.body.month+'.'+req.body.day;
  116.         if(validator.isEmail(req.body.email)){
  117.  
  118.                  var query="SELECT COUNT(*) AS nb FROM user WHERE email='"+req.body.email+"'";
  119.                
  120.                 con.query(query, function(err, rows){
  121.                   if(rows[0].nb>0){
  122.                       console.log('Already account');
  123.                       infos="User already has an account";
  124.                   }
  125.                   else{
  126.                     console.log('No account');
  127.                  
  128.                             //I will hash pwd later
  129.                             var sql="INSERT INTO user(email, name, surname, passwordHashed, dateBirth, role) VALUES ('"+req.body.email+"', '"+req.body.name+"', '"+req.body.surname+"', '"+req.body.password+"', '"+date+"','-1' )";
  130.                             con.query(sql, function( error, rows, fields){
  131.                                 if(!!error){
  132.                                     console.log('Error in query : ');
  133.  
  134.                                 }else{
  135.                                   infos="Added";
  136.                                   console.log('SUCCESSSSS!');
  137.                                 }
  138.                             }
  139.                             );
  140.                     }
  141.                   })
  142.             }
  143.         else{
  144.           infos="Email not valid";
  145.         }
  146.        
  147.     }
  148.     else{
  149.        infos="Missing informations\n";
  150.     }
  151.     res.redirect('/form');
  152. })
  153.  
  154.  
  155. //Allow the user to login and access to personnal page
  156. .post('/form/logIn/', urlencodedParser, function(req, res) {
  157.    
  158.     // plutot que de check que les deux sont la
  159.     // check si un dex deux ne lest pas
  160.     if(!req.body.emailLogin || !req.body.passwordLogin){
  161.       return res.json({error: 'Email or password missing'});
  162.     }
  163.  
  164.  
  165.     //How to avoid to repeat it everytime ?
  166.     req.body.emailLogin=validator.escape(req.body.emailLogin);
  167.     req.body.passwordLogin=validator.escape(req.body.passwordLogin);
  168.    
  169.     if(validator.isEmail(req.body.emailLogin)){
  170.          infos="Email Ok";
  171.  
  172.             var query="SELECT COUNT(*) AS nb FROM user WHERE email='"+req.body.emailLogin+"'";
  173.  
  174.             con.query(query, function(err, rows){
  175.  
  176.                if(!!err){ // pourquoi autant de tabs ??
  177.                                   console.log('Error in query : ');
  178.               }
  179.               else{
  180.                       if(rows[0].nb>0){
  181.                                   console.log('Email found');
  182.                                                     var sql="SELECT passwordHashed AS pw FROM user WHERE email='"+req.body.emailLogin+"'";
  183.                                                     con.query(sql, function(err, rows){
  184.                                                                 if(!!err){
  185.                                                                 console.log('Error in query : ');
  186.                                                                 }
  187.                                                                 else{
  188.                                                                    if (( rows[0].pw == req.body.passwordLogin)){
  189.                                       infos="Welcome to your personnal page.\n Here we will show all your riddle.";
  190.                                       console.log('SUCCESS logging in!');
  191.                                                             // *******************************************
  192.                                           // la tout va bien, donc tu peux mettre un cookie
  193.                                           // avec res.cookie('user_cookie', '<user_token>').render|send|json|end()...
  194.                                                                                // *******************************************
  195.                                                                            
  196.                                                                    }
  197.                                                                    else{
  198.                                                                             infos="Wrong password, try again";
  199.                                                                             console.log('Failed loging in!');      
  200.                                                                    }
  201.                                                                }
  202.                                                            })
  203.                       }
  204.                       else{
  205.                         console.log('Email not found');
  206.                         infos="Email Not Found, try again";
  207.                       }
  208.              }
  209.         });
  210.              
  211.          
  212.  
  213.  
  214.  
  215.         /*
  216.  
  217. module.exports = function(passport) {
  218.  
  219.     passport.serializeUser(function(user, done){
  220.         done(null, false);
  221.     });
  222.     passport.deserializeUser(function(id, done){
  223.         console.log("deserializeUser called", id);
  224.         User.findById(id, function (err, user) {
  225.             done(err, user);
  226.         });
  227.     });
  228.  
  229.  
  230.  
  231.     console.log("LocalStrategy called");
  232. passport.use('local', new LocalStrategy({
  233.  
  234.   usernameField: 'email',
  235.  
  236.   passwordField: 'password',
  237.  
  238.   passReqToCallback: true
  239. } , function (req, email, password, done){
  240.       console.log('OK');
  241.       var sql="SELECT COUNT(*) FROM user WHERE email='"+req.body.email+"' AND passwordHashed='"+req.body.password+"'";
  242.              
  243.        //Connection to the DB      
  244.       con.query(sql, function(err, rows){
  245.  console.log('OKOK');
  246.           console.log(err);
  247.           console.log(rows);
  248.  
  249.         if (err) return done(req.flash('message',err));
  250.         if(!rows.length){
  251.           return done(null, false, req.flash('message','Invalid username or password.'));
  252.         }
  253.  
  254.                    
  255.         return done(null, rows[0]);
  256.       });
  257.       //END connection
  258. */
  259.  
  260.           }
  261.       else{
  262.         infos="Email not valid";
  263.      
  264.       }      
  265.  
  266.   else{
  267.      infos="Missing informations\n";
  268.    
  269.   }
  270.   res.redirect('/form');
  271.  
  272. })
  273.  
  274.  
  275.  
  276. //Add a riddle
  277. app.post('/form/addRiddle/', urlencodedParser, function(req, res) {
  278.     if (req.body.riddle != '') {
  279.  
  280.             infos="Added";
  281.              var sql="INSERT INTO riddle(name, content, answer, owner) VALUES ('"+validator.escape(req.body.name)+"', '"+validator.escape(req.body.content)+"', '"+validator.escape(req.body.answer)+"', 'lol@gmail.com')";
  282.        con.query(sql, function( error, rows, fields){
  283.             if(!!error){
  284.                 console.log('Error in query : ');
  285.  
  286.             }else{
  287.                 console.log('SUCCESS!');
  288.             }
  289.  
  290.        });
  291.        
  292.  
  293.     }
  294.     else{
  295.        infos="Missing informations\n";
  296.     }
  297.     res.redirect('/form');
  298. })
  299.  
  300. app.get('/form/personalAccount', function(req, res) {
  301.    res.render('personalAccount.ejs', { infos: infos});
  302.  
  303. }).use(function(req, res, next){
  304.     res.redirect('/form');
  305. }).listen(8000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement