| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 'use strict';
- const weappConfig = require('../const/weapp');
- const jwt = require('jsonwebtoken');
- module.exports = (options, app) => {
- return async function wechatAuth(ctx, next) {
- const token = ctx.headers.authorization && ctx.headers.authorization.replace('Bearer ', '');
- console.log('1111');
- const code = ctx.headers['platform-code'];
- if (!token || !code) return ctx.fail(401, '请登录');
- try {
- const decoded = jwt.verify(token, weappConfig.jwtSecret);
- const projectData = await ctx.service.project.getProjectByCode(
- code.trim()
- );
- if (projectData === null) {
- throw '不存在项目数据';
- }
- const projectAccount = await ctx.service.projectAccount.getDataByCondition({
- wx_openid: decoded.openid,
- project_id: projectData.id,
- enable: 1,
- });
- if (!projectAccount) {
- throw '账号不存在或未启用';
- }
- ctx.projectAccount = projectAccount;
- ctx.project = projectData;
- } catch (error) {
- if (error.name === 'TokenExpiredError') {
- ctx.body = { code: 2, msg: '', data: null };
- return;
- }
- ctx.body = { code: -1, msg: error.toString() || '请登录', data: null };
- return;
- }
- await next();
- };
- };
|