🎉 now you can push message to wechat

This commit is contained in:
Song
2021-01-17 16:45:52 +08:00
parent 0e9c7d9086
commit d36680aea1
7 changed files with 142 additions and 51 deletions
+47 -12
View File
@@ -2,7 +2,12 @@ const express = require('express');
const router = express.Router();
const { User } = require('../models');
const { tokenStore } = require('../common/token');
const { allowRegister } = require('../middlewares/web_auth');
const { requestToken } = require('../common/wechat');
const {
userRequired,
adminRequired,
allowRegister,
} = require('../middlewares/web_auth');
const config = require('../config');
router.get('/', (req, res, next) => {
@@ -12,7 +17,9 @@ router.get('/', (req, res, next) => {
});
router.get('/login', (req, res, next) => {
res.render('login');
res.render('login', {
message: req.flash('message'),
});
});
router.post('/login', async (req, res, next) => {
@@ -45,7 +52,7 @@ router.post('/login', async (req, res, next) => {
});
});
router.get('/logout', (req, res, next) => {
router.get('/logout', userRequired, (req, res, next) => {
req.session.user = undefined;
req.flash('message', '已退出登录');
res.redirect('/');
@@ -67,7 +74,13 @@ router.post('/register', allowRegister, async (req, res, next) => {
}
});
router.post('/configure', async (req, res, next) => {
router.get('/configure', userRequired, (req, res, next) => {
res.locals.message = req.flash('message');
res.render('configure', req.session.user);
});
router.post('/configure', userRequired, async (req, res, next) => {
let id = req.session.user.id;
let user = {
username: req.body.username,
password: req.body.password,
@@ -80,19 +93,41 @@ router.post('/configure', async (req, res, next) => {
wechatOpenId: req.body.wechatOpenId,
wechatVerifyToken: req.body.wechatVerifyToken,
};
for (let field in user) {
let value = user[field];
value = value.trim();
if (value) {
user[field] = value;
} else {
delete user[field];
}
}
let message = '';
try {
user = await User.create(user);
tokenStore.set(user.prefix, {
appId: user.wechatAppId,
appSecret: user.wechatAppSecret,
templateId: user.wechatTemplateId,
openId: user.wechatOpenId,
wechatVerifyToken: user.wechatVerifyToken,
token: '',
let userObj = await User.findOne({
where: {
id: id,
},
});
if (userObj) {
await userObj.update(user);
}
req.session.user = userObj;
tokenStore.set(userObj.prefix, {
appId: userObj.wechatAppId,
appSecret: userObj.wechatAppSecret,
templateId: userObj.wechatTemplateId,
openId: userObj.wechatOpenId,
wechatVerifyToken: userObj.wechatVerifyToken,
token: requestToken(userObj.wechatAppId, userObj.wechatAppSecret),
});
message = '配置更新成功';
} catch (e) {
console.error(e);
message = e.message;
}
req.flash('message', message);
res.redirect('/configure');
});
module.exports = router;
+10 -4
View File
@@ -6,10 +6,6 @@ const { tokenStore } = require('../common/token');
const router = express.Router();
router.get('/:userPrefix/configure', (req, res, next) => {
res.render('configure');
});
router.all('/:userPrefix/verify', (req, res, next) => {
// 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
const userPrefix = req.params.userPrefix;
@@ -25,6 +21,16 @@ router.all('/:userPrefix/verify', (req, res, next) => {
}
});
router.all('/:userPrefix/:description', async (req, res, next) => {
const userPrefix = req.params.userPrefix;
let message = {
type: '0',
title: '无标题',
description: req.params.description,
};
res.json(await processMessage(userPrefix, message));
});
router.all('/:userPrefix', async (req, res, next) => {
const userPrefix = req.params.userPrefix;
let message = {