|
|
@@ -1,84 +1,85 @@
|
|
|
const express = require('express');
|
|
|
const router = express.Router();
|
|
|
-const crypto = require('crypto');
|
|
|
-const fs = require('fs');
|
|
|
+const { User } = require('../models');
|
|
|
+const { tokenStore } = require('../common/token');
|
|
|
|
|
|
-router.all('/', (req, res, next) => {
|
|
|
- fs.promises
|
|
|
- .access('./.env')
|
|
|
- .then(() => {
|
|
|
- res.render('info', {
|
|
|
- message: '服务已在运行。',
|
|
|
- });
|
|
|
- // pushMessage(
|
|
|
- // req,
|
|
|
- // res,
|
|
|
- // `请注意,ip 地址为 ${req.ip} 的用户访问了你的消息通知服务,如果非你本人,则你的私有消息通知服务可能已被泄露,当前版本无法阻止其他用户通过本系统向你发送消息。`
|
|
|
- // );
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- res.render('configure');
|
|
|
- });
|
|
|
+router.get('/', (req, res, next) => {
|
|
|
+ res.render('index', {
|
|
|
+ message: '',
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
-router.post('/configure', (req, res, next) => {
|
|
|
- fs.promises
|
|
|
- .access('./.env')
|
|
|
- .then(() => {
|
|
|
- res.render('message', {
|
|
|
- message: '.env 文件已经存在,请手动删除该文件后重试!',
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- let content =
|
|
|
- `APP_ID=${req.body.APP_ID}\n` +
|
|
|
- `APP_SECRET=${req.body.APP_SECRET}\n` +
|
|
|
- `TOKEN=${req.body.TOKEN}\n` +
|
|
|
- `TEMPLATE_ID=${req.body.TEMPLATE_ID}\n` +
|
|
|
- `OPEN_ID=${req.body.OPEN_ID}`;
|
|
|
- fs.promises
|
|
|
- .writeFile('./.env', content, 'utf8')
|
|
|
- .then(() => {
|
|
|
- res.render('message', {
|
|
|
- message:
|
|
|
- '.env 文件写入成功,程序即将自动关闭以应用写入的新的环境变量,需要进程守护程序自动重启应用或者手动重启。',
|
|
|
- });
|
|
|
- process.exit();
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- res.render('info', {
|
|
|
- message: '在尝试写入 .env 文件时发生错误:' + e,
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
+router.get('/login', (req, res, next) => {
|
|
|
+ res.render('login', {
|
|
|
+ message: '',
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
-router.all('/verify', (req, res, next) => {
|
|
|
- // 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
|
|
|
- const { signature, timestamp, nonce, echostr } = req.query;
|
|
|
- const token = process.env.TOKEN;
|
|
|
- let tmp_array = [token, timestamp, nonce].sort();
|
|
|
- let tmp_string = tmp_array.join('');
|
|
|
- tmp_string = crypto.createHash('sha1').update(tmp_string).digest('hex');
|
|
|
- if (tmp_string === signature) {
|
|
|
- res.send(echostr);
|
|
|
- } else {
|
|
|
- res.send('verification failed');
|
|
|
+router.post('/login', async (req, res, next) => {
|
|
|
+ let user = {
|
|
|
+ username: req.body.username,
|
|
|
+ password: req.body.password,
|
|
|
+ };
|
|
|
+ let message = '';
|
|
|
+ try {
|
|
|
+ user = await User.findOne({ where: user });
|
|
|
+ if (user) {
|
|
|
+ req.session.user = user;
|
|
|
+ return res.redirect('/');
|
|
|
+ } else {
|
|
|
+ message = '用户名或密码错误';
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e);
|
|
|
+ message = e.message;
|
|
|
}
|
|
|
+ res.render('login', {
|
|
|
+ message,
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
-router.all('/push', (req, res, next) => {
|
|
|
- let content = req.query.content || req.body.content;
|
|
|
- pushMessage(req, res, content);
|
|
|
+router.get('/register', (req, res, next) => {
|
|
|
+ res.render('register');
|
|
|
});
|
|
|
|
|
|
-router.get('/favicon.ico', (req, res, next) => {
|
|
|
- res.sendStatus(404);
|
|
|
+router.post('/register', async (req, res, next) => {
|
|
|
+ let user = {
|
|
|
+ username: req.body.username,
|
|
|
+ password: req.body.password,
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ user = await User.create(user);
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
-router.all('/:content', (req, res, next) => {
|
|
|
- let content = req.params.content;
|
|
|
- pushMessage(req, res, content);
|
|
|
+router.post('/configure', async (req, res, next) => {
|
|
|
+ let user = {
|
|
|
+ username: req.body.username,
|
|
|
+ password: req.body.password,
|
|
|
+ accessToken: req.body.accessToken,
|
|
|
+ email: req.body.email,
|
|
|
+ prefix: req.body.prefix,
|
|
|
+ wechatAppId: req.body.wechatAppId,
|
|
|
+ wechatAppSecret: req.body.wechatAppSecret,
|
|
|
+ wechatTemplateId: req.body.wechatTemplateId,
|
|
|
+ wechatOpenId: req.body.wechatOpenId,
|
|
|
+ wechatVerifyToken: req.body.wechatVerifyToken,
|
|
|
+ };
|
|
|
+ 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: '',
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
module.exports = router;
|