login_controller.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * 登录页面控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/1
  6. * @version
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import ManagerModel from "../models/manager_model";
  10. import crypto from "crypto";
  11. class LoginController extends BaseController {
  12. /**
  13. * 登录页面
  14. *
  15. * @param {object} request
  16. * @param {object} response
  17. * @return {void|Mixed}
  18. */
  19. index(request, response) {
  20. let renderData = {
  21. layout: false,
  22. };
  23. let managerSessionData = request.session.managerData;
  24. if (managerSessionData !== undefined) {
  25. return response.redirect("/dashboard");
  26. }
  27. response.render('users/views/login/index', renderData);
  28. }
  29. /**
  30. * 登录操作
  31. *
  32. * @param {object} request
  33. * @param {object} response
  34. * @return {string}
  35. */
  36. async login(request, response) {
  37. let username = request.body.username;
  38. let password = request.body.password;
  39. let managerModel = new ManagerModel();
  40. let responseData = {
  41. error: 0,
  42. msg: ''
  43. };
  44. try {
  45. let managerData = await managerModel.validLogin(username, password);
  46. // 成功后写入session
  47. let currentTime = new Date().getTime();
  48. let sessionToken = crypto.createHmac('sha1', currentTime + '').update(managerData.username)
  49. .digest().toString('base64');
  50. let managerSession = {
  51. username: managerData.username,
  52. loginTime: currentTime,
  53. sessionToken: sessionToken,
  54. userID: managerData.id,
  55. permission: managerData.permission === undefined ? '' : managerData.permission,
  56. superAdmin: managerData.super_admin
  57. };
  58. request.session.managerData = managerSession;
  59. } catch (error) {
  60. responseData.error = error.code;
  61. responseData.msg = error.err;
  62. }
  63. response.json(responseData);
  64. }
  65. /**
  66. * 退出操作
  67. *
  68. * @param {object} request
  69. * @param {object} response
  70. * @return {void}
  71. */
  72. logout(request, response) {
  73. // 清空session
  74. request.session.destroy();
  75. response.redirect('/login');
  76. }
  77. }
  78. export default LoginController;