const express = require('express'); const router = express.Router(); const passport = require('passport'); const { checkUserExistsDiscord } = require('../../Middlewares/UserIDMiddlewareDiscord'); const { getUserData, getSetupData } = require('../../Middlewares/watcherMiddleware'); let setupData; let user; Promise.all([ getSetupData(), getUserData() ]).then(([setup, userData]) => { setupData = setup; user = userData; if (setupData[0].discord !== undefined) { const DiscordStrategy = require('../../models/Passport-Discord'); } router.get("/auth/discord", (req, res) => { if (user && user.identifyURL) { res.redirect(user.identifyURL); } else { res.redirect('/auth/login'); } }); router.get("/", (req, res) => { if (setupData && setupData.discord && setupData.discord.identifyURL) { res.redirect(setupData.discord.identifyURL); } else { res.redirect('/auth/login'); } }); }); router.use(passport.initialize()); router.use(passport.session()); passport.deserializeUser((user, done) => { done(null, user); }); router.get('/callback', passport.authenticate('discord', { failureRedirect: '/auth/login' }), (req, res, next) => { checkUserExistsDiscord(req, res, () => { if (req.userExists) { return res.redirect('/dpanel/dashboard'); } else { createUser(req.user, (createErr) => { if (createErr) { return next(createErr); } return res.redirect('/dpanel/dashboard'); }); } }); }); module.exports = router;