Backend MySQL

PHOTO EMBED

Wed May 03 2023 19:43:05 GMT+0000 (Coordinated Universal Time)

Saved by @luisjdominguezp #nodejs

const express = require("express");
const mysql = require("mysql2");
const cors = require("cors");

const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const session = require("express-session");

const bcrypt = require('bcrypt');
const saltRound = 10;
 
const app = express();
 
app.use(express.json());
app.use(
    cors({
        origin: ["http://localhost:3000"],
        methods: ["GET", "POST"],
        credentials: true,
    })
);
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: true }));
app.use (
    session ({
        key: "userId",
        secret: "subscribe",
        resave: false,
        saveUninitialized: false,
        cookie: {
            expires: 60 * 60 * 24,
        },
    })
);
const db = mysql.createConnection({
    user: "username",
    host: "localhost",
    password: "PASSWORD-MYSQL",
    database: "usuarios",
});
 
app.post('/register', (req, res)=> {
    const username = req.body.username;
    const password = req.body.password;
    bcrypt.hash(password,saltRound, (err, hash) => {
    if (err) {
            console.log(err)
    }
   
    let insertQuery = 'INSERT INTO ?? (??,??) VALUES (?,?)';
    let query = mysql.format(insertQuery, ["usuarios", "username", "password", username, hash]);
    db.query(query, function(err, response,fields) {
        if (err) {
            console.log("Error: ");
            console.error(err);
        }
        // rows added
        console.log("Response: ");
        console.log(response);
        if  (response.affectedRows==1){
            res.send("OK");
        } else {
            res.send("NO");
        }
    });
    })
});
app.get("/login", (req, res) => {
  if (req.session.user) {
    res.send({ loggedIn: true, user: req.session.user });
  } else {
    res.send({ loggedIn: false });
  }
});
app.post('/login', (req, res) => {
 const username = req.body.username;
 const password = req.body.password;
 
 db.execute(
        "SELECT * FROM usuarios WHERE username = ?;",
        [username], 
        (err, result)=> {
            if (err) {
                res.send({err: err});
            }
            if (result.length > 0) {
                bcrypt.compare(password, result[0].password, (error, response) => {
                    if (response) {
                        req.session.user = result;
                        console.log(req.session.user[0].username);
                        if (req.session.user[0].username === username) {
                            res.send("OK");
                        } else {
                            res.send("NO");
                        }
                    } else{
                        res.send({message: "Wrong username/ password comination!"}); 
                    }
                });
            } else {
                res.send({ message: "User doesn't exists"});
            }
        }
    );
});
 
app.listen(3001, () => {
    console.log("running server");
});
content_copyCOPY