blob: 9ce7823f7bcb16efb59ac237bcca74b951a80ffd [file] [log] [blame]
Cleo00ccf362024-02-29 15:07:31 -05001const express = require('express');
2const app = express();
3const bodyparser = require('body-parser');
4const session = require('express-session');
5const ejs = require('ejs');
6const passport = require('passport');
7const { Strategy } = require('passport-discord');
8
9module.exports.load = async (client) => {
10 app.use(bodyparser.json());
11 app.use(bodyparser.urlencoded({ extended: true }));
12 app.engine('html', ejs.renderFile);
13 app.set('view engine', 'ejs');
14 app.set('views', "./views");
15 app.use(express.static("./public"));
16 app.use(session({
17 secret: 'BotDashboardExample101',
18 resave: false,
19 saveUninitialized: false,
20 }));
21
22 app.use(async function(req, res, next) {
23 req.client = client;
24 next();
25 });
26
27 app.use(passport.initialize());
28 app.use(passport.session());
29
30 passport.serializeUser((user, done) => {
31 done(null, user);
32 });
33 passport.deserializeUser((obj, done) => {
34 done(null, obj);
35 });
36
37 passport.use(new Strategy({
38 clientID: process.env.CLIENT_ID,
39 clientSecret: process.env.CLIENT_SECRET,
40 callbackURL: process.env.CALLBACK_URL,
41 scope: [ 'identify', 'guilds' ],
42 }, function(accessToken, refreshToken, profile, done) {
43 process.nextTick(function() {
44 return done(null, profile);
45 });
46 }));
47
48 app.use('/', require('./routes/index'));
49 // app.use('/dashboard', require('./routes/dashboard'));
50 // app.use('/appeal', require('./routes/appeal'));
51
52 app.get('*', (req, res) => {
53 res.render('../views/404', {
54 bot: req.client,
55 user: req.user,
56 });
57 });
58
59 app.listen(process.env.PORT, () => {
60 console.log(`Web Server now online on port ${process.env.PORT} | Dashboard: http://localhost:${process.env.PORT}/`);
61 });
62};