|
|
@@ -1,129 +0,0 @@
|
|
|
-module.exports = (options, app) => {
|
|
|
-return async function wechatAuth2(ctx, next) {
|
|
|
- const traceId = ctx.logId ||
|
|
|
- `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
|
- const startTime = Date.now();
|
|
|
-
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s start method=%s url=%s',
|
|
|
- traceId,
|
|
|
- ctx.method,
|
|
|
- ctx.originalUrl
|
|
|
- );
|
|
|
-
|
|
|
- const token =
|
|
|
- ctx.headers.authorization &&
|
|
|
- ctx.headers.authorization.replace('Bearer ', '');
|
|
|
-
|
|
|
- const code = ctx.headers['platform-code'];
|
|
|
-
|
|
|
- if (!token || !code) {
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s auth_failed reason=missing_token_or_code cost=%dms',
|
|
|
- traceId,
|
|
|
- Date.now() - startTime
|
|
|
- );
|
|
|
-
|
|
|
- ctx.body = {
|
|
|
- code: 2,
|
|
|
- msg: '请登录',
|
|
|
- data: null,
|
|
|
- };
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- const decoded = jwt.verify(
|
|
|
- token,
|
|
|
- weappConfig.jwtSecret
|
|
|
- );
|
|
|
-
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s jwt_done cost=%dms',
|
|
|
- traceId,
|
|
|
- Date.now() - startTime
|
|
|
- );
|
|
|
-
|
|
|
- const projectData =
|
|
|
- await ctx.service.project.getProjectByCode(
|
|
|
- code.trim()
|
|
|
- );
|
|
|
-
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s project_done cost=%dms',
|
|
|
- traceId,
|
|
|
- Date.now() - startTime
|
|
|
- );
|
|
|
-
|
|
|
- if (projectData === null) {
|
|
|
- throw '不存在项目数据';
|
|
|
- }
|
|
|
-
|
|
|
- const projectAccount =
|
|
|
- await ctx.service.projectAccount.getDataByCondition({
|
|
|
- weapp_openid: decoded.openid,
|
|
|
- project_id: projectData.id,
|
|
|
- enable: 1,
|
|
|
- });
|
|
|
-
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s account_done cost=%dms',
|
|
|
- traceId,
|
|
|
- Date.now() - startTime
|
|
|
- );
|
|
|
-
|
|
|
- if (!projectAccount) {
|
|
|
- throw '账号不存在或未启用';
|
|
|
- }
|
|
|
-
|
|
|
- ctx.session.sessionUser = {
|
|
|
- ...projectAccount,
|
|
|
- accountId: projectAccount.id,
|
|
|
- };
|
|
|
-
|
|
|
- ctx.session.sessionProject = projectData;
|
|
|
- } catch (error) {
|
|
|
- ctx.logger.error(
|
|
|
- '[WEAPP_TRACE] id=%s auth_error url=%s cost=%dms',
|
|
|
- traceId,
|
|
|
- ctx.originalUrl,
|
|
|
- Date.now() - startTime,
|
|
|
- error
|
|
|
- );
|
|
|
-
|
|
|
- if (error.name === 'TokenExpiredError') {
|
|
|
- ctx.body = {
|
|
|
- code: 2,
|
|
|
- msg: '登陆凭证过期,请重新登陆',
|
|
|
- data: null,
|
|
|
- };
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- ctx.body = {
|
|
|
- code: -1,
|
|
|
- msg: error.toString() || '请登录',
|
|
|
- data: null,
|
|
|
- };
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s auth_done controller_start cost=%dms',
|
|
|
- traceId,
|
|
|
- Date.now() - startTime
|
|
|
- );
|
|
|
-
|
|
|
- try {
|
|
|
- await next();
|
|
|
- } finally {
|
|
|
- ctx.logger.warn(
|
|
|
- '[WEAPP_TRACE] id=%s request_end status=%s cost=%dms url=%s',
|
|
|
- traceId,
|
|
|
- ctx.status,
|
|
|
- Date.now() - startTime,
|
|
|
- ctx.originalUrl
|
|
|
- );
|
|
|
- }
|
|
|
-};
|
|
|
-}
|