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. };
  57. request.session.managerData = managerSession;
  58. } catch (error) {
  59. responseData.error = error.code;
  60. responseData.msg = error.err;
  61. }
  62. response.json(responseData);
  63. }
  64. /**
  65. * 退出操作
  66. *
  67. * @param {object} request
  68. * @param {object} response
  69. * @return {void}
  70. */
  71. logout(request, response) {
  72. // 清空session
  73. request.session.destroy();
  74. response.redirect('/login');
  75. }
  76. }
  77. export default LoginController;