UNPKG

guardian

Version:

Authentication Gateway Proxy

100 lines (82 loc) 2.7 kB
var helper = require('./lib/helper'), log = helper.log; module.exports = { "category": "oauth", "type": "1.0a-three-legged", "steps": 3, "step": { 1: { invoke: function (options) { var oa = helper.getOAuth(options); oa.getOAuthRequestToken(options.parameters || {}, options.next); }, next: function (server, response, next) { if (response.error) { return helper.handleCallback(server.req.session.data, server, { status: 500, data: { message: 'Could not authenticate with given credentials for request token.', data: response.error.data } }); } server.req.session.data.oauth_token = response.token; server.req.session.data.oauth_token_secret = response.secret; return next(); } }, 2: { invoke: function (options, server) { server.res.redirect(options.authorizeUrl + '?oauth_token=' + (options.oauth_token || '')); } }, callback: { next: function (server, response, next) { if (response.error) { return helper.handleCallback(server.req.session.data, server, { status: 500, data: { message: 'Could not determine token and verifier.', data: response.error.data } }); } server.req.session.data.oauth_token = response.token; server.req.session.data.oauth_verifier = response.verifier; next(); } }, 3: { invoke: function (options) { var oa = helper.getOAuth(options); var opts = { parameters: options.parameters || {} }; opts.parameters.oauth_verifier = options.oauth_verifier; opts.parameters.oauth_token = options.oauth_token; opts.oauth_token_secret = options.oauth_token_secret; oa.getOAuthAccessToken(opts, options.next); }, next: function (server, response, next) { var result; if (response.error) { return helper.handleCallback(server.req.session.data, server, { status: 500, data: { message: 'Could not determine access_token and access_secret.', data: response.error.data } }); } result = response.results || {}; result.access_token = response.token; result.access_secret = response.secret; next(result); } } }, "validate": function (opts) { if (!opts.requestUrl) return "Request URL is required."; if (!opts.accessUrl) return "Access URL is required."; return undefined; } };