Skip to content

Instantly share code, notes, and snippets.

@marr
Created February 22, 2016 18:00
Show Gist options
  • Save marr/363f4fc661e74e033791 to your computer and use it in GitHub Desktop.
Save marr/363f4fc661e74e033791 to your computer and use it in GitHub Desktop.
import Koa from 'koa'
import historyApiFallback from 'koa-connect-history-api-fallback'
const app = new Koa()
// trust proxy
app.proxy = true
// sessions
const convert = require('koa-convert')
const session = require('koa-generic-session')
app.keys = ['your-session-secret']
app.use(convert(session()))
// body parser
const bodyParser = require('koa-bodyparser')
app.use(bodyParser())
// authentication
require('./lib/authn')
const passport = require('koa-passport')
app.use(passport.initialize())
app.use(passport.session())
// routes
const fs = require('fs')
const route = require('koa-route')
app.use(route.get('/logout', function(ctx) {
ctx.logout()
ctx.redirect('/login')
}))
app.use(route.get('/login',
passport.authenticate('oauth2')
))
app.use(route.get('/oauth/callback',
passport.authenticate('oauth2', {
failureRedirect: '/login',
successRedirect: '/'
})
))
// Require authentication for now
app.use(function(ctx, next) {
if (ctx.isAuthenticated()) {
return next()
} else {
ctx.redirect('/login')
// ctx.status = 401
}
})
// rewrite to index.html
app.use(convert(historyApiFallback({
verbose: false
})))
// static
const serve = require('koa-static')
app.use(convert(serve('dist', { defer: true })))
app.use(route.get('/', function(ctx, next) {
const user = ctx.req.user
if (!user.access_token) {
console.log('no token, moving to static')
return next()
}
const referrer = ctx.headers['referer']
const redir = (referrer) ? referrer : '/'
console.log("redirecting to: %s", redir)
return ctx.redirect(redir + `token/${user.access_token}`)
}))
export default app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment