login_controller.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. response.render('users/html/login', {});
  20. }
  21. /**
  22. * 登录操作
  23. *
  24. * @param {object} request
  25. * @param {object} response
  26. * @return {string}
  27. */
  28. async login(request, response) {
  29. let account = request.body.account;
  30. let password = request.body.pw;
  31. let userExist = true;
  32. try {
  33. // 调用接口验证登录信息
  34. let userModel = new UserModel();
  35. let responseData = await userModel.getInfoFromSSO(account, password);
  36. responseData = JSON.parse(responseData);
  37. if (typeof responseData !== 'object') {
  38. throw '邮箱/手机 或 密码错误';
  39. }
  40. if (responseData.length <= 0) {
  41. throw '接口返回数据错误';
  42. }
  43. // 正确登录后 存入session
  44. let userData = responseData[0];
  45. let sessionUser = {
  46. ssoId: userData.id,
  47. username: userData.username,
  48. email: userData.useremail,
  49. mobile: userData.mobile
  50. };
  51. request.session.sessionUser = sessionUser;
  52. // 记录用户数据到数据库
  53. let [result, exist] = await userModel.markUser(sessionUser);
  54. userExist = exist;
  55. if (!result) {
  56. throw '标记用户信息失败!';
  57. }
  58. } catch (error) {
  59. return response.json({error: 1, msg: error});
  60. }
  61. response.json({error: 0, msg: '', exist: userExist ? 1 : 0});
  62. }
  63. }
  64. module.exports = LoginController;