import * as passport from 'passport'; import * as refresh from 'passport-oauth2-refresh'; import * as OAuth2Strategy from 'passport-oauth2'; import { userService } from '../users/userService'; passport.serializeUser((user, done) => { done(null, user.sub); }); passport.deserializeUser((sub, done) => { userService.find(sub).then((user) => { if (typeof user !== 'undefined') { done(null, user); } else { done('User not found'); } }); }); var strategy = new OAuth2Strategy({ authorizationURL: process.env.AUTHORIZATION_URL, tokenURL: process.env.TOKEN_URL, clientID: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, callbackURL: process.env.CALLBACK_URL, state: true, pkce: true }, function(accessToken, refreshToken, params, _, cb) { console.log(params); userService.findOrCreate(params.profile).then((user: any) => { user.refreshToken = refreshToken; user.accessToken = accessToken; return cb(null, user); }).catch((err) => { return cb(err); }); } ); passport.use(strategy); refresh.use(strategy);