Files
message-pusher/common/token.js
T

110 lines
2.9 KiB
JavaScript
Raw Normal View History

2021-01-17 10:49:19 +08:00
const { User } = require('../models');
const tokenStore = new Map();
async function initializeTokenStore() {
2021-01-31 17:42:41 +08:00
let users = [];
if (process.env.MODE === '1') {
console.log('Current mode is Heroku mode.');
let user = {
2021-03-28 11:15:57 +08:00
// Common
prefix: process.env.PREFIX,
accessToken: process.env.ACCESS_TOKEN,
defaultMethod: process.env.DEFAULT_METHOD,
// WeChat public account
2021-01-31 17:42:41 +08:00
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,
2021-03-28 11:15:57 +08:00
// Email
2021-01-31 17:42:41 +08:00
email: process.env.EMAIL,
smtpServer: process.env.SMTP_SERVER,
smtpUser: process.env.SMTP_USER,
smtpPass: process.env.SMTP_PASS,
2021-03-28 11:15:57 +08:00
// 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,
2021-01-31 17:42:41 +08:00
};
users.push(user);
} else {
2021-03-28 11:15:57 +08:00
users = await User.findAll({
raw: true,
});
2021-01-31 17:42:41 +08:00
}
2021-01-17 10:49:19 +08:00
users.forEach((user) => {
2021-03-28 11:15:57 +08:00
if (user.prefix) {
2021-01-17 10:49:19 +08:00
tokenStore.set(user.prefix, {
2021-03-28 11:15:57 +08:00
// Common
accessToken: user.accessToken,
defaultMethod: user.defaultMethod,
// WeChat test account
2021-01-17 16:45:52 +08:00
wechatAppId: user.wechatAppId,
wechatAppSecret: user.wechatAppSecret,
wechatTemplateId: user.wechatTemplateId,
wechatOpenId: user.wechatOpenId,
wechatVerifyToken: user.wechatVerifyToken,
2021-03-28 11:15:57 +08:00
wechatToken: '',
// Email
2021-01-31 15:30:22 +08:00
email: user.email,
smtpServer: user.smtpServer,
smtpUser: user.smtpUser,
smtpPass: user.smtpPass,
2021-03-28 11:15:57 +08:00
// WeChat corporation account
corpId: user.corpId,
corpAgentId: user.corpAgentId,
corpAppSecret: user.corpAppSecret,
corpUserId: user.corpUserId,
corpToken: '',
2021-01-17 10:49:19 +08:00
});
}
});
console.log('Token store initialized.');
}
2021-03-28 11:15:57 +08:00
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;
}
2021-06-13 12:11:26 +08:00
function checkAccessToken(prefix, token) {
let user = tokenStore.get(prefix);
if (user.accessToken === '') {
return true;
} else {
return user.accessToken === token;
}
}
2021-06-13 17:52:41 +08:00
function checkPrefix(prefix) {
let user = tokenStore.get(prefix);
return user !== undefined;
}
function registerWebSocket(prefix, token, ws) {
let user = tokenStore.get(prefix);
2021-06-13 18:50:21 +08:00
if (user && user.accessToken === token) {
2021-06-13 17:52:41 +08:00
updateTokenStore(prefix, 'ws', ws);
} else {
ws.terminate();
}
}
2021-01-17 10:49:19 +08:00
module.exports = {
initializeTokenStore,
2021-03-28 11:15:57 +08:00
updateTokenStore,
getUserDefaultMethod,
2021-01-17 10:49:19 +08:00
tokenStore,
2021-06-13 12:11:26 +08:00
checkAccessToken,
2021-06-13 17:52:41 +08:00
checkPrefix,
registerWebSocket,
2021-01-17 10:49:19 +08:00
};