1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | Object.defineProperty(exports, "__esModule", {
|
5 | value: true
|
6 | });
|
7 | exports["default"] = exports.AuthServerModule = void 0;
|
8 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
9 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
10 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
11 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
12 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
13 | var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
14 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
15 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
16 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
17 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
18 | var _module = _interopRequireDefault(require("@lskjs/module"));
|
19 | var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues"));
|
20 | var _importFn = _interopRequireDefault(require("@lskjs/utils/importFn"));
|
21 | var _forEach = _interopRequireDefault(require("lodash/forEach"));
|
22 | var _get3 = _interopRequireDefault(require("lodash/get"));
|
23 | var _passport = require("passport");
|
24 | var _strategies = _interopRequireDefault(require("./strategies"));
|
25 | var _createHelpers = _interopRequireDefault(require("./utils/createHelpers"));
|
26 | var _excluded = ["provider", "type"];
|
27 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
28 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
29 | var AuthServerModule = function (_Module) {
|
30 | (0, _inherits2["default"])(AuthServerModule, _Module);
|
31 | var _super = _createSuper(AuthServerModule);
|
32 | function AuthServerModule() {
|
33 | (0, _classCallCheck2["default"])(this, AuthServerModule);
|
34 | return _super.apply(this, arguments);
|
35 | }
|
36 | (0, _createClass2["default"])(AuthServerModule, [{
|
37 | key: "getStrategies",
|
38 | value: function getStrategies() {
|
39 | return _strategies["default"];
|
40 | }
|
41 | }, {
|
42 | key: "getPassportStrategy",
|
43 | value: function getPassportStrategy(passport) {
|
44 | var strategy = this.strategies[passport.provider];
|
45 | if (!strategy) {
|
46 | this.log.error('AuthModule !strategy');
|
47 | }
|
48 | return strategy;
|
49 | }
|
50 | }, {
|
51 | key: "updatePassportTokens",
|
52 | value: function () {
|
53 | var _updatePassportTokens = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee(passport) {
|
54 | var strategy,
|
55 | _len,
|
56 | args,
|
57 | _key,
|
58 | _args = arguments;
|
59 | return _regenerator["default"].wrap(function _callee$(_context) {
|
60 | while (1) switch (_context.prev = _context.next) {
|
61 | case 0:
|
62 | strategy = this.getPassportStrategy(passport);
|
63 | for (_len = _args.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
64 | args[_key - 1] = _args[_key];
|
65 | }
|
66 | _context.next = 4;
|
67 | return strategy.updateTokens.apply(strategy, [passport].concat(args));
|
68 | case 4:
|
69 | case "end":
|
70 | return _context.stop();
|
71 | }
|
72 | }, _callee, this);
|
73 | }));
|
74 | function updatePassportTokens(_x) {
|
75 | return _updatePassportTokens.apply(this, arguments);
|
76 | }
|
77 | return updatePassportTokens;
|
78 | }()
|
79 | }, {
|
80 | key: "updatePassportData",
|
81 | value: function () {
|
82 | var _updatePassportData = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2(passport) {
|
83 | var strategy;
|
84 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
85 | while (1) switch (_context2.prev = _context2.next) {
|
86 | case 0:
|
87 | strategy = this.getPassportStrategy(passport);
|
88 | if (strategy) {
|
89 | _context2.next = 3;
|
90 | break;
|
91 | }
|
92 | return _context2.abrupt("return");
|
93 | case 3:
|
94 | _context2.next = 5;
|
95 | return strategy.updateTokens(passport);
|
96 | case 5:
|
97 | _context2.next = 7;
|
98 | return strategy.updatePassport({
|
99 | passport: passport
|
100 | });
|
101 | case 7:
|
102 | case "end":
|
103 | return _context2.stop();
|
104 | }
|
105 | }, _callee2, this);
|
106 | }));
|
107 | function updatePassportData(_x2) {
|
108 | return _updatePassportData.apply(this, arguments);
|
109 | }
|
110 | return updatePassportData;
|
111 | }()
|
112 | }, {
|
113 | key: "init",
|
114 | value: function () {
|
115 | var _init = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee4() {
|
116 | var _this = this;
|
117 | var providers;
|
118 | return _regenerator["default"].wrap(function _callee4$(_context4) {
|
119 | while (1) switch (_context4.prev = _context4.next) {
|
120 | case 0:
|
121 | _context4.next = 2;
|
122 | return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AuthServerModule.prototype), "init", this).call(this);
|
123 | case 2:
|
124 | if (!this.config.socials) this.config.socials = {};
|
125 |
|
126 |
|
127 | this.helpers = (0, _createHelpers["default"])({
|
128 | app: this.app
|
129 | });
|
130 |
|
131 | this.strategyProviders = this.getStrategies();
|
132 | this.strategies = {};
|
133 | this.passportService = new _passport.Passport();
|
134 | providers = (0, _get3["default"])(this, 'config.providers', {});
|
135 | _context4.next = 10;
|
136 | return (0, _asyncMapValues["default"])(providers, function () {
|
137 | var _ref = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee3(config) {
|
138 | var provider, type, strategyConfig, StrategyProvider, strategy;
|
139 | return _regenerator["default"].wrap(function _callee3$(_context3) {
|
140 | while (1) switch (_context3.prev = _context3.next) {
|
141 | case 0:
|
142 | provider = config.provider, type = config.type, strategyConfig = (0, _objectWithoutProperties2["default"])(config, _excluded);
|
143 | _context3.next = 3;
|
144 | return (0, _importFn["default"])(_this.strategyProviders[type]);
|
145 | case 3:
|
146 | StrategyProvider = _context3.sent;
|
147 | if (StrategyProvider) {
|
148 | _context3.next = 6;
|
149 | break;
|
150 | }
|
151 | return _context3.abrupt("return");
|
152 | case 6:
|
153 | strategy = new StrategyProvider({
|
154 | __parent: _this,
|
155 | app: _this.app,
|
156 | provider: provider,
|
157 | type: type,
|
158 | config: strategyConfig
|
159 | });
|
160 | if (strategy) {
|
161 | _context3.next = 9;
|
162 | break;
|
163 | }
|
164 | return _context3.abrupt("return");
|
165 | case 9:
|
166 | _this.strategies[provider] = strategy;
|
167 | case 10:
|
168 | case "end":
|
169 | return _context3.stop();
|
170 | }
|
171 | }, _callee3);
|
172 | }));
|
173 | return function (_x3) {
|
174 | return _ref.apply(this, arguments);
|
175 | };
|
176 | }());
|
177 | case 10:
|
178 | case "end":
|
179 | return _context4.stop();
|
180 | }
|
181 | }, _callee4, this);
|
182 | }));
|
183 | function init() {
|
184 | return _init.apply(this, arguments);
|
185 | }
|
186 | return init;
|
187 | }()
|
188 | }, {
|
189 | key: "getAuthSession",
|
190 | value: function () {
|
191 | var _getAuthSession = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee5(req) {
|
192 | var _req$data, _req$data2, _req$data2$session;
|
193 | var userId, UserModel, user, token;
|
194 | return _regenerator["default"].wrap(function _callee5$(_context5) {
|
195 | while (1) switch (_context5.prev = _context5.next) {
|
196 | case 0:
|
197 | if ((_req$data = req.data) !== null && _req$data !== void 0 && _req$data.__init && (_req$data2 = req.data) !== null && _req$data2 !== void 0 && (_req$data2$session = _req$data2.session) !== null && _req$data2$session !== void 0 && _req$data2$session.user) {
|
198 | req.user = req.data.session.user;
|
199 | }
|
200 | userId = req.user && req.user._id;
|
201 | if (userId) {
|
202 | _context5.next = 4;
|
203 | break;
|
204 | }
|
205 | return _context5.abrupt("return", {});
|
206 | case 4:
|
207 | _context5.next = 6;
|
208 | return this.app.module('models.UserModel');
|
209 | case 6:
|
210 | UserModel = _context5.sent;
|
211 | _context5.next = 9;
|
212 | return UserModel.findOne({
|
213 | _id: userId
|
214 | });
|
215 | case 9:
|
216 | user = _context5.sent;
|
217 | if (user) {
|
218 | _context5.next = 12;
|
219 | break;
|
220 | }
|
221 | throw new _err["default"]('auth.userNotFound', {
|
222 | status: 404
|
223 | });
|
224 | case 12:
|
225 | token = this.helpers.generateAuthToken(user);
|
226 | _context5.t0 = userId;
|
227 | _context5.t1 = token;
|
228 | _context5.next = 17;
|
229 | return UserModel.prepare(user, {
|
230 | req: req,
|
231 | view: 'extended'
|
232 | });
|
233 | case 17:
|
234 | _context5.t2 = _context5.sent;
|
235 | return _context5.abrupt("return", {
|
236 | _id: _context5.t0,
|
237 | token: _context5.t1,
|
238 | user: _context5.t2
|
239 | });
|
240 | case 19:
|
241 | case "end":
|
242 | return _context5.stop();
|
243 | }
|
244 | }, _callee5, this);
|
245 | }));
|
246 | function getAuthSession(_x4) {
|
247 | return _getAuthSession.apply(this, arguments);
|
248 | }
|
249 | return getAuthSession;
|
250 | }()
|
251 | }, {
|
252 | key: "run",
|
253 | value: function () {
|
254 | var _run = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee6() {
|
255 | var _this2 = this;
|
256 | return _regenerator["default"].wrap(function _callee6$(_context6) {
|
257 | while (1) switch (_context6.prev = _context6.next) {
|
258 | case 0:
|
259 | this.log.debug('strategies', Object.keys(this.strategies));
|
260 | (0, _forEach["default"])(this.strategies || [], function (strategy) {
|
261 | _this2.passportService.use(strategy.getPassportStrategy());
|
262 | });
|
263 | case 2:
|
264 | case "end":
|
265 | return _context6.stop();
|
266 | }
|
267 | }, _callee6, this);
|
268 | }));
|
269 | function run() {
|
270 | return _run.apply(this, arguments);
|
271 | }
|
272 | return run;
|
273 | }()
|
274 | }]);
|
275 | return AuthServerModule;
|
276 | }(_module["default"]);
|
277 | exports.AuthServerModule = AuthServerModule;
|
278 | var _default = AuthServerModule;
|
279 | exports["default"] = _default;
|
280 |
|
\ | No newline at end of file |