-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
49 lines (39 loc) · 1.43 KB
/
index.js
File metadata and controls
49 lines (39 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require('dotenv').config();
const express = require('express');
const session = require('express-session');
const passport = require('passport');
const DiscordStrategy = require('passport-discord').Strategy;
const app = express();
const ALLOWED_IDS = (process.env.ALLOWED_IDS || "").split(",");
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: { maxAge: 24 * 60 * 60 * 1000, httpOnly: true }
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((obj, done) => done(null, obj));
passport.use(new DiscordStrategy({
clientID: process.env.DISCORD_CLIENT_ID,
clientSecret: process.env.DISCORD_CLIENT_SECRET,
callbackURL: process.env.DISCORD_CALLBACK_URL,
scope: ['identify']
}, (accessToken, refreshToken, profile, done) => {
return done(null, profile);
}));
app.get('/verify', (req, res) => {
if (req.isAuthenticated() && ALLOWED_IDS.includes(req.user.id)) {
return res.sendStatus(200);
}
return res.sendStatus(401);
});
app.get('/auth/login', passport.authenticate('discord'));
app.get('/auth/discord/callback',
passport.authenticate('discord', { failureRedirect: '/' }),
(req, res) => {
res.redirect('/');
}
);
app.listen(process.env.PORT || 3000, () => console.log('Auth Gatekeeper Running on Port ' + (process.env.PORT || 3000)));