UNPKG

12.4 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports["default"] = exports.AuthServerModule = void 0;
8var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
14var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
16var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17var _err = _interopRequireDefault(require("@lskjs/err"));
18var _module = _interopRequireDefault(require("@lskjs/module"));
19var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues"));
20var _importFn = _interopRequireDefault(require("@lskjs/utils/importFn"));
21var _forEach = _interopRequireDefault(require("lodash/forEach"));
22var _get3 = _interopRequireDefault(require("lodash/get"));
23var _passport = require("passport");
24var _strategies = _interopRequireDefault(require("./strategies"));
25var _createHelpers = _interopRequireDefault(require("./utils/createHelpers"));
26var _excluded = ["provider", "type"];
27function _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); }; }
28function _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; } }
29var AuthServerModule = /*#__PURE__*/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"])( /*#__PURE__*/_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"])( /*#__PURE__*/_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"])( /*#__PURE__*/_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 // this.models = this.getModels();
126
127 this.helpers = (0, _createHelpers["default"])({
128 app: this.app
129 }); // TODO: потом надо будет по другому кидать app, а еще лучше вообще не кидать
130
131 this.strategyProviders = this.getStrategies();
132 this.strategies = {};
133 this.passportService = new _passport.Passport();
134 providers = (0, _get3["default"])(this, 'config.providers', {}); // console.log({ providers });
135 _context4.next = 10;
136 return (0, _asyncMapValues["default"])(providers, /*#__PURE__*/function () {
137 var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_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 }); // console.log({strategy});
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"])( /*#__PURE__*/_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"])( /*#__PURE__*/_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"]);
277exports.AuthServerModule = AuthServerModule;
278var _default = AuthServerModule;
279exports["default"] = _default;
280//# sourceMappingURL=AuthServerModule.js.map
\No newline at end of file