Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const mysql = require("../util/mysql.js");
  2. const errors = require("../util/errors");
  3. const crypto = require("crypto");
  4. async function querySignUp (data) {
  5.   const connection = await mysql.connection();
  6.   try {
  7.     console.log("at querySignUp...");
  8.     await connection.query("START TRANSACTION");
  9.     let usernameNo = await connection.query("SELECT COUNT (*) FROM user_table WHERE user_name = ?", [data.username]);
  10.     if (usernameNo[0]["COUNT (*)"] > 0) {
  11.       throw errors.usernameTakenError;
  12.     };
  13.     let emailNo = await connection.query("SELECT COUNT (*) FROM user_table WHERE email = ?", [data.email]);
  14.     if (emailNo[0]["COUNT (*)"] > 0) {
  15.       throw errors.userEmailTakenError;
  16.     };
  17.     let now = Date.now();
  18.     let hash = crypto.createHash("sha256");
  19.     hash.update(data.email + data.password + now);
  20.     let token = hash.digest("hex");
  21.     // encrypt password
  22.     let passwordHash = crypto.createHash("sha256");
  23.     passwordHash.update(data.password);
  24.     let encryptedPassword = passwordHash.digest("hex");
  25.     let userInfo = {
  26.       user_name: data.username,
  27.       user_password: encryptedPassword,
  28.       email: data.email,
  29.       provider: "native",
  30.       access_expired: now + 30 * 24 * 60 * 60 * 1000, // 30 days
  31.       token,
  32.       points: 0,
  33.       level_id: 1
  34.     };
  35.     await connection.query("INSERT INTO user_table SET ?", userInfo);
  36.     let getUserInfo = await connection.query("SELECT user_table.*, level_table.level_name FROM user_table INNER JOIN level_table ON user_table.level_id = level_table.id WHERE user_table.email = ?", [data.email]);
  37.     await connection.query("COMMIT");
  38.     return userInfo;
  39.   } catch (err) {
  40.     await connection.query("ROLLBACK");
  41.     console.log('ROLLBACK at querySignUp', err);
  42.     throw err;
  43.   } finally {
  44.     await connection.release();
  45.   }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement