wechat_auth.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  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 ctx.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.protocol + '://' + ctx.host + ctx.request.url));
  19. return;
  20. }
  21. // 同步系统维护信息
  22. await ctx.service.maintain.syncMaintainData();
  23. if (ctx.session === null) {
  24. throw '系统维护中~';
  25. }
  26. } catch (error) {
  27. console.log(error);
  28. ctx.body = error;
  29. return;
  30. }
  31. await next();
  32. };
  33. };