const express = require('express'); const router = express.Router(); const passport = require('passport'); const { checkUserExistsDiscord } = require('../../Middlewares/UserIDMiddlewareDiscord'); const { getUserData, getSetupData } = require('../../Middlewares/watcherMiddleware'); let userData = getUserData(); let setupData; getSetupData().then(data => { setupData = data; if (setupData[0].discord !== undefined) { const DiscordStrategy = require('../../models/Passport-Discord'); } getUserData().then(user => { if (user.identifyURL) { router.get("/auth/discord", (req, res) => { res.redirect(user.identifyURL); }); } router.get("/", (req, res) => { res.redirect(setupData.discord.identifyURL); }); }); }); router.use(passport.initialize()); router.use(passport.session()); passport.deserializeUser((user, done) => { done(null, user); }); router.get('/callback', (req, res, next) => { passport.authenticate('discord', (err, user, info) => { if (err) { return next(err); } if (!user) { return res.redirect('/auth/login'); } req.logIn(user, (loginErr) => { if (loginErr) { return next(loginErr); } 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'); }); } }); }); })(req, res, next); }); module.exports = router;