login_controller.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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. real_name:managerData.real_name,
  56. loginTime: currentTime,
  57. sessionToken: sessionToken,
  58. userID: managerData.id,
  59. permission: managerData.permission === undefined ? '' : managerData.permission,
  60. superAdmin: managerData.super_admin
  61. };
  62. request.session.managerData = managerSession;
  63. // 更新登录信息
  64. let ip = request.connection.remoteAddress;
  65. ip = ip.split(':');
  66. ip = ip[3] === undefined ? '' : ip[3];
  67. let updateData = {
  68. login_ip: ip,
  69. last_login: new Date().getTime()
  70. };
  71. let updateResult = managerModel.updateById(managerData._id, updateData);
  72. if (!updateResult) {
  73. throw {code: 44003, err: '更新登录信息失败!'};
  74. }
  75. } catch (error) {
  76. responseData.error = error.code;
  77. responseData.msg = error.err;
  78. }
  79. response.json(responseData);
  80. }
  81. /**
  82. * 退出操作
  83. *
  84. * @param {object} request
  85. * @param {object} response
  86. * @return {void}
  87. */
  88. logout(request, response) {
  89. // 清空session
  90. request.session.destroy();
  91. response.redirect('/login');
  92. }
  93. /**
  94. * 压测接口
  95. *
  96. * @param {object} request
  97. * @param {object} response
  98. * @return {void}
  99. */
  100. async test(request, response) {
  101. let responseData = {
  102. error: 0,
  103. msg: ''
  104. };
  105. try {
  106. // 第一个库的操作
  107. let test1Model = new Test1Model();
  108. let test1Result = await test1Model.test();
  109. if (!test1Result) {
  110. throw 'test1出错';
  111. }
  112. // 第二个库操作
  113. let test2Model = new Test2Model();
  114. let test2Result = await test2Model.test();
  115. if (!test2Result) {
  116. throw 'test2出错';
  117. }
  118. // 第三个库操作
  119. let test3Model = new Test3Model();
  120. let test3Result = await test3Model.test();
  121. if (!test3Result) {
  122. throw 'test3出错';
  123. }
  124. } catch (error) {
  125. console.log(error);
  126. responseData.error = 1;
  127. responseData.msg = error;
  128. }
  129. response.json(responseData);
  130. }
  131. }
  132. export default LoginController;