@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
JavaScript
"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