Files
CDN-APP-INSIDER/models/Passport-Discord.js
Dinawo 8f3e604774
All checks were successful
continuous-integration/drone/push Build is passing
Update .gitignore and add new dependencies and routes
2024-04-02 20:59:13 +02:00

46 lines
1.4 KiB
JavaScript

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;