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; // Ensure Passport is initialized before using it router.use(passport.initialize()); router.use(passport.session()); Promise.all([ getSetupData(), getUserData() ]).then(([setup, userData]) => { setupData = setup; user = userData; if (setupData[0].discord !== undefined) { require('../../models/Passport-Discord'); // Ensure the strategy is registered } 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.get('/callback', async (req, res, next) => { try { passport.authenticate('discord', { session: true }, (err, user, info) => { if (err) { console.error('Authentication error:', err); return next(err); } if (!user) { console.error('No user found:', info); return res.redirect('/auth/login'); } req.logIn(user, (err) => { if (err) { console.error('Login error:', err); return next(err); } console.log('Authenticated user:', user); res.redirect('/dpanel/dashboard'); }); })(req, res, next); } catch (error) { console.error('Error handling callback:', error); next(error); } }); }); module.exports = router;