UNPKG

@lskjs/auth

Version:

LSK.js – auth – module for authorization by login and password and singup through social networks

250 lines (249 loc) 9.63 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _err = _interopRequireDefault(require("@lskjs/err")); var _AuthApi = _interopRequireDefault(require("./AuthApi")); 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); }; } 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; } } var Api = /*#__PURE__*/function (_BaseApi) { (0, _inherits2["default"])(Api, _BaseApi); var _super = _createSuper(Api); function Api() { (0, _classCallCheck2["default"])(this, Api); return _super.apply(this, arguments); } (0, _createClass2["default"])(Api, [{ key: "getOperation", value: function () { var _getOperation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _ref, req, provider, params, me, UserModel, user, operation, _args = arguments; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _ref = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, req = _ref.req, provider = _ref.provider, params = _ref.params; me = req.user; UserModel = this.app.models.UserModel; if (!params) { _context.next = 7; break; } _context.next = 6; return UserModel.findOne(params); case 6: user = _context.sent; case 7: if (!(me && me._id)) { _context.next = 26; break; } _context.next = 10; return UserModel.findById(me._id); case 10: me = _context.sent; if (!user) { _context.next = 23; break; } if (!(provider === 'email')) { _context.next = 16; break; } throw new _err["default"]('EMAIL_HAS_BEEN_ATTACHED'); case 16: if (!(provider === 'phone')) { _context.next = 20; break; } throw new _err["default"]('PHONE_HAS_BEEN_ATTACHED'); case 20: throw new _err["default"]('PROVIDER_HAS_BEEN_ATTACHED'); case 21: _context.next = 24; break; case 23: operation = 'attach'; case 24: _context.next = 28; break; case 26: me = null; if (user) { operation = 'login'; } else { operation = 'signup'; } case 28: return _context.abrupt("return", operation); case 29: case "end": return _context.stop(); } }, _callee, this); })); function getOperation() { return _getOperation.apply(this, arguments); } return getOperation; }() }, { key: "permitAction", value: function () { var _permitAction = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref2) { var req, permit, UserModel, provider, params, operation, user, user2, token; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: req = _ref2.req, permit = _ref2.permit; UserModel = this.app.models.UserModel; provider = permit.info.provider; if (provider) { _context2.next = 5; break; } throw new _err["default"]('!provider'); case 5: if (permit.info[provider]) { _context2.next = 7; break; } throw new _err["default"]('!permit.info[provider]'); case 7: params = (0, _defineProperty2["default"])({}, provider, permit.info[provider]); _context2.next = 10; return this.getOperation(req, { permit: permit, provider: provider, params: params }); case 10: operation = _context2.sent; if (!(operation === 'signup')) { _context2.next = 17; break; } user = new UserModel(params); user.editedAt = new Date(); user.signinAt = new Date(); _context2.next = 44; break; case 17: if (!(operation === 'login')) { _context2.next = 26; break; } _context2.next = 20; return UserModel.findOne(params).sort({ createdAt: 1 }); case 20: user = _context2.sent; if (user) { _context2.next = 23; break; } throw new _err["default"]('!user'); case 23: user.signinAt = new Date(); _context2.next = 44; break; case 26: if (!(operation === 'attach')) { _context2.next = 43; break; } if (req.user) { _context2.next = 29; break; } throw new _err["default"]('!user'); case 29: _context2.next = 31; return UserModel.findById(req.user._id); case 31: user = _context2.sent; if (user) { _context2.next = 34; break; } throw new _err["default"]('!user'); case 34: user[provider] = permit.info[provider]; user.editedAt = new Date(); _context2.next = 38; return UserModel.findOne(params); case 38: user2 = _context2.sent; if (!user2) { _context2.next = 41; break; } throw new _err["default"]('HAS_BEEN_ATTACHED'); case 41: _context2.next = 44; break; case 43: throw new _err["default"]('!operation'); case 44: _context2.next = 46; return permit.activate(); case 46: _context2.next = 48; return user.save(); case 48: token = user.generateAuthToken(); // console.log(`auth/confirm ${user._id} ${token}`); // this.app.logger _context2.t0 = operation === 'signup'; _context2.t1 = operation; _context2.t2 = token; _context2.next = 54; return user.getStatus(); case 54: _context2.t3 = _context2.sent; _context2.next = 57; return UserModel.prepare(user, { req: req, view: 'extended' }); case 57: _context2.t4 = _context2.sent; return _context2.abrupt("return", { isNew: _context2.t0, operation: _context2.t1, token: _context2.t2, status: _context2.t3, user: _context2.t4 }); case 59: case "end": return _context2.stop(); } }, _callee2, this); })); function permitAction(_x) { return _permitAction.apply(this, arguments); } return permitAction; }() }]); return Api; }(_AuthApi["default"]); exports["default"] = Api; //# sourceMappingURL=AuthMobileApi.js.map