login_controller.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. import Test1Model from "../../../test/models/test1_model";
  12. import Test2Model from "../../../test/models/test2_model";
  13. import Test3Model from "../../../test/models/test3_model";
  14. class LoginController extends BaseController {
  15. /**
  16. * 登录页面
  17. *
  18. * @param {object} request
  19. * @param {object} response
  20. * @return {void|Mixed}
  21. */
  22. index(request, response) {
  23. let renderData = {
  24. layout: false,
  25. };
  26. let managerSessionData = request.session.managerData;
  27. if (managerSessionData !== undefined) {
  28. return response.redirect("/dashboard");
  29. }
  30. response.render('users/views/login/index', renderData);
  31. }
  32. /**
  33. * 登录操作
  34. *
  35. * @param {object} request
  36. * @param {object} response
  37. * @return {string}
  38. */
  39. async login(request, response) {
  40. let username = request.body.username;
  41. let password = request.body.password;
  42. let managerModel = new ManagerModel();
  43. let responseData = {
  44. error: 0,
  45. msg: ''
  46. };
  47. try {
  48. let managerData = await managerModel.validLogin(username, password);
  49. // 成功后写入session
  50. let currentTime = new Date().getTime();
  51. let sessionToken = crypto.createHmac('sha1', currentTime + '').update(managerData.username)
  52. .digest().toString('base64');
  53. let managerSession = {
  54. username: managerData.username,
  55. loginTime: currentTime,
  56. sessionToken: sessionToken,
  57. userID: managerData.id,
  58. permission: managerData.permission === undefined ? '' : managerData.permission,
  59. superAdmin: managerData.super_admin
  60. };
  61. request.session.managerData = managerSession;
  62. // 更新登录信息
  63. let ip = request.connection.remoteAddress;
  64. ip = ip.split(':');
  65. ip = ip[3] === undefined ? '' : ip[3];
  66. let updateData = {
  67. login_ip: ip,
  68. last_login: new Date().getTime()
  69. };
  70. let updateResult = managerModel.updateById(managerData._id, updateData);
  71. if (!updateResult) {
  72. throw {code: 44003, err: '更新登录信息失败!'};
  73. }
  74. } catch (error) {
  75. responseData.error = error.code;
  76. responseData.msg = error.err;
  77. }
  78. response.json(responseData);
  79. }
  80. /**
  81. * 退出操作
  82. *
  83. * @param {object} request
  84. * @param {object} response
  85. * @return {void}
  86. */
  87. logout(request, response) {
  88. // 清空session
  89. request.session.destroy();
  90. response.redirect('/login');
  91. }
  92. /**
  93. * 压测接口
  94. *
  95. * @param {object} request
  96. * @param {object} response
  97. * @return {void}
  98. */
  99. async test(request, response) {
  100. let responseData = {
  101. error: 0,
  102. msg: ''
  103. };
  104. try {
  105. // 第一个库的操作
  106. let test1Model = new Test1Model();
  107. let test1Result = await test1Model.test();
  108. if (!test1Result) {
  109. throw 'test1出错';
  110. }
  111. // 第二个库操作
  112. let test2Model = new Test2Model();
  113. let test2Result = await test2Model.test();
  114. if (!test2Result) {
  115. throw 'test2出错';
  116. }
  117. // 第三个库操作
  118. let test3Model = new Test3Model();
  119. let test3Result = await test3Model.test();
  120. if (!test3Result) {
  121. throw 'test3出错';
  122. }
  123. } catch (error) {
  124. console.log(error);
  125. responseData.error = 1;
  126. responseData.msg = error;
  127. }
  128. response.json(responseData);
  129. }
  130. }
  131. export default LoginController;