@lskjs/auth
Version:
LSK.js – auth – module for authorization by login and password and singup through social networks
294 lines (293 loc) • 11.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.BaseStrategy = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _pick = _interopRequireDefault(require("lodash/pick"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var BaseStrategy = /*#__PURE__*/function () {
function BaseStrategy(params) {
(0, _classCallCheck2["default"])(this, BaseStrategy);
this.config = {};
this.Strategy = null;
this.type = null;
this.Strategy = null;
Object.assign(this, params);
}
(0, _createClass2["default"])(BaseStrategy, [{
key: "url",
value: function url(path) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var origin = options.origin;
if (origin) {
return origin + path;
}
return this.app.url(path);
}
}, {
key: "getInfo",
value: function getInfo() {
return _objectSpread({
type: this.type
}, (0, _pick["default"])(this.config, ['clientId', 'clientID']));
}
}, {
key: "getProviderId",
value: function getProviderId() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
id = _ref.id;
return id;
}
}, {
key: "getCallbackUrl",
value: function getCallbackUrl() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
origin = _ref2.origin;
return this.config.callbackURL || this.config.callbackUrl || this.url("/api/auth/".concat(this.provider, "/callback"), {
origin: origin
});
}
}, {
key: "getPassportAuthenticateParams",
value: function getPassportAuthenticateParams() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref3$method = _ref3.method,
method = _ref3$method === void 0 ? 'auth' : _ref3$method,
origin = _ref3.origin;
console.log('getPassportAuthenticateParams callbackURL', this.getCallbackUrl({
origin: origin
}));
if (method === 'auth') {
return {
callbackURL: this.getCallbackUrl({
origin: origin
})
};
}
return {};
}
}, {
key: "getPassportStrategyConfig",
value: function getPassportStrategyConfig() {
return _objectSpread(_objectSpread({}, this.config), {}, {
scope: this.config.scope || [],
callbackURL: this.getCallbackUrl()
});
}
}, {
key: "passportStrategyCallback",
value: function () {
var _passportStrategyCallback = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var _len,
args,
_key,
accessToken,
refreshToken,
profile,
PassportModel,
providerId,
passport,
params,
_args = arguments;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
for (_len = _args.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = _args[_key];
}
accessToken = args[0], refreshToken = args[1], profile = args[2];
PassportModel = this.app.models.PassportModel;
providerId = this.getProviderId(profile);
_context.next = 6;
return PassportModel.findOne({
provider: this.provider,
providerId: providerId
});
case 6:
passport = _context.sent;
params = {
accessToken: accessToken,
refreshToken: refreshToken,
profile: profile,
providerId: providerId
};
if (passport) {
_context.next = 13;
break;
}
_context.next = 11;
return this.createPassport(params);
case 11:
passport = _context.sent;
params.isNew = true;
case 13:
params.passport = passport;
_context.next = 16;
return this.updatePassport(params);
case 16:
_context.next = 18;
return passport.save();
case 18:
params.redirect = this.getSuccessRedirect(params);
return _context.abrupt("return", params);
case 20:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function passportStrategyCallback() {
return _passportStrategyCallback.apply(this, arguments);
}
return passportStrategyCallback;
}() // Using:
// passport.use(strategy.getPassportStrategy());
}, {
key: "getPassportStrategy",
value: function getPassportStrategy() {
var _this = this;
var config = this.getPassportStrategyConfig();
var conf = _objectSpread(_objectSpread({}, config), {}, {
clientID: config.clientID || config.clientId
});
var strategy = new this.Strategy(conf, function () {
for (var _len2 = arguments.length, args1 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args1[_key2] = arguments[_key2];
}
var _args1$reverse = args1.reverse(),
_args1$reverse2 = (0, _toArray2["default"])(_args1$reverse),
done = _args1$reverse2[0],
args2 = _args1$reverse2.slice(1);
var args = args2.reverse();
_this.passportStrategyCallback.apply(_this, (0, _toConsumableArray2["default"])(args)).then(function (data) {
return done(null, data);
})["catch"](function (err) {
return done(err);
});
});
strategy.name = this.provider;
return strategy;
}
}, {
key: "createPassport",
value: function () {
var _createPassport = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref4) {
var token, accessToken, refreshToken, providerId, PassportModel;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
token = _ref4.token, accessToken = _ref4.accessToken, refreshToken = _ref4.refreshToken, providerId = _ref4.providerId;
PassportModel = this.app.models.PassportModel;
return _context2.abrupt("return", new PassportModel({
type: this.type,
provider: this.provider,
providerId: providerId,
token: token || accessToken,
refreshToken: refreshToken
}));
case 3:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function createPassport(_x) {
return _createPassport.apply(this, arguments);
}
return createPassport;
}()
}, {
key: "updatePassport",
value: function () {
var _updatePassport = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref5) {
var accessToken, refreshToken, passport;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
accessToken = _ref5.accessToken, refreshToken = _ref5.refreshToken, passport = _ref5.passport;
/* eslint-disable no-param-reassign */
if (accessToken) passport.token = accessToken;
if (refreshToken) passport.refreshToken = refreshToken;
_context3.prev = 3;
_context3.next = 6;
return this.getProfile(passport);
case 6:
passport.profile = _context3.sent;
_context3.next = 12;
break;
case 9:
_context3.prev = 9;
_context3.t0 = _context3["catch"](3);
this.app.log.warn('NOT OVERRIDED: Strategy.getProfile err', _context3.t0);
case 12:
case "end":
return _context3.stop();
}
}, _callee3, this, [[3, 9]]);
}));
function updatePassport(_x2) {
return _updatePassport.apply(this, arguments);
}
return updatePassport;
}()
}, {
key: "updateTokens",
value: function () {
var _updateTokens = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
// passport
this.app.log.warn('NOT OVERRIDED: Strategy.updateTokens');
// return passport;
case 1:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function updateTokens() {
return _updateTokens.apply(this, arguments);
}
return updateTokens;
}()
}, {
key: "getProfile",
value: function () {
var _getProfile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
return _context5.abrupt("return", {});
case 1:
case "end":
return _context5.stop();
}
}, _callee5);
}));
function getProfile() {
return _getProfile.apply(this, arguments);
}
return getProfile;
}()
}, {
key: "getSuccessRedirect",
value: function getSuccessRedirect(passport) {
return this.url("/auth/passport?p=".concat(passport.generateToken()));
}
}]);
return BaseStrategy;
}();
exports.BaseStrategy = BaseStrategy;
var _default = BaseStrategy;
exports["default"] = _default;
//# sourceMappingURL=BaseStrategy.js.map