'use strict'; const wxWork = require('../lib/wx_work'); module.exports = (options, app) => { /** * session判断中间件 * * @param {function} next - 中间件继续执行的方法 * @return {void} */ return async function wxWorkAuth(ctx, next) { try { // 判断session const corpid = ctx.params.corpid || ctx.request.body.corpid; if (!corpid) { throw '参数有误'; } const qywx = new wxWork(ctx); const token = await qywx.getCorpAccessToken(corpid); if (!token) { throw '企业微信通信有误'; } if (ctx.url.indexOf('/wx/work/bindwx') === -1 && !ctx.query.code) { ctx.redirect(`/wx/work/${ctx.params.corpid}/oauth?redirect_uri=` + encodeURIComponent(ctx.protocol + '://' + ctx.host + ctx.request.url)); return; } // 同步系统维护信息 await ctx.service.maintain.syncMaintainData(); if (ctx.session === null) { throw '系统维护中~'; } } catch (error) { console.log(error); ctx.body = error; return; } await next(); }; };