wx_work_auth.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use strict';
  2. const wxWork = require('../lib/wx_work');
  3. module.exports = (options, app) => {
  4. /**
  5. * session判断中间件
  6. *
  7. * @param {function} next - 中间件继续执行的方法
  8. * @return {void}
  9. */
  10. return async function wxWorkAuth(ctx, next) {
  11. try {
  12. // 判断session
  13. const corpid = ctx.params.corpid || ctx.request.body.corpid;
  14. if (!corpid) {
  15. throw '参数有误';
  16. }
  17. const qywx = new wxWork(ctx);
  18. const token = await qywx.getCorpAccessToken(corpid);
  19. if (!token) {
  20. throw '企业微信通信有误';
  21. }
  22. if (ctx.url.indexOf('/wx/work/bindwx') === -1 && !ctx.query.code) {
  23. ctx.redirect(`/wx/work/${ctx.params.corpid}/oauth?redirect_uri=` + encodeURIComponent(ctx.protocol + '://' + ctx.host + ctx.request.url));
  24. return;
  25. }
  26. // 同步系统维护信息
  27. await ctx.service.maintain.syncMaintainData();
  28. if (ctx.session === null) {
  29. throw '系统维护中~';
  30. }
  31. } catch (error) {
  32. console.log(error);
  33. ctx.body = error;
  34. return;
  35. }
  36. await next();
  37. };
  38. };