Files
CDN-APP-INSIDER/routes/Auth/Discord.js
Dinawo 74850e5a4a
All checks were successful
continuous-integration/drone/push Build is passing
V1.0.0.beta-15 Update
Note: We appreciate your feedback and bug reports to continue improving our platform. Thank you for your continued support!
2024-07-26 19:41:22 +02:00

71 lines
2.1 KiB
JavaScript

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;