login_controller.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /**
  2. * 登录相关控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/8
  6. * @version
  7. */
  8. import UserModel from "../models/user_model";
  9. import SettingModel from "../models/setting_model";
  10. import CompilationModel from "../models/compilation_model";
  11. class LoginController {
  12. /**
  13. * 登录页面
  14. *
  15. * @param {object} request
  16. * @param {object} response
  17. * @return {void}
  18. */
  19. async index(request, response) {
  20. let sessionUser = request.session.sessionUser;
  21. if (sessionUser !== undefined && sessionUser.ssoId >= 0) {
  22. return response.redirect("/pm");
  23. }
  24. response.render('users/html/login', {});
  25. }
  26. /**
  27. * 登录操作
  28. *
  29. * @param {object} request
  30. * @param {object} response
  31. * @return {string}
  32. */
  33. async login(request, response) {
  34. let account = request.body.account;
  35. let password = request.body.pw;
  36. let preferenceSetting = {};
  37. let compilationList = [];
  38. try {
  39. // 调用接口验证登录信息
  40. let userModel = new UserModel();
  41. let responseData = await userModel.getInfoFromSSO(account, password);
  42. responseData = JSON.parse(responseData);
  43. if (typeof responseData !== 'object') {
  44. throw '邮箱/手机 或 密码错误';
  45. }
  46. if (responseData.length <= 0) {
  47. throw '接口返回数据错误';
  48. }
  49. // 正确登录后 存入session
  50. let userData = responseData[0];
  51. if (userData.mobile === '') {
  52. return response.json({error: 2,ssoId: userData.id});
  53. }
  54. let sessionUser = {
  55. ssoId: userData.id,
  56. username: userData.username,
  57. email: userData.useremail,
  58. mobile: userData.mobile,
  59. };
  60. request.session.sessionUser = sessionUser;
  61. // 记录用户数据到数据库
  62. let result = await userModel.markUser(sessionUser, request);
  63. // 获取偏好设置
  64. let settingModel = new SettingModel();
  65. preferenceSetting = await settingModel.getPreferenceSetting(request.session.sessionUser.id);
  66. if (!result) {
  67. throw '标记用户信息失败!';
  68. }
  69. let compilationModel = new CompilationModel();
  70. compilationList = preferenceSetting.login_ask === 1 ? await compilationModel.getList() : [];
  71. // 获取编办信息
  72. let sessionCompilation = request.session.sessionCompilation;
  73. if (preferenceSetting.login_ask === 0 && !sessionCompilation &&
  74. preferenceSetting.select_version !== '') {
  75. let compilationData = await compilationModel.getCompilationById(preferenceSetting.select_version);
  76. request.session.sessionCompilation = compilationData;
  77. }
  78. } catch (error) {
  79. console.log(error);
  80. return response.json({error: 1, msg: error});
  81. }
  82. response.json({
  83. error: 0,
  84. msg: '',
  85. login_ask: preferenceSetting.login_ask,
  86. compilation_list: JSON.stringify(compilationList),
  87. last_page: request.session.lastPage
  88. });
  89. }
  90. }
  91. export default LoginController;