UNPKG

passport-opskins

Version:

A simple passport strategy for authenticating users through the OPSkins platform

88 lines (71 loc) 2.16 kB
const express = require('express'), handlebars = require('express-handlebars'), passport = require('passport'), session = require('express-session'), opStrategy = require('../').Strategy; const config = require('./config'); const app = express(); const Handlebars = handlebars.create({ extname: '.html' }); app.engine('html', Handlebars.engine); app.set('view engine', 'html'); app.set('views', './views'); let sessionMiddleware = session({ key: 'session_id', secret: 'almatrass', resave: false, saveUninitialized: true, cookie: { maxAge: 1000 * 60 * 60 * 24 * 365 } }); app.use(sessionMiddleware); passport.serializeUser((user, done) => { done(null, user); }); passport.deserializeUser((obj, done) => { done(null, obj); }); let strat = new opStrategy({ name: 'passport-opskins-example', returnURL: `http://localhost:${config.port}/auth/opskins/return`, apiKey: config.apiKey, scopes: 'identity_basic', // Space-separated list of identities mobile: true, // Remove OPSkins NavBar permanent: true, // Maintain permanent access to the account debug: false // Displays error messages in the browser }, (user, done) => { return done(null, user); }); passport.use('opskins', strat); app.use(passport.initialize()); app.use(passport.session()); app.get('/', (req, res) => { console.log(req.user); res.render('index', { user: req.user }); }); app.get('/refreshtoken', (req, res) => { if (req.user) { strat.refreshAccessToken(req.user.access.refresh_token, (err, token) => { if (err) return res.end('An error occurred'); req.user.access.access_token = token; res.end(`Your new access token is: ${token}`); }); } else { res.end(`<a href="/auth/opskins">Please login to see this</a>`); } }); app.get(/^\/auth\/opskins(\/return)?$/, passport.authenticate('opskins', { failureRedirect: '/' }), (req, res) => { // Success, redirect home res.redirect('/') }); app.get('/logout', (req, res) => { req.logout(); res.redirect('/'); }); app.listen(config.port);