Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var session = require('express-session');
- var session = require('cookie-session');
- var bodyParser = require('body-parser');
- var mysql= require('mysql');
- var validator = require('validator');
- var flash= require('connect-flash');
- var crypto= require('crypto');
- const bcrypt = require('bcrypt')
- var passport= require('passport');
- var LocalStrategy= require('passport-local').Strategy;
- var sess= require('express-session');
- // POUR TRAITER LES COOKIES
- let cookieParser = require('cookie-parser');
- var urlencodedParser = bodyParser.urlencoded({ extended: false }); //Used in add forms
- //Connection to DB
- var con = mysql.createConnection({
- host: "localhost",
- user: "root",
- password: "",
- database: 'riddle'
- });
- con.connect(function(err) {
- if (err) throw err;
- console.log("Connected!");
- });
- //Launch express
- var app = express();
- app.use(cookieParser());
- var infos="Fill in the form";
- //Session
- app.use(session({
- secret: 'bigSecret',
- resave: false,
- saveUninitialized: false
- }))
- app.use(passport.initialize());
- app.use(passport.session());
- app.use(flash());
- //Show form ----> ERROR : Unknown authentication strategy "local"
- app.get('/form', function(req, res) {
- res.render('formHome.ejs', { message : req.flash('message'),infos: infos});
- })
- //home page for sign in and sign up
- app.get('/form/Riddle', function(req, res) {
- infos="";
- res.render('formRiddle.ejs', { infos: infos});
- })
- //Show all riddle
- //Erro : Unknown authentication strategy "local"
- .get('/form/seeRiddle', /*passport.authenticate('local', { failureRedirect: '/form' }),*/function(req, res) {
- // *******************************************
- // ici tu peux check si le cookie existe grace a cookieParser
- // if(!req.cookies.user_cookie){
- return res.render('login')
- // } else {
- // all gooc
- // }
- // *******************************************
- infos="";
- var sql="SELECT name, content, answer FROM riddle";
- con.query(sql, function( error, result){
- if(!!error){
- console.log('Error in query : ');
- }else{
- console.log('SUCCESS!');
- result.forEach(function (result) {
- result.name=validator.unescape(result.name);
- result.content=validator.unescape(result.content);
- result.answer=validator.unescape(result.answer);
- })
- obj={print: result, info: infos};
- res.render('showRiddle.ejs', obj);
- }
- })
- }
- )
- // user sign up and inserting in database if everything is correct
- .post('/form/add/', urlencodedParser, function(req, res) {
- if (req.body.email != '' && req.body.name != '' && req.body.surname != '' && req.body.password != '') {
- req.body.email=validator.escape(req.body.email);
- req.body.password=validator.escape(req.body.password);
- req.body.name=validator.escape(req.body.name);
- req.body.surname=validator.escape(req.body.surname);
- var date=req.body.year+'.'+req.body.month+'.'+req.body.day;
- if(validator.isEmail(req.body.email)){
- var query="SELECT COUNT(*) AS nb FROM user WHERE email='"+req.body.email+"'";
- con.query(query, function(err, rows){
- if(rows[0].nb>0){
- console.log('Already account');
- infos="User already has an account";
- }
- else{
- console.log('No account');
- //I will hash pwd later
- 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' )";
- con.query(sql, function( error, rows, fields){
- if(!!error){
- console.log('Error in query : ');
- }else{
- infos="Added";
- console.log('SUCCESSSSS!');
- }
- }
- );
- }
- })
- }
- else{
- infos="Email not valid";
- }
- }
- else{
- infos="Missing informations\n";
- }
- res.redirect('/form');
- })
- //Allow the user to login and access to personnal page
- .post('/form/logIn/', urlencodedParser, function(req, res) {
- // plutot que de check que les deux sont la
- // check si un dex deux ne lest pas
- if(!req.body.emailLogin || !req.body.passwordLogin){
- return res.json({error: 'Email or password missing'});
- }
- //How to avoid to repeat it everytime ?
- req.body.emailLogin=validator.escape(req.body.emailLogin);
- req.body.passwordLogin=validator.escape(req.body.passwordLogin);
- if(validator.isEmail(req.body.emailLogin)){
- infos="Email Ok";
- var query="SELECT COUNT(*) AS nb FROM user WHERE email='"+req.body.emailLogin+"'";
- con.query(query, function(err, rows){
- if(!!err){ // pourquoi autant de tabs ??
- console.log('Error in query : ');
- }
- else{
- if(rows[0].nb>0){
- console.log('Email found');
- var sql="SELECT passwordHashed AS pw FROM user WHERE email='"+req.body.emailLogin+"'";
- con.query(sql, function(err, rows){
- if(!!err){
- console.log('Error in query : ');
- }
- else{
- if (( rows[0].pw == req.body.passwordLogin)){
- infos="Welcome to your personnal page.\n Here we will show all your riddle.";
- console.log('SUCCESS logging in!');
- // *******************************************
- // la tout va bien, donc tu peux mettre un cookie
- // avec res.cookie('user_cookie', '<user_token>').render|send|json|end()...
- // *******************************************
- }
- else{
- infos="Wrong password, try again";
- console.log('Failed loging in!');
- }
- }
- })
- }
- else{
- console.log('Email not found');
- infos="Email Not Found, try again";
- }
- }
- });
- /*
- module.exports = function(passport) {
- passport.serializeUser(function(user, done){
- done(null, false);
- });
- passport.deserializeUser(function(id, done){
- console.log("deserializeUser called", id);
- User.findById(id, function (err, user) {
- done(err, user);
- });
- });
- console.log("LocalStrategy called");
- passport.use('local', new LocalStrategy({
- usernameField: 'email',
- passwordField: 'password',
- passReqToCallback: true
- } , function (req, email, password, done){
- console.log('OK');
- var sql="SELECT COUNT(*) FROM user WHERE email='"+req.body.email+"' AND passwordHashed='"+req.body.password+"'";
- //Connection to the DB
- con.query(sql, function(err, rows){
- console.log('OKOK');
- console.log(err);
- console.log(rows);
- if (err) return done(req.flash('message',err));
- if(!rows.length){
- return done(null, false, req.flash('message','Invalid username or password.'));
- }
- return done(null, rows[0]);
- });
- //END connection
- */
- }
- else{
- infos="Email not valid";
- }
- else{
- infos="Missing informations\n";
- }
- res.redirect('/form');
- })
- //Add a riddle
- app.post('/form/addRiddle/', urlencodedParser, function(req, res) {
- if (req.body.riddle != '') {
- infos="Added";
- 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')";
- con.query(sql, function( error, rows, fields){
- if(!!error){
- console.log('Error in query : ');
- }else{
- console.log('SUCCESS!');
- }
- });
- }
- else{
- infos="Missing informations\n";
- }
- res.redirect('/form');
- })
- app.get('/form/personalAccount', function(req, res) {
- res.render('personalAccount.ejs', { infos: infos});
- }).use(function(req, res, next){
- res.redirect('/form');
- }).listen(8000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement