| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 'use strict';/** * * @author EllisRan * @date * @version */const crypto = require('crypto');const maintainConst = require('../const/maintain');module.exports = options => {    return function* api2otherCheck(next) {        try {            // 获取系统维护信息            const maintainData = yield this.service.maintain.getDataById(1);            if (maintainData.status === maintainConst.status.ongoing) {                throw '系统维护中~';            }            const code = this.query.code || this.request.body.code;            const sign = this.query.sign || this.request.body.sign;            const time = this.query.time || this.request.body.time;            if (!code || !sign || !time) {                throw '参数有误';            }            if ((parseFloat(time) + 86400 * 1000) < new Date().getTime()) {                throw '时间参数已过期';            }            const data = yield this.service.project.getProjectByCode(code.toString().trim());            if (data === null) {                throw '不存在项目数据';            }            if (data.custom === 0) {                throw '无法通过接口登录本系统';            }            if (data.custom === 1 && data.can_api === 0) {                throw '接口已关闭,无法使用';            }            const encryptSign = crypto.createHash('md5').update(data.code + data.secret + time.toString()).digest('hex').toString();            if (encryptSign !== sign) {                throw '参数验证失败';            }            this.projectData = data;            yield next;        } catch (err) {            console.log(err);            // 重定向值标段管理            // 判断是登录请求还是接口请求            if (this.helper.isAjax(this.request)) {                this.body = {                    err: 1,                    msg: err,                    data: '',                };                return;            }            this.session.loginError = err;            yield next;        }    };};
 |