| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- '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 ', '');
- const code = ctx.headers['platform-code'];
- if (!token || !code) {
- ctx.body = { code: 2, msg: '请登录', data: null };
- return;
- }
- 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.session.sessionUser = { ...projectAccount, accountId: projectAccount.id };
- ctx.session.sessionProject = 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();
- };
- };
|