login_controller.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * 登录相关控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/8
  6. * @version
  7. */
  8. let Request = require('request');
  9. let UserModel = require("../models/user_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 userExist = true;
  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, exist] = await userModel.markUser(sessionUser);
  58. userExist = exist;
  59. if (!result) {
  60. throw '标记用户信息失败!';
  61. }
  62. } catch (error) {
  63. return response.json({error: 1, msg: error});
  64. }
  65. response.json({error: 0, msg: '', exist: userExist ? 1 : 0});
  66. }
  67. }
  68. module.exports = LoginController;