123456789101112131415161718192021222324252627282930313233343536373839 |
- '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();
- };
- };
|