login_controller.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. class LoginController {
  11. /**
  12. * 登录页面
  13. *
  14. * @param {object} request
  15. * @param {object} response
  16. * @return {void}
  17. */
  18. index(request, response) {
  19. let sessionUser = request.session.sessionUser;
  20. if (sessionUser !== undefined && sessionUser.ssoId >= 0) {
  21. return response.redirect("/pm");
  22. }
  23. response.render('users/html/login', {});
  24. }
  25. /**
  26. * 登录操作
  27. *
  28. * @param {object} request
  29. * @param {object} response
  30. * @return {string}
  31. */
  32. async login(request, response) {
  33. let account = request.body.account;
  34. let password = request.body.pw;
  35. let preferenceSetting = {};
  36. try {
  37. // 调用接口验证登录信息
  38. let userModel = new UserModel();
  39. let responseData = await userModel.getInfoFromSSO(account, password);
  40. responseData = JSON.parse(responseData);
  41. if (typeof responseData !== 'object') {
  42. throw '邮箱/手机 或 密码错误';
  43. }
  44. if (responseData.length <= 0) {
  45. throw '接口返回数据错误';
  46. }
  47. // 正确登录后 存入session
  48. let userData = responseData[0];
  49. let sessionUser = {
  50. ssoId: userData.id,
  51. username: userData.username,
  52. email: userData.useremail,
  53. mobile: userData.mobile,
  54. };
  55. request.session.sessionUser = sessionUser;
  56. // 记录用户数据到数据库
  57. let result = await userModel.markUser(sessionUser, request);
  58. // 获取偏好设置
  59. let settingModel = new SettingModel();
  60. preferenceSetting = await settingModel.getPreferenceSetting(request.session.sessionUser.id);
  61. if (!result) {
  62. throw '标记用户信息失败!';
  63. }
  64. } catch (error) {
  65. console.log(error);
  66. return response.json({error: 1, msg: error});
  67. }
  68. response.json({error: 0, msg: '', login_ask: preferenceSetting.login_ask});
  69. }
  70. }
  71. export default LoginController;