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.PassportModel = void 0;
|
9 |
|
10 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
11 |
|
12 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
13 |
|
14 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
15 |
|
16 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
17 |
|
18 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
19 |
|
20 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
21 |
|
22 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
23 |
|
24 | var _Model2 = _interopRequireDefault(require("@lskjs/db/Model"));
|
25 |
|
26 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
27 |
|
28 | var _canonizeUsername = _interopRequireDefault(require("@lskjs/utils/canonizeUsername"));
|
29 |
|
30 | var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
|
31 |
|
32 | var _pick = _interopRequireDefault(require("lodash/pick"));
|
33 |
|
34 | 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); }; }
|
35 |
|
36 | 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; } }
|
37 |
|
38 | var PassportModel = function (_Model) {
|
39 | (0, _inherits2["default"])(PassportModel, _Model);
|
40 |
|
41 | var _super = _createSuper(PassportModel);
|
42 |
|
43 | function PassportModel() {
|
44 | (0, _classCallCheck2["default"])(this, PassportModel);
|
45 | return _super.apply(this, arguments);
|
46 | }
|
47 |
|
48 | (0, _createClass2["default"])(PassportModel, [{
|
49 | key: "generateUsername",
|
50 | value: function () {
|
51 | var _generateUsername = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee(collection) {
|
52 | var username, prefixusername;
|
53 | return _regenerator["default"].wrap(function _callee$(_context) {
|
54 | while (1) {
|
55 | switch (_context.prev = _context.next) {
|
56 | case 0:
|
57 |
|
58 | username = "".concat(this.providerId, "_").concat(this.provider);
|
59 | username = (0, _canonizeUsername["default"])(username.toLowerCase());
|
60 |
|
61 | if (collection) {
|
62 | _context.next = 4;
|
63 | break;
|
64 | }
|
65 |
|
66 | return _context.abrupt("return", username);
|
67 |
|
68 | case 4:
|
69 | _context.next = 6;
|
70 | return collection.count({
|
71 | username: username
|
72 | });
|
73 |
|
74 | case 6:
|
75 | if (_context.sent) {
|
76 | _context.next = 8;
|
77 | break;
|
78 | }
|
79 |
|
80 | return _context.abrupt("return", username);
|
81 |
|
82 | case 8:
|
83 | prefixusername = "".concat(username, "_");
|
84 |
|
85 | username = prefixusername + Math.random() % 100;
|
86 | _context.next = 12;
|
87 | return collection.count({
|
88 | username: username
|
89 | });
|
90 |
|
91 | case 12:
|
92 | if (_context.sent) {
|
93 | _context.next = 14;
|
94 | break;
|
95 | }
|
96 |
|
97 | return _context.abrupt("return", username);
|
98 |
|
99 | case 14:
|
100 | username = prefixusername + Math.random() % 100;
|
101 | _context.next = 17;
|
102 | return collection.count({
|
103 | username: username
|
104 | });
|
105 |
|
106 | case 17:
|
107 | if (_context.sent) {
|
108 | _context.next = 19;
|
109 | break;
|
110 | }
|
111 |
|
112 | return _context.abrupt("return", username);
|
113 |
|
114 | case 19:
|
115 | throw new _err["default"]('cant generate unique username');
|
116 |
|
117 | case 20:
|
118 | case "end":
|
119 | return _context.stop();
|
120 | }
|
121 | }
|
122 | }, _callee, this);
|
123 | }));
|
124 |
|
125 | function generateUsername(_x) {
|
126 | return _generateUsername.apply(this, arguments);
|
127 | }
|
128 |
|
129 | return generateUsername;
|
130 | }()
|
131 | }, {
|
132 | key: "getUser",
|
133 | value: function () {
|
134 | var _getUser = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2() {
|
135 | var UserModel;
|
136 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
137 | while (1) {
|
138 | switch (_context2.prev = _context2.next) {
|
139 | case 0:
|
140 | _context2.next = 2;
|
141 | return this.constructor.module('models.UserModel');
|
142 |
|
143 | case 2:
|
144 | UserModel = _context2.sent;
|
145 | return _context2.abrupt("return", UserModel.findById(this.userId));
|
146 |
|
147 | case 4:
|
148 | case "end":
|
149 | return _context2.stop();
|
150 | }
|
151 | }
|
152 | }, _callee2, this);
|
153 | }));
|
154 |
|
155 | function getUser() {
|
156 | return _getUser.apply(this, arguments);
|
157 | }
|
158 |
|
159 | return getUser;
|
160 | }()
|
161 | }, {
|
162 | key: "getIdentity",
|
163 | value: function getIdentity() {
|
164 | var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
165 | var object = (0, _pick["default"])(this.toObject(), ['_id']);
|
166 | return Object.assign(object, params);
|
167 | }
|
168 | }, {
|
169 | key: "generateToken",
|
170 | value: function generateToken(params) {
|
171 | return _jsonwebtoken["default"].sign(this.getIdentity(params), ctx.config.jwt.secret);
|
172 | }
|
173 | }], [{
|
174 | key: "decodeToken",
|
175 | value: function decodeToken(token) {
|
176 | return _jsonwebtoken["default"].verify(token, ctx.config.jwt.secret);
|
177 | }
|
178 | }, {
|
179 | key: "getByToken",
|
180 | value: function () {
|
181 | var _getByToken = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee3(token) {
|
182 | var _this$decodeToken, _id;
|
183 |
|
184 | return _regenerator["default"].wrap(function _callee3$(_context3) {
|
185 | while (1) {
|
186 | switch (_context3.prev = _context3.next) {
|
187 | case 0:
|
188 | _this$decodeToken = this.decodeToken(token), _id = _this$decodeToken._id;
|
189 | return _context3.abrupt("return", this.findById(_id));
|
190 |
|
191 | case 2:
|
192 | case "end":
|
193 | return _context3.stop();
|
194 | }
|
195 | }
|
196 | }, _callee3, this);
|
197 | }));
|
198 |
|
199 | function getByToken(_x2) {
|
200 | return _getByToken.apply(this, arguments);
|
201 | }
|
202 |
|
203 | return getByToken;
|
204 | }()
|
205 | }]);
|
206 | return PassportModel;
|
207 | }(_Model2["default"]);
|
208 |
|
209 | exports.PassportModel = PassportModel;
|
210 | PassportModel.schema = {
|
211 | userId: {
|
212 | type: _Model2["default"].Types.ObjectId
|
213 |
|
214 | },
|
215 |
|
216 | raw: {
|
217 | type: Object,
|
218 | "default": {}
|
219 | },
|
220 |
|
221 | profile: {
|
222 | type: Object,
|
223 |
|
224 | "default": {}
|
225 | },
|
226 | meta: {
|
227 | type: Object
|
228 | },
|
229 |
|
230 | fetchedAt: {
|
231 | type: Date,
|
232 | "default": null
|
233 | },
|
234 |
|
235 | type: {
|
236 | type: String
|
237 | },
|
238 |
|
239 | provider: {
|
240 | type: String,
|
241 | required: true
|
242 | },
|
243 |
|
244 | providerId: {
|
245 |
|
246 | type: String,
|
247 | required: true
|
248 | },
|
249 |
|
250 | token: {
|
251 | type: String
|
252 | },
|
253 | refreshToken: {
|
254 | type: String
|
255 | },
|
256 | lastError: {
|
257 | type: Object
|
258 | },
|
259 | lastErrorAt: {
|
260 | type: Date
|
261 | },
|
262 |
|
263 |
|
264 | status: {
|
265 | type: String,
|
266 | "enum": [null, 'valid', 'invalid', 'removed', 'expired', 'unauthorized'],
|
267 | "default": null
|
268 | }
|
269 | };
|
270 | PassportModel.options = {
|
271 | model: 'PassportModel',
|
272 | collection: 'passport'
|
273 |
|
274 |
|
275 |
|
276 | };
|
277 | var _default = PassportModel;
|
278 | exports["default"] = _default;
|
279 |
|
\ | No newline at end of file |