webservices/node_modules/passport-oauth2-client-password/lib/strategy.js

64 lines
1.4 KiB
JavaScript

/**
* Module dependencies.
*/
var passport = require('passport-strategy')
, util = require('util');
/**
* `ClientPasswordStrategy` constructor.
*
* @api protected
*/
function Strategy(options, verify) {
if (typeof options == 'function') {
verify = options;
options = {};
}
if (!verify) throw new Error('OAuth 2.0 client password strategy requires a verify function');
passport.Strategy.call(this);
this.name = 'oauth2-client-password';
this._verify = verify;
this._passReqToCallback = options.passReqToCallback;
}
/**
* Inherit from `passport.Strategy`.
*/
util.inherits(Strategy, passport.Strategy);
/**
* Authenticate request based on client credentials in the request body.
*
* @param {Object} req
* @api protected
*/
Strategy.prototype.authenticate = function(req) {
if (!req.body || (!req.body['client_id'] || !req.body['client_secret'])) {
return this.fail();
}
var clientId = req.body['client_id'];
var clientSecret = req.body['client_secret'];
var self = this;
function verified(err, client, info) {
if (err) { return self.error(err); }
if (!client) { return self.fail(); }
self.success(client, info);
}
if (self._passReqToCallback) {
this._verify(req, clientId, clientSecret, verified);
} else {
this._verify(clientId, clientSecret, verified);
}
}
/**
* Expose `Strategy`.
*/
module.exports = Strategy;