Personal blog written from scratch using Node.js, Bootstrap, and MySQL. https://jrtechs.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.8 KiB

  1. //file io
  2. const utils = require('../../utils/utils.js');
  3. //update db
  4. const sql = require('../../utils/sql');
  5. /**
  6. * Processes post data to see if the user has successfully
  7. * logged in. If the user has logged in successfully, a session
  8. * variable is set and the page is refreshed.
  9. *
  10. * @param request
  11. * @returns {Promise}
  12. */
  13. const processLogin = function(request)
  14. {
  15. return new Promise(function(resolve, reject)
  16. {
  17. utils.getPostData(request).then(function(postData)
  18. {
  19. return sql.checkLogin(postData);
  20. }).then(function(loginResult)
  21. {
  22. if(loginResult.pass)
  23. {
  24. request.session.user = loginResult.user;
  25. console.log("user has logged in");
  26. resolve("<meta http-equiv=\"refresh\" content=\"0\">");
  27. }
  28. else
  29. {
  30. console.log("password incorrect");
  31. resolve("Password incorrect");
  32. }
  33. }).catch(function(err)
  34. {
  35. reject(err);
  36. })
  37. });
  38. };
  39. module.exports=
  40. {
  41. /**
  42. * Renders the contents of the login page of the website
  43. *
  44. * @param request express request containing post data
  45. * @returns {Promise} resolves html of login page
  46. */
  47. main: function(request)
  48. {
  49. return new Promise(function(resolve, reject)
  50. {
  51. Promise.all([utils.include("./admin/login/login.html"),
  52. require("../../sidebar/sidebar.js").main(),
  53. processLogin(request)]).then(function(html)
  54. {
  55. resolve(html.join('') + "</div>");
  56. }).catch(function(err)
  57. {
  58. reject(err);
  59. })
  60. });
  61. },
  62. };