passport-netlify
Version:
[Passport](http://passportjs.org/) strategy for authenticating with [Netlify](https://www.netlify.com/) using the OAuth 2.0 API.
78 lines • 3.21 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var passport_oauth2_1 = require("passport-oauth2");
var profile_1 = require("./profile");
var apiError_1 = require("./apiError");
var STRATEGY_NAME = 'netlify';
var PROVIDER_NAME = 'netlify';
var USER_PROFILE_URL = 'https://api.netlify.com/api/v1/user';
var AUTHORIZATION_URL = 'https://app.netlify.com/authorize';
var TOKEN_URL = 'https://api.netlify.com/oauth/token';
var Strategy = /** @class */ (function (_super) {
__extends(Strategy, _super);
function Strategy(options, verify) {
var _this = this;
var _a = options.state, state = _a === void 0 ? false : _a;
var superOptions = __assign({}, options, { state: state, authorizationURL: AUTHORIZATION_URL, tokenURL: TOKEN_URL });
_this = _super.call(this, superOptions, verify) || this;
_this.name = STRATEGY_NAME;
_this._oauth2.useAuthorizationHeaderforGET(true);
return _this;
}
Strategy.prototype.userProfile = function (accessToken, done) {
this._oauth2.get(USER_PROFILE_URL, accessToken, function (err, body, _) {
var json;
if (err) {
if (err.data) {
try {
json = JSON.parse(err.data);
}
catch (_) { } // tslint:disable-line no-empty
}
if (json && json.message) {
return done(new apiError_1.default(json.message));
}
return done(new passport_oauth2_1.InternalOAuthError('Failed to fetch user profile', err));
}
var _body = body ? body.toString() : '';
try {
json = JSON.parse(_body);
}
catch (_) {
return done(new Error('Failed to parse user profile (invalid JSON)'));
}
var profile = profile_1.parseUserProfile(json);
profile.provider = PROVIDER_NAME;
profile._raw = _body;
profile._json = json;
done(null, profile);
});
};
return Strategy;
}(passport_oauth2_1.default));
exports.default = Strategy;
//# sourceMappingURL=strategy.js.map