UNPKG

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
"use strict"; 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