mirror of
https://github.com/songquanpeng/message-pusher.git
synced 2025-09-26 20:21:22 +08:00
110 lines
2.9 KiB
JavaScript
110 lines
2.9 KiB
JavaScript
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,
|
|
};
|