| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- const express = require('express');
 
- const path = require('path');
 
- const session = require('express-session');
 
- const flash = require('connect-flash');
 
- const rateLimit = require('express-rate-limit');
 
- const compression = require('compression');
 
- const cookieParser = require('cookie-parser');
 
- const logger = require('morgan');
 
- const http = require('http');
 
- const serveStatic = require('serve-static');
 
- const config = require('./config');
 
- const indexRouter = require('./routers/index');
 
- const messageRouter = require('./routers/message');
 
- const userRouter = require('./routers/user');
 
- const { refreshToken } = require('./common/wechat');
 
- const { initializeTokenStore } = require('./common/token');
 
- const app = express();
 
- app.locals.isLogged = false;
 
- app.locals.isAdmin = false;
 
- app.locals.message = '';
 
- app.locals.isErrorMessage = false;
 
- setTimeout(async () => {
 
-   // TODO: Here we need an improvement! I have tried EventEmitter but it's not working. :(
 
-   await initializeTokenStore();
 
-   await refreshToken();
 
-   setInterval(async () => refreshToken(), 100 * 60 * 1000);
 
- }, 1000);
 
- app.set('views', path.join(__dirname, 'views'));
 
- app.set('view engine', 'ejs');
 
- app.set('trust proxy', true);
 
- app.use(
 
-   rateLimit({
 
-     windowMs: 30 * 1000,
 
-     max: 30,
 
-   })
 
- );
 
- app.use(
 
-   '/login',
 
-   rateLimit({
 
-     windowMs: 60 * 1000,
 
-     max: 5,
 
-   })
 
- );
 
- app.use(compression());
 
- app.use(logger('dev'));
 
- app.use(express.json());
 
- app.use(express.urlencoded({ extended: false }));
 
- app.use(cookieParser(config.cookie_secret));
 
- app.use(
 
-   session({
 
-     resave: true,
 
-     saveUninitialized: true,
 
-     secret: config.session_secret,
 
-   })
 
- );
 
- app.use(flash());
 
- app.use(express.static(path.join(__dirname, 'public')));
 
- app.use(
 
-   '/public',
 
-   serveStatic(path.join(__dirname, `public`), {
 
-     maxAge: '600000',
 
-   })
 
- );
 
- app.use('*', (req, res, next) => {
 
-   if (req.session.user !== undefined) {
 
-     res.locals.isLogged = true;
 
-     res.locals.isAdmin = req.session.user.isAdmin;
 
-   }
 
-   next();
 
- });
 
- app.use('/message', messageRouter);
 
- app.use('/', indexRouter);
 
- app.use('/', userRouter);
 
- const server = http.createServer(app);
 
- server.listen(config.port);
 
- module.exports = app;
 
 
  |