auth-bot

Discord Bot to verify user, allowing server owner to recover server by pulling back members
git clone https://codeberg.org/night0721/auth-bot
Log | Files | Refs | README | LICENSE

discord.js (1468B)


      1 const passport = require("passport");
      2 const { Strategy } = require("passport-discord");
      3 const db = require("../models/user");
      4 const config = require("../config");
      5 passport.serializeUser(async (user, done) => {
      6   try {
      7     done(null, user.id);
      8   } catch (e) {
      9     done(null, null);
     10   }
     11 });
     12 passport.deserializeUser(async (obj, done) => {
     13   const user = await db.findOne({ id: obj });
     14   if (user) done(null, user);
     15 });
     16 passport.use(
     17   new Strategy(
     18     {
     19       clientID: process.env.CLIENT_ID,
     20       clientSecret: process.env.CLIENT_SECRET,
     21       callbackURL: process.env.CALLBACK_URL,
     22       scope: config.scope,
     23     },
     24     async (accessToken, refreshToken, profile, done) => {
     25       const { id, username, avatar } = profile;
     26       const data = await db.findOne({ username });
     27       if (data) {
     28         data.accessToken = accessToken;
     29         data.refreshToken = refreshToken;
     30         data.username = username;
     31         data.guilds = profile.guilds.map(g => g.id);
     32         data.avatar = `https://cdn.discordapp.com/avatars/${id}/${avatar}`;
     33         data.save();
     34         done(null, data);
     35       } else {
     36         const ndb = {
     37           id,
     38           username,
     39           avatar: `https://cdn.discordapp.com/avatars/${id}/${avatar}`,
     40           refreshToken,
     41           accessToken,
     42           guilds: profile.guilds.map(g => g.id),
     43         };
     44         const nd = new db(ndb).save();
     45         done(null, nd);
     46       }
     47     }
     48   )
     49 );