user.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const express = require('express');
  2. const crypto = require('crypto');
  3. const Message = require('../models/message').Message;
  4. const { processMessage } = require('../common/message');
  5. const { tokenStore } = require('../common/token');
  6. const router = express.Router();
  7. router.all('/:userPrefix/verify', (req, res, next) => {
  8. // 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
  9. const userPrefix = req.params.userPrefix;
  10. const { signature, timestamp, nonce, echostr } = req.query;
  11. const token = tokenStore.get(userPrefix).wechatVerifyToken;
  12. let tmp_array = [token, timestamp, nonce].sort();
  13. let tmp_string = tmp_array.join('');
  14. tmp_string = crypto.createHash('sha1').update(tmp_string).digest('hex');
  15. if (tmp_string === signature) {
  16. res.send(echostr);
  17. } else {
  18. res.send('verification failed');
  19. }
  20. });
  21. router.get('/ws/:userPrefix/:token', async (ws, req) => {
  22. const userPrefix = req.params.userPrefix;
  23. const token = req.params.token;
  24. });
  25. router.all('/:userPrefix/:description', async (req, res, next) => {
  26. const userPrefix = req.params.userPrefix;
  27. let message = {
  28. title: '无标题',
  29. description: req.params.description,
  30. };
  31. res.json(await processMessage(userPrefix, message));
  32. });
  33. router.all('/:userPrefix', async (req, res, next) => {
  34. const userPrefix = req.params.userPrefix;
  35. let message = {
  36. type: req.query.type || req.body.type,
  37. title: req.query.title || req.body.title || '无标题',
  38. description: req.query.description || req.body.description || '无描述',
  39. content: req.query.content || req.body.content,
  40. email: req.query.email || req.body.email,
  41. token: req.query.token || req.body.token,
  42. };
  43. let result = await processMessage(userPrefix, message);
  44. res.json(result);
  45. });
  46. module.exports = router;