/* global WIKI */ // ------------------------------------ // Discord Account // ------------------------------------ const DiscordStrategy = require('passport-discord').Strategy const _ = require('lodash') module.exports = { init (passport, conf) { passport.use(conf.key, new DiscordStrategy({ clientID: conf.clientId, clientSecret: conf.clientSecret, authorizationURL: 'https://discord.com/api/oauth2/authorize?prompt=none', callbackURL: conf.callbackURL, scope: 'identify email guilds', passReqToCallback: true }, async (req, accessToken, refreshToken, profile, cb) => { try { if (conf.guildId && !_.some(profile.guilds, { id: conf.guildId })) { throw new WIKI.Error.AuthLoginFailed() } const user = await WIKI.models.users.processProfile({ providerKey: req.params.strategy, profile: { ...profile, displayName: profile.username, picture: `https://cdn.discordapp.com/avatars/${profile.id}/${profile.avatar}.png` } }) cb(null, user) } catch (err) { cb(err, null) } } )) } }