Skip to content

Instantly share code, notes, and snippets.

@marr
Created February 22, 2016 20:06
Show Gist options
  • Save marr/f50540c9e09aca177ea7 to your computer and use it in GitHub Desktop.
Save marr/f50540c9e09aca177ea7 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
}
})
app.use(route.get('/', function(ctx, next) {
const user = ctx.req.user
// if (!user.accessToken) {
// return next()
// }
// TODO: Pass referrer in as query string instead of path
const referrer = ctx.headers['referer']
const redir = (referrer) ? referrer : '/'
ctx.redirect(redir + `token/${user.accessToken}`)
}))
// rewrite to index.html
app.use(convert(historyApiFallback({
verbose: false
})))
// static
const serve = require('koa-static')
app.use(convert(serve('dist')))
export default app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment