UserInteractions.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const bodyParser = require("body-parser");
  2. const express = require("express");
  3. let session = require('express-session')
  4. module.exports = function UserInteractions(opts) {
  5. async function sha256(message) {
  6. // encode as UTF-8
  7. const msgBuffer = new TextEncoder().encode(message);
  8. // hash the message
  9. const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
  10. // convert ArrayBuffer to Array
  11. const hashArray = Array.from(new Uint8Array(hashBuffer));
  12. // convert bytes to hex string
  13. const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  14. return hashHex;
  15. }
  16. let app = opts.app;
  17. app.use(session({
  18. secret: "rtifhg5878fj",
  19. resave: false,
  20. saveUninitialized: false,
  21. cookie: {
  22. secure: "auto"
  23. }
  24. }))
  25. app.use(bodyParser.json({"limit": "200mb"}));
  26. app.use(express.json());
  27. let db = opts.db;
  28. console.log("init")
  29. app.post("/userapi", (req, res) => {
  30. res.end(JSON.stringify(req.session));
  31. })
  32. app.post("/login", async function (req, res) {
  33. db.execute("SELECT uuid from user where username = ? and password = ?", [req.body.username, await sha256(req.body.password)], function (err, result) {
  34. if (result.length === 0) {
  35. res.status(500).json({code: 500, R: "DNE"})
  36. return;
  37. }
  38. req.session.uuid = result[0].uuid;
  39. res.header("").status(200).json({code: 200, R: "SS", uid: result[0].uuid});
  40. })
  41. })
  42. app.post("/register", function (req, res) {
  43. db.execute("SELECT uuid FROM user WHERE username = ?", [req.body.username], async function (err, rows) {
  44. if (req.body.username === undefined || req.body.username === "" || req.body.username === null || req.body.password === undefined || req.body.password === "" || req.body.password === null) {
  45. res.status(500).json({code: 500, R: "PE"})
  46. return;
  47. }
  48. if (err) {
  49. console.log(err);
  50. res.status(500).json({code: 500, R: "UNE"});
  51. return;
  52. }
  53. if (rows.length === 0) {
  54. db.execute("INSERT INTO user (uuid, username, email, password, avatar, time) values (?,?,?,?,?,?)", [crypto.randomUUID(), req.body.username, null, await sha256(req.body.password), null, Date.now()]);
  55. res.json({code: 200, R: "SS"});
  56. return;
  57. }
  58. res.status(500).json({code: 500, R: "UE"});
  59. return;
  60. })
  61. })
  62. }