checkLogin.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * @Description: 检查用户是否已经登陆
  3. * @Autor: kindring
  4. * @Date: 2021-12-22 16:24:37
  5. * @LastEditors: kindring
  6. * @LastEditTime: 2022-01-26 14:07:50
  7. * @LastDescript:
  8. */
  9. const codeMap = require('../maps/rcodeMap');
  10. const progress = require('../maps/progress');
  11. /**
  12. * 检查是否登录
  13. * @param accountType 账户类型
  14. * @param {'json'|'view'} type 返回的数据类型
  15. * @returns
  16. */
  17. function checkLogin(accountType,type = 'json') {
  18. return function(req, res, next) {
  19. let field,redirectPath = progress.userLoginUrl;
  20. switch (accountType) {
  21. case 2:
  22. field = progress.adminSessionField;
  23. redirectPath = progress.adminLoginUrl;
  24. break;
  25. case 1:
  26. default:
  27. field = progress.userSessionField;
  28. }
  29. let tmpAccount = req.session[field];
  30. req.session[field] = '';
  31. if (!tmpAccount) {
  32. // 类型
  33. let resAction;
  34. switch (type) {
  35. case 'view':
  36. resAction = {
  37. action: 'redirect',
  38. params: [302, redirectPath]
  39. }
  40. break;
  41. case 'json':
  42. default:
  43. resAction = {
  44. action: 'json',
  45. params: [{
  46. rcode: codeMap.notLogin,
  47. msg: 'not login'
  48. }]
  49. }
  50. break;
  51. }
  52. return res[resAction.action](...resAction.params)
  53. }
  54. req.session[field] = tmpAccount;
  55. next();
  56. }
  57. }
  58. module.exports = checkLogin;