| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | const { User } = require('../models');const tokenStore = new Map();async function initializeTokenStore() {  let users = [];  if (process.env.MODE === '1') {    console.log('Current mode is Heroku mode.');    let user = {      // Common      prefix: process.env.PREFIX,      accessToken: process.env.ACCESS_TOKEN,      defaultMethod: process.env.DEFAULT_METHOD,      // WeChat public account      wechatAppId: process.env.WECHAT_APP_ID,      wechatAppSecret: process.env.WECHAT_APP_SECRET,      wechatTemplateId: process.env.WECHAT_TEMPLATE_ID,      wechatOpenId: process.env.WECHAT_OPEN_ID,      wechatVerifyToken: process.env.WECHAT_VERIFY_TOKEN,      // Email      email: process.env.EMAIL,      smtpServer: process.env.SMTP_SERVER,      smtpUser: process.env.SMTP_USER,      smtpPass: process.env.SMTP_PASS,      // WeChat corporation account      corpId: process.env.CORP_ID,      corpAgentId: process.env.CORP_AGENT_ID,      corpAppSecret: process.env.CORP_APP_SECRET,      corpUserId: process.env.CORP_USER_ID,    };    users.push(user);  } else {    users = await User.findAll({      raw: true,    });  }  users.forEach((user) => {    if (user.prefix) {      tokenStore.set(user.prefix, {        // Common        accessToken: user.accessToken,        defaultMethod: user.defaultMethod,        // WeChat test account        wechatAppId: user.wechatAppId,        wechatAppSecret: user.wechatAppSecret,        wechatTemplateId: user.wechatTemplateId,        wechatOpenId: user.wechatOpenId,        wechatVerifyToken: user.wechatVerifyToken,        wechatToken: '',        // Email        email: user.email,        smtpServer: user.smtpServer,        smtpUser: user.smtpUser,        smtpPass: user.smtpPass,        // WeChat corporation account        corpId: user.corpId,        corpAgentId: user.corpAgentId,        corpAppSecret: user.corpAppSecret,        corpUserId: user.corpUserId,        corpToken: '',      });    }  });  console.log('Token store initialized.');}function updateTokenStore(prefix, key, value) {  let user = tokenStore.get(prefix);  user[key] = value;  tokenStore.set(prefix, user);}function getUserDefaultMethod(prefix) {  let user = tokenStore.get(prefix);  return user.defaultMethod;}function checkAccessToken(prefix, token) {  let user = tokenStore.get(prefix);  if (user.accessToken === '') {    return true;  } else {    return user.accessToken === token;  }}function checkPrefix(prefix) {  let user = tokenStore.get(prefix);  return user !== undefined;}function registerWebSocket(prefix, token, ws) {  let user = tokenStore.get(prefix);  if (user && user.accessToken === token) {    updateTokenStore(prefix, 'ws', ws);  } else {    ws.terminate();  }}module.exports = {  initializeTokenStore,  updateTokenStore,  getUserDefaultMethod,  tokenStore,  checkAccessToken,  checkPrefix,  registerWebSocket,};
 |