wechat_auth.js 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. module.exports = (options, app) => {
  3. /**
  4. * session判断中间件
  5. *
  6. * @param {function} next - 中间件继续执行的方法
  7. * @return {void}
  8. */
  9. return async function wechatAuth(ctx, next) {
  10. try {
  11. // 判断session
  12. if (!ctx.session.wechatToken && ctx.query.code) {
  13. const token = await app.wechat.oauth.getAccessToken(ctx.query.code);
  14. ctx.session.wechatToken = token.data;
  15. }
  16. const wechatToken = ctx.session.wechatToken;
  17. if (!wechatToken) {
  18. ctx.redirect('/wx/oauth?redirect_uri=' + encodeURIComponent(ctx.request.headers.referer));
  19. }
  20. // 同步系统维护信息
  21. await ctx.service.maintain.syncMaintainData();
  22. if (ctx.session === null) {
  23. throw '系统维护中~';
  24. }
  25. } catch (error) {
  26. console.log(error);
  27. ctx.body = error;
  28. return;
  29. }
  30. await next();
  31. };
  32. };