Users.js 1.84 KB
const cryptoJs = require("crypto-js");
const express = require("express");
const mysql2 = require("mysql2/promise");
const { connectOption } = require("../libs/MySQL");
const usersRouter = express.Router();

async function route() {
  const connection = await mysql2.createConnection(connectOption);

  // (loginID) => null | ID(str)
  usersRouter.get("/", async (req, res) => {
    console.log("/db/users");
    try {
      const queryString = `
          SELECT ID FROM users us
            WHERE us.loginID = '${req.query.loginID}'`;
      const [results] = await connection.query(queryString);
      res.send(results.length ? results[0].ID.toString() : null);
    } catch (e) {
      console.log(e);
      res.end();
    }
  });

  // (loginID, loginPW) => null | "correct"
  usersRouter.get("/check", async (req, res) => {
    console.log("/db/users/check");
    try {
      const queryString = `
          SELECT loginPW FROM users us
            WHERE us.loginID = '${req.query.loginID}'`;
      const [results] = await connection.query(queryString);
      res.send(results[0].loginPW === req.query.loginPW ? "correct" : null);
    } catch (e) {
      console.log(e);
      res.end();
    }
  });

  // (loginID, loginPW, name, ical) => ID
  usersRouter.post("/", async (req, res) => {
    console.log("post /db/users/");
    try {
      const hashpw = cryptoJs.SHA256(req.body.loginPW).toString();
      let queryString = `
        INSERT INTO users
          (loginID, loginPW, name, ical)
        VALUES ('${req.body.loginID}', '${hashpw}', '${req.body.name}', '${req.body.ical}')`;
      await connection.query(queryString);

      queryString = `SELECT LAST_INSERT_ID() ID`;
      const [results] = await connection.query(queryString);
      res.send(results[0]);
    } catch (e) {
      console.log(e);
      res.end();
    }
  });
}
route();

module.exports = usersRouter;