login_controller.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. if(preferenceSetting.login_ask === 1 || preferenceSetting.select_version === ''){
  71. preferenceSetting.login_ask = 1;
  72. compilationList = await compilationModel.getList();
  73. }
  74. else{
  75. compilationList = [];
  76. }
  77. // 获取编办信息
  78. let sessionCompilation = request.session.sessionCompilation;
  79. if (preferenceSetting.login_ask === 0 && !sessionCompilation &&
  80. preferenceSetting.select_version !== '') {
  81. let compilationData = await compilationModel.getCompilationById(preferenceSetting.select_version);
  82. // 判断当前用户的是使用免费版还是专业版
  83. let compilationVersion = await userModel.getVersionFromUpgrade(sessionUser.ssoId, preferenceSetting.select_version);
  84. request.session.compilationVersion = compilationVersion;
  85. request.session.sessionCompilation = compilationData;
  86. if(request.session.sessionUser.latest_used !== preferenceSetting.select_version) await userModel.updateLatestUsed(request.session.sessionUser.id,preferenceSetting.select_version);
  87. }
  88. } catch (error) {
  89. console.log(error);
  90. return response.json({error: 1, msg: error});
  91. }
  92. console.log(`${request.session.sessionUser.real_name}--id:${request.session.sessionUser.id}--登录了系统`);
  93. response.json({
  94. error: 0,
  95. msg: '',
  96. login_ask: preferenceSetting.login_ask,
  97. compilation_list: JSON.stringify(compilationList),
  98. last_page: request.session.lastPage
  99. });
  100. }
  101. }
  102. export default LoginController;