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"] = void 0;
|
9 |
|
10 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
11 |
|
12 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13 |
|
14 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
15 |
|
16 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
17 |
|
18 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
19 |
|
20 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
21 |
|
22 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
23 |
|
24 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
25 |
|
26 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
27 |
|
28 | var _AuthApi = _interopRequireDefault(require("./AuthApi"));
|
29 |
|
30 | 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); }; }
|
31 |
|
32 | 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; } }
|
33 |
|
34 | var Api = function (_BaseApi) {
|
35 | (0, _inherits2["default"])(Api, _BaseApi);
|
36 |
|
37 | var _super = _createSuper(Api);
|
38 |
|
39 | function Api() {
|
40 | (0, _classCallCheck2["default"])(this, Api);
|
41 | return _super.apply(this, arguments);
|
42 | }
|
43 |
|
44 | (0, _createClass2["default"])(Api, [{
|
45 | key: "getOperation",
|
46 | value: function () {
|
47 | var _getOperation = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee() {
|
48 | var _ref,
|
49 | req,
|
50 | provider,
|
51 | params,
|
52 | me,
|
53 | UserModel,
|
54 | user,
|
55 | operation,
|
56 | _args = arguments;
|
57 |
|
58 | return _regenerator["default"].wrap(function _callee$(_context) {
|
59 | while (1) {
|
60 | switch (_context.prev = _context.next) {
|
61 | case 0:
|
62 | _ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, req = _ref.req, provider = _ref.provider, params = _ref.params;
|
63 | me = req.user;
|
64 | UserModel = this.app.models.UserModel;
|
65 |
|
66 | if (!params) {
|
67 | _context.next = 7;
|
68 | break;
|
69 | }
|
70 |
|
71 | _context.next = 6;
|
72 | return UserModel.findOne(params);
|
73 |
|
74 | case 6:
|
75 | user = _context.sent;
|
76 |
|
77 | case 7:
|
78 | if (!(me && me._id)) {
|
79 | _context.next = 26;
|
80 | break;
|
81 | }
|
82 |
|
83 | _context.next = 10;
|
84 | return UserModel.findById(me._id);
|
85 |
|
86 | case 10:
|
87 | me = _context.sent;
|
88 |
|
89 | if (!user) {
|
90 | _context.next = 23;
|
91 | break;
|
92 | }
|
93 |
|
94 | if (!(provider === 'email')) {
|
95 | _context.next = 16;
|
96 | break;
|
97 | }
|
98 |
|
99 | throw new _err["default"]('EMAIL_HAS_BEEN_ATTACHED');
|
100 |
|
101 | case 16:
|
102 | if (!(provider === 'phone')) {
|
103 | _context.next = 20;
|
104 | break;
|
105 | }
|
106 |
|
107 | throw new _err["default"]('PHONE_HAS_BEEN_ATTACHED');
|
108 |
|
109 | case 20:
|
110 | throw new _err["default"]('PROVIDER_HAS_BEEN_ATTACHED');
|
111 |
|
112 | case 21:
|
113 | _context.next = 24;
|
114 | break;
|
115 |
|
116 | case 23:
|
117 | operation = 'attach';
|
118 |
|
119 | case 24:
|
120 | _context.next = 28;
|
121 | break;
|
122 |
|
123 | case 26:
|
124 | me = null;
|
125 |
|
126 | if (user) {
|
127 | operation = 'login';
|
128 | } else {
|
129 | operation = 'signup';
|
130 | }
|
131 |
|
132 | case 28:
|
133 | return _context.abrupt("return", operation);
|
134 |
|
135 | case 29:
|
136 | case "end":
|
137 | return _context.stop();
|
138 | }
|
139 | }
|
140 | }, _callee, this);
|
141 | }));
|
142 |
|
143 | function getOperation() {
|
144 | return _getOperation.apply(this, arguments);
|
145 | }
|
146 |
|
147 | return getOperation;
|
148 | }()
|
149 | }, {
|
150 | key: "permitAction",
|
151 | value: function () {
|
152 | var _permitAction = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2(_ref2) {
|
153 | var req, permit, UserModel, provider, params, operation, user, user2, token;
|
154 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
155 | while (1) {
|
156 | switch (_context2.prev = _context2.next) {
|
157 | case 0:
|
158 | req = _ref2.req, permit = _ref2.permit;
|
159 | UserModel = this.app.models.UserModel;
|
160 | provider = permit.info.provider;
|
161 |
|
162 | if (provider) {
|
163 | _context2.next = 5;
|
164 | break;
|
165 | }
|
166 |
|
167 | throw new _err["default"]('!provider');
|
168 |
|
169 | case 5:
|
170 | if (permit.info[provider]) {
|
171 | _context2.next = 7;
|
172 | break;
|
173 | }
|
174 |
|
175 | throw new _err["default"]('!permit.info[provider]');
|
176 |
|
177 | case 7:
|
178 | params = (0, _defineProperty2["default"])({}, provider, permit.info[provider]);
|
179 | _context2.next = 10;
|
180 | return this.getOperation(req, {
|
181 | permit: permit,
|
182 | provider: provider,
|
183 | params: params
|
184 | });
|
185 |
|
186 | case 10:
|
187 | operation = _context2.sent;
|
188 |
|
189 | if (!(operation === 'signup')) {
|
190 | _context2.next = 17;
|
191 | break;
|
192 | }
|
193 |
|
194 | user = new UserModel(params);
|
195 | user.editedAt = new Date();
|
196 | user.signinAt = new Date();
|
197 | _context2.next = 44;
|
198 | break;
|
199 |
|
200 | case 17:
|
201 | if (!(operation === 'login')) {
|
202 | _context2.next = 26;
|
203 | break;
|
204 | }
|
205 |
|
206 | _context2.next = 20;
|
207 | return UserModel.findOne(params).sort({
|
208 | createdAt: 1
|
209 | });
|
210 |
|
211 | case 20:
|
212 | user = _context2.sent;
|
213 |
|
214 | if (user) {
|
215 | _context2.next = 23;
|
216 | break;
|
217 | }
|
218 |
|
219 | throw new _err["default"]('!user');
|
220 |
|
221 | case 23:
|
222 | user.signinAt = new Date();
|
223 | _context2.next = 44;
|
224 | break;
|
225 |
|
226 | case 26:
|
227 | if (!(operation === 'attach')) {
|
228 | _context2.next = 43;
|
229 | break;
|
230 | }
|
231 |
|
232 | if (req.user) {
|
233 | _context2.next = 29;
|
234 | break;
|
235 | }
|
236 |
|
237 | throw new _err["default"]('!user');
|
238 |
|
239 | case 29:
|
240 | _context2.next = 31;
|
241 | return UserModel.findById(req.user._id);
|
242 |
|
243 | case 31:
|
244 | user = _context2.sent;
|
245 |
|
246 | if (user) {
|
247 | _context2.next = 34;
|
248 | break;
|
249 | }
|
250 |
|
251 | throw new _err["default"]('!user');
|
252 |
|
253 | case 34:
|
254 | user[provider] = permit.info[provider];
|
255 | user.editedAt = new Date();
|
256 | _context2.next = 38;
|
257 | return UserModel.findOne(params);
|
258 |
|
259 | case 38:
|
260 | user2 = _context2.sent;
|
261 |
|
262 | if (!user2) {
|
263 | _context2.next = 41;
|
264 | break;
|
265 | }
|
266 |
|
267 | throw new _err["default"]('HAS_BEEN_ATTACHED');
|
268 |
|
269 | case 41:
|
270 | _context2.next = 44;
|
271 | break;
|
272 |
|
273 | case 43:
|
274 | throw new _err["default"]('!operation');
|
275 |
|
276 | case 44:
|
277 | _context2.next = 46;
|
278 | return permit.activate();
|
279 |
|
280 | case 46:
|
281 | _context2.next = 48;
|
282 | return user.save();
|
283 |
|
284 | case 48:
|
285 | token = user.generateAuthToken();
|
286 |
|
287 | _context2.t0 = operation === 'signup';
|
288 | _context2.t1 = operation;
|
289 | _context2.t2 = token;
|
290 | _context2.next = 54;
|
291 | return user.getStatus();
|
292 |
|
293 | case 54:
|
294 | _context2.t3 = _context2.sent;
|
295 | _context2.next = 57;
|
296 | return UserModel.prepare(user, {
|
297 | req: req,
|
298 | view: 'extended'
|
299 | });
|
300 |
|
301 | case 57:
|
302 | _context2.t4 = _context2.sent;
|
303 | return _context2.abrupt("return", {
|
304 | isNew: _context2.t0,
|
305 | operation: _context2.t1,
|
306 | token: _context2.t2,
|
307 | status: _context2.t3,
|
308 | user: _context2.t4
|
309 | });
|
310 |
|
311 | case 59:
|
312 | case "end":
|
313 | return _context2.stop();
|
314 | }
|
315 | }
|
316 | }, _callee2, this);
|
317 | }));
|
318 |
|
319 | function permitAction(_x) {
|
320 | return _permitAction.apply(this, arguments);
|
321 | }
|
322 |
|
323 | return permitAction;
|
324 | }()
|
325 | }]);
|
326 | return Api;
|
327 | }(_AuthApi["default"]);
|
328 |
|
329 | exports["default"] = Api;
|
330 |
|
\ | No newline at end of file |