47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
/**
|
|
* Module dependencies.
|
|
*/
|
|
var AuthorizationError = require('../errors/authorizationerror')
|
|
, BadRequestError = require('../errors/badrequesterror')
|
|
, ForbiddenError = require('../errors/forbiddenerror');
|
|
|
|
|
|
/**
|
|
* Loads an OAuth 2.0 authorization transaction from the session.
|
|
*
|
|
* This middleware is used to load a pending OAuth 2.0 transaction that is
|
|
* serialized into the session. In most circumstances, this is transparently
|
|
* done prior to processing a user's decision with `decision` middleware, and an
|
|
* implementation shouldn't need to mount this middleware explicitly.
|
|
*
|
|
* Options:
|
|
*
|
|
* transactionField name of field that contains the transaction ID (default: 'transaction_id')
|
|
* sessionKey key under which transactions are stored in the session (default: 'authorize')
|
|
*
|
|
* @param {Server} server
|
|
* @param {Object} options
|
|
* @return {Function}
|
|
* @api protected
|
|
*/
|
|
module.exports = function(server, options) {
|
|
options = options || {};
|
|
|
|
if (!server) { throw new TypeError('oauth2orize.transactionLoader middleware requires a server argument'); }
|
|
|
|
return function transactionLoader(req, res, next) {
|
|
if (req.oauth2) { return next(); }
|
|
|
|
function loaded(err, txn) {
|
|
if (err) { return next(err); }
|
|
req.oauth2 = txn;
|
|
next();
|
|
}
|
|
|
|
if (server._txnStore.legacy == true) {
|
|
server._txnStore.load(server, options, req, loaded);
|
|
} else {
|
|
server._txnStore.load(req, loaded);
|
|
}
|
|
};
|
|
};
|