Advertisement
Guest User

auth.js

a guest
Jun 25th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module.exports = function (config, app, passport, DiscordS) {
  2.  
  3.     const scopes = [
  4.         'identify',
  5.         'guilds'
  6.     ];
  7.  
  8.     passport.serializeUser((user, done) => {
  9.         done(null, user);
  10. });
  11.  
  12.     passport.deserializeUser((obj, done) => {
  13.         done(null, obj);
  14. });
  15.  
  16.     passport.use(new DiscordS({
  17.             clientID: config.clientID,
  18.             clientSecret: config.clientSecret,
  19.             callbackURL: `${config.host}/login/callback`,
  20.             scopes: scopes
  21.  
  22.         }, (accessToken, refreshToken, profile, done) => {
  23.             process.nextTick(() => {
  24.             return done(null, profile);
  25. });
  26. }));
  27.  
  28.     app.use(passport.initialize());
  29.     app.use(passport.session());
  30.  
  31.     app.get("/login", (req, res, next) => {
  32.         if (req.query.redirection) req.session.redirect = req.query.redirection;
  33.     passport.authenticate("discord", {scope: scopes, callbackURL: `${config.host}/login/callback`})(req, res, next);
  34. });
  35.  
  36.     app.get("/login/callback", passport.authenticate("discord", {failureRedirect: '/error'}), (req, res) => {
  37.         console.log(`- ${req.user.username} has logged on.`);
  38.     if (req.session.redirect === undefined) {
  39.         res.render('error', {
  40.             discord_server: config.discord_server_name,
  41.             config: config,
  42.             loggedInStatus: req.isAuthenticated(),
  43.             userRequest: req.user,
  44.             error_code: "801",
  45.             error_text: `A redirection error has occurred; your session did not store a required redirection URL, and your oauth request could not fully be completed. You are logged in, please <a href='/'>return to the home page.</a>`
  46.         });
  47.         return;
  48.     }
  49.     if (req.session.redirect === `/favicon-32x32.png`) {
  50.         res.redirect("/");
  51.         return;
  52.     }
  53.     res.redirect(req.session.redirect);
  54. });
  55.  
  56.     app.get("/info", checkAuth, (req, res) => {
  57.         res.json(req.user);
  58. });
  59.  
  60.     app.get("/logout", (req, res) => {
  61.         req.logout();
  62.     res.redirect("/");
  63. })
  64. };
  65.  
  66. function checkAuth(req, res, next) {
  67.     if (req.isAuthenticated()) return next();
  68.     res.json('Sorry it appears you arnt logged in!');
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement