index.js 1.61 KB
const express = require('express');
const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2').Strategy;
const request = require('request');

const app = express();

app.set('view engine', 'ejs');
app.use(passport.initialize());
app.use(passport.session());

passport.use(new OAuth2Strategy({
    authorizationURL: 'http://localhost:4000/oauth2/authorize',
    tokenURL: 'http://localhost:4000/oauth2/token',
    clientID: '1b0fbe1836d2133ba3c3d3475b3bad9acae57ff6',
    clientSecret: '68529ae2c23361ebd5f4946f09c1cf36f44bb580',
    callbackURL: 'http://localhost:3002/auth/cryptobadge/callback'
  }, (accessToken, refreshToken, params, profile, done) => {
    console.log(accessToken, refreshToken, params, profile);

    const options = {
      url: 'http://localhost:4000/api/user',
      headers: {
        'Authorization': 'Bearer ' + accessToken
      }
    };
    request.post(options, (error, response, user) => {
      if (error || response.statusCode !== 200) {
        return done(error);
      }

      console.log(user);
      done(null, user);
    });
  }
));
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((user, done) => done(null, user));


app.get('/', (req, res) => res.render('index'));
app.get('/success', (req, res) => res.render('success'));

app.get('/auth/cryptobadge', passport.authenticate('oauth2', {scope: ['email']}));
app.get('/auth/cryptobadge/callback', passport.authenticate('oauth2', {failureRedirect: '/close.html?error=foo'}), function (req, res) {
  res.statusCode = 302;
  res.setHeader('Location', '/success');
  res.end();
});

app.listen(3002);