login_controller.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * 登录相关控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/8
  6. * @version
  7. */
  8. import UserModel from "../models/user_model";
  9. class LoginController {
  10. /**
  11. * 登录页面
  12. *
  13. * @param {object} request
  14. * @param {object} response
  15. * @return {void}
  16. */
  17. index(request, response) {
  18. let sessionUser = request.session.sessionUser;
  19. if (sessionUser !== undefined && sessionUser.ssoId >= 0) {
  20. return response.redirect("/pm");
  21. }
  22. response.render('users/html/login', {});
  23. }
  24. /**
  25. * 登录操作
  26. *
  27. * @param {object} request
  28. * @param {object} response
  29. * @return {string}
  30. */
  31. async login(request, response) {
  32. let account = request.body.account;
  33. let password = request.body.pw;
  34. let userExist = true;
  35. try {
  36. // 调用接口验证登录信息
  37. let userModel = new UserModel();
  38. let responseData = await userModel.getInfoFromSSO(account, password);
  39. responseData = JSON.parse(responseData);
  40. if (typeof responseData !== 'object') {
  41. throw '邮箱/手机 或 密码错误';
  42. }
  43. if (responseData.length <= 0) {
  44. throw '接口返回数据错误';
  45. }
  46. // 正确登录后 存入session
  47. let userData = responseData[0];
  48. let sessionUser = {
  49. ssoId: userData.id,
  50. username: userData.username,
  51. email: userData.useremail,
  52. mobile: userData.mobile,
  53. };
  54. request.session.sessionUser = sessionUser;
  55. // 记录用户数据到数据库
  56. let [result, exist] = await userModel.markUser(sessionUser, request);
  57. userExist = exist;
  58. if (!result) {
  59. throw '标记用户信息失败!';
  60. }
  61. } catch (error) {
  62. console.log(error);
  63. return response.json({error: 1, msg: error});
  64. }
  65. response.json({error: 0, msg: '', exist: userExist ? 1 : 0});
  66. }
  67. }
  68. export default LoginController;