Files
pole-book/server/node_modules/grant/lib/request.js

70 lines
1.9 KiB
JavaScript

var {compose, dcopy} = require('./util')
var _config = require('./config')
var oauth1 = require('./flow/oauth1')
var oauth2 = require('./flow/oauth2')
var defaults = (config) => ({method, params, query, body, state, session}) => {
method = method.toUpperCase()
params = dcopy(params || {})
query = dcopy(query || {})
body = dcopy(body || {})
state = dcopy(state || {})
session = dcopy(params.override === 'callback' ? (session || {}) : {})
if (params.override !== 'callback') {
session.provider = params.provider
if (params.override) {
session.override = params.override
}
if (method === 'GET' && Object.keys(query).length) {
session.dynamic = query
}
else if (method === 'POST' && Object.keys(body).length) {
session.dynamic = body
}
}
var provider = _config.provider(config, session, state)
return {provider, input: {method, params, query, body, state, session}}
}
var connect = ({request}) => ({provider, input, input:{session}, output}) =>
provider.oauth === 1
? compose(
oauth1.request({request}),
({provider, input, input:{session}, output}) => (
session.request = output,
oauth1.authorize({provider, input, output})
)
)({provider, input})
: provider.oauth === 2
? (
session.state = provider.state,
session.nonce = provider.nonce,
session.code_verifier = provider.code_verifier,
oauth2.authorize({provider, input})
)
: (
output = {error: 'Grant: missing or misconfigured provider'},
{provider, input, output}
)
var callback = ({request}) => ({provider, input, output}) =>
provider.oauth === 1
? oauth1.access({request})
: provider.oauth === 2
? oauth2.access({request})
: ({provider, input, output}) => (
output = {error: 'Grant: missing session or misconfigured provider'},
{provider, input, output}
)
module.exports = {defaults, connect, callback}