1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = exports.BaseStrategy = void 0;
|
9 |
|
10 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
11 |
|
12 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13 |
|
14 | var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
15 |
|
16 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
17 |
|
18 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
19 |
|
20 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
21 |
|
22 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
23 |
|
24 | var _pick = _interopRequireDefault(require("lodash/pick"));
|
25 |
|
26 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
27 |
|
28 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
29 |
|
30 | var BaseStrategy = function () {
|
31 | function BaseStrategy(params) {
|
32 | (0, _classCallCheck2["default"])(this, BaseStrategy);
|
33 | this.config = {};
|
34 | this.Strategy = null;
|
35 | this.type = null;
|
36 | this.Strategy = null;
|
37 | Object.assign(this, params);
|
38 | }
|
39 |
|
40 | (0, _createClass2["default"])(BaseStrategy, [{
|
41 | key: "url",
|
42 | value: function url(path) {
|
43 | var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
44 | var origin = options.origin;
|
45 |
|
46 | if (origin) {
|
47 | return origin + path;
|
48 | }
|
49 |
|
50 | return this.app.url(path);
|
51 | }
|
52 | }, {
|
53 | key: "getInfo",
|
54 | value: function getInfo() {
|
55 | return _objectSpread({
|
56 | type: this.type
|
57 | }, (0, _pick["default"])(this.config, ['clientId', 'clientID']));
|
58 | }
|
59 | }, {
|
60 | key: "getProviderId",
|
61 | value: function getProviderId() {
|
62 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
63 | id = _ref.id;
|
64 |
|
65 | return id;
|
66 | }
|
67 | }, {
|
68 | key: "getCallbackUrl",
|
69 | value: function getCallbackUrl() {
|
70 | var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
71 | origin = _ref2.origin;
|
72 |
|
73 | return this.config.callbackURL || this.config.callbackUrl || this.url("/api/auth/".concat(this.provider, "/callback"), {
|
74 | origin: origin
|
75 | });
|
76 | }
|
77 | }, {
|
78 | key: "getPassportAuthenticateParams",
|
79 | value: function getPassportAuthenticateParams() {
|
80 | var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
81 | _ref3$method = _ref3.method,
|
82 | method = _ref3$method === void 0 ? 'auth' : _ref3$method,
|
83 | origin = _ref3.origin;
|
84 |
|
85 | console.log('getPassportAuthenticateParams callbackURL', this.getCallbackUrl({
|
86 | origin: origin
|
87 | }));
|
88 |
|
89 | if (method === 'auth') {
|
90 | return {
|
91 | callbackURL: this.getCallbackUrl({
|
92 | origin: origin
|
93 | })
|
94 | };
|
95 | }
|
96 |
|
97 | return {};
|
98 | }
|
99 | }, {
|
100 | key: "getPassportStrategyConfig",
|
101 | value: function getPassportStrategyConfig() {
|
102 | return _objectSpread(_objectSpread({}, this.config), {}, {
|
103 | scope: this.config.scope || [],
|
104 | callbackURL: this.getCallbackUrl()
|
105 | });
|
106 | }
|
107 | }, {
|
108 | key: "passportStrategyCallback",
|
109 | value: function () {
|
110 | var _passportStrategyCallback = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee() {
|
111 | var _len,
|
112 | args,
|
113 | _key,
|
114 | accessToken,
|
115 | refreshToken,
|
116 | profile,
|
117 | PassportModel,
|
118 | providerId,
|
119 | passport,
|
120 | params,
|
121 | _args = arguments;
|
122 |
|
123 | return _regenerator["default"].wrap(function _callee$(_context) {
|
124 | while (1) {
|
125 | switch (_context.prev = _context.next) {
|
126 | case 0:
|
127 | for (_len = _args.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
128 | args[_key] = _args[_key];
|
129 | }
|
130 |
|
131 | accessToken = args[0], refreshToken = args[1], profile = args[2];
|
132 | PassportModel = this.app.models.PassportModel;
|
133 | providerId = this.getProviderId(profile);
|
134 | _context.next = 6;
|
135 | return PassportModel.findOne({
|
136 | provider: this.provider,
|
137 | providerId: providerId
|
138 | });
|
139 |
|
140 | case 6:
|
141 | passport = _context.sent;
|
142 | params = {
|
143 | accessToken: accessToken,
|
144 | refreshToken: refreshToken,
|
145 | profile: profile,
|
146 | providerId: providerId
|
147 | };
|
148 |
|
149 | if (passport) {
|
150 | _context.next = 13;
|
151 | break;
|
152 | }
|
153 |
|
154 | _context.next = 11;
|
155 | return this.createPassport(params);
|
156 |
|
157 | case 11:
|
158 | passport = _context.sent;
|
159 | params.isNew = true;
|
160 |
|
161 | case 13:
|
162 | params.passport = passport;
|
163 | _context.next = 16;
|
164 | return this.updatePassport(params);
|
165 |
|
166 | case 16:
|
167 | _context.next = 18;
|
168 | return passport.save();
|
169 |
|
170 | case 18:
|
171 | params.redirect = this.getSuccessRedirect(params);
|
172 | return _context.abrupt("return", params);
|
173 |
|
174 | case 20:
|
175 | case "end":
|
176 | return _context.stop();
|
177 | }
|
178 | }
|
179 | }, _callee, this);
|
180 | }));
|
181 |
|
182 | function passportStrategyCallback() {
|
183 | return _passportStrategyCallback.apply(this, arguments);
|
184 | }
|
185 |
|
186 | return passportStrategyCallback;
|
187 | }()
|
188 |
|
189 |
|
190 | }, {
|
191 | key: "getPassportStrategy",
|
192 | value: function getPassportStrategy() {
|
193 | var _this = this;
|
194 |
|
195 | var config = this.getPassportStrategyConfig();
|
196 |
|
197 | var conf = _objectSpread(_objectSpread({}, config), {}, {
|
198 | clientID: config.clientID || config.clientId
|
199 | });
|
200 |
|
201 | var strategy = new this.Strategy(conf, function () {
|
202 | for (var _len2 = arguments.length, args1 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
203 | args1[_key2] = arguments[_key2];
|
204 | }
|
205 |
|
206 | var _args1$reverse = args1.reverse(),
|
207 | _args1$reverse2 = (0, _toArray2["default"])(_args1$reverse),
|
208 | done = _args1$reverse2[0],
|
209 | args2 = _args1$reverse2.slice(1);
|
210 |
|
211 | var args = args2.reverse();
|
212 |
|
213 | _this.passportStrategyCallback.apply(_this, (0, _toConsumableArray2["default"])(args)).then(function (data) {
|
214 | return done(null, data);
|
215 | })["catch"](function (err) {
|
216 | return done(err);
|
217 | });
|
218 | });
|
219 | strategy.name = this.provider;
|
220 | return strategy;
|
221 | }
|
222 | }, {
|
223 | key: "createPassport",
|
224 | value: function () {
|
225 | var _createPassport = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2(_ref4) {
|
226 | var token, accessToken, refreshToken, providerId, PassportModel;
|
227 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
228 | while (1) {
|
229 | switch (_context2.prev = _context2.next) {
|
230 | case 0:
|
231 | token = _ref4.token, accessToken = _ref4.accessToken, refreshToken = _ref4.refreshToken, providerId = _ref4.providerId;
|
232 | PassportModel = this.app.models.PassportModel;
|
233 | return _context2.abrupt("return", new PassportModel({
|
234 | type: this.type,
|
235 | provider: this.provider,
|
236 | providerId: providerId,
|
237 | token: token || accessToken,
|
238 | refreshToken: refreshToken
|
239 | }));
|
240 |
|
241 | case 3:
|
242 | case "end":
|
243 | return _context2.stop();
|
244 | }
|
245 | }
|
246 | }, _callee2, this);
|
247 | }));
|
248 |
|
249 | function createPassport(_x) {
|
250 | return _createPassport.apply(this, arguments);
|
251 | }
|
252 |
|
253 | return createPassport;
|
254 | }()
|
255 | }, {
|
256 | key: "updatePassport",
|
257 | value: function () {
|
258 | var _updatePassport = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee3(_ref5) {
|
259 | var accessToken, refreshToken, passport;
|
260 | return _regenerator["default"].wrap(function _callee3$(_context3) {
|
261 | while (1) {
|
262 | switch (_context3.prev = _context3.next) {
|
263 | case 0:
|
264 | accessToken = _ref5.accessToken, refreshToken = _ref5.refreshToken, passport = _ref5.passport;
|
265 |
|
266 |
|
267 | if (accessToken) passport.token = accessToken;
|
268 | if (refreshToken) passport.refreshToken = refreshToken;
|
269 | _context3.prev = 3;
|
270 | _context3.next = 6;
|
271 | return this.getProfile(passport);
|
272 |
|
273 | case 6:
|
274 | passport.profile = _context3.sent;
|
275 | _context3.next = 12;
|
276 | break;
|
277 |
|
278 | case 9:
|
279 | _context3.prev = 9;
|
280 | _context3.t0 = _context3["catch"](3);
|
281 | this.app.log.warn('NOT OVERRIDED: Strategy.getProfile err', _context3.t0);
|
282 |
|
283 | case 12:
|
284 | case "end":
|
285 | return _context3.stop();
|
286 | }
|
287 | }
|
288 | }, _callee3, this, [[3, 9]]);
|
289 | }));
|
290 |
|
291 | function updatePassport(_x2) {
|
292 | return _updatePassport.apply(this, arguments);
|
293 | }
|
294 |
|
295 | return updatePassport;
|
296 | }()
|
297 | }, {
|
298 | key: "updateTokens",
|
299 | value: function () {
|
300 | var _updateTokens = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee4() {
|
301 | return _regenerator["default"].wrap(function _callee4$(_context4) {
|
302 | while (1) {
|
303 | switch (_context4.prev = _context4.next) {
|
304 | case 0:
|
305 |
|
306 | this.app.log.warn('NOT OVERRIDED: Strategy.updateTokens');
|
307 |
|
308 | case 1:
|
309 | case "end":
|
310 | return _context4.stop();
|
311 | }
|
312 | }
|
313 | }, _callee4, this);
|
314 | }));
|
315 |
|
316 | function updateTokens() {
|
317 | return _updateTokens.apply(this, arguments);
|
318 | }
|
319 |
|
320 | return updateTokens;
|
321 | }()
|
322 | }, {
|
323 | key: "getProfile",
|
324 | value: function () {
|
325 | var _getProfile = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee5() {
|
326 | return _regenerator["default"].wrap(function _callee5$(_context5) {
|
327 | while (1) {
|
328 | switch (_context5.prev = _context5.next) {
|
329 | case 0:
|
330 | return _context5.abrupt("return", {});
|
331 |
|
332 | case 1:
|
333 | case "end":
|
334 | return _context5.stop();
|
335 | }
|
336 | }
|
337 | }, _callee5);
|
338 | }));
|
339 |
|
340 | function getProfile() {
|
341 | return _getProfile.apply(this, arguments);
|
342 | }
|
343 |
|
344 | return getProfile;
|
345 | }()
|
346 | }, {
|
347 | key: "getSuccessRedirect",
|
348 | value: function getSuccessRedirect(passport) {
|
349 | return this.url("/auth/passport?p=".concat(passport.generateToken()));
|
350 | }
|
351 | }]);
|
352 | return BaseStrategy;
|
353 | }();
|
354 |
|
355 | exports.BaseStrategy = BaseStrategy;
|
356 | var _default = BaseStrategy;
|
357 | exports["default"] = _default;
|
358 |
|
\ | No newline at end of file |