Files
pole-book/server/node_modules/grant/lib/handler/fastify.js

51 lines
1.1 KiB
JavaScript

var qs = require('qs')
var Grant = require('../grant')
module.exports = function (args = {}) {
function app (server, options, next) {
args = args.config ? args : {config: args}
var grant = Grant(args)
app.config = grant.config
var prefix = app.config.defaults.prefix.replace(options.prefix, '')
server.route({
method: ['GET', 'POST'],
path: `${prefix}/:provider`,
handler
})
server.route({
method: ['GET', 'POST'],
path: `${prefix}/:provider/:override`,
handler
})
async function handler (req, res) {
if (!req.session) {
throw new Error('Grant: register session plugin first')
}
var {location, session, state} = await grant({
method: req.method,
params: req.params,
query: qs.parse(req.query),
body: qs.parse(req.body),
state: req.grant,
session: req.session.grant,
})
req.session.grant = session
res.grant = state
return location ? res.redirect(location) : res.send()
}
next()
}
return app
}