login_controller.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 VersionModel from "../models/version_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 versionList = [];
  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. let sessionUser = {
  52. ssoId: userData.id,
  53. username: userData.username,
  54. email: userData.useremail,
  55. mobile: userData.mobile,
  56. };
  57. request.session.sessionUser = sessionUser;
  58. // 记录用户数据到数据库
  59. let result = await userModel.markUser(sessionUser, request);
  60. // 获取偏好设置
  61. let settingModel = new SettingModel();
  62. preferenceSetting = await settingModel.getPreferenceSetting(request.session.sessionUser.id);
  63. if (!result) {
  64. throw '标记用户信息失败!';
  65. }
  66. // 获取版本信息
  67. let versionModel = new VersionModel();
  68. versionList = await versionModel.getVersionData();
  69. } catch (error) {
  70. console.log(error);
  71. return response.json({error: 1, msg: error});
  72. }
  73. response.json({error: 0, msg: '', login_ask: preferenceSetting.login_ask, version_list: JSON.stringify(versionList)});
  74. }
  75. }
  76. export default LoginController;