const passport = require('passport'); const DiscordStrategy = require('passport-discord').Strategy; const fs = require('fs'); const path = require('path'); const setupFilePath = path.join(__dirname, '../data', 'setup.json'); const setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8')); passport.use(new DiscordStrategy({ clientID: setupData[0].discord.clientID, clientSecret: setupData[0].discord.clientSecret, callbackURL: `http://${setupData[0].domain}/auth/discord/callback` }, (accessToken, refreshToken, profile, done) => { fs.readFile('user.json', 'utf8', (err, data) => { if (err) { return done(err); } const users = JSON.parse(data); const user = users.find(user => user.id === profile.id); if (setupData[0].discord.authorizedIDs.length > 0 && !setupData[0].discord.authorizedIDs.includes(profile.id)) { return done(null, false, { message: 'L\'utilisateur n\'est pas autorisé.' }); } done(null, user); }); })); passport.serializeUser((user, done) => { done(null, user); }); passport.deserializeUser((id, done) => { fs.readFile('/data', 'user.json', 'utf8', (err, data) => { if (err) { return done(err); } const users = JSON.parse(data); const user = users.find(user => user.id === id); done(null, user); }); }); module.exports = passport;