@lskjs/auth
Version:
LSK.js – auth – module for authorization by login and password and singup through social networks
551 lines (550 loc) • 23.6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.AuthClientModule = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
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 _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
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 _env = require("@lskjs/env");
var _module = _interopRequireDefault(require("@lskjs/module"));
var _jsCookie = _interopRequireDefault(require("js-cookie"));
var _get4 = _interopRequireDefault(require("lodash/get"));
var _LocalStorage = _interopRequireDefault(require("./Storage/LocalStorage"));
var _MemoryStorage = _interopRequireDefault(require("./Storage/MemoryStorage"));
var _stores = _interopRequireDefault(require("./stores"));
var _excluded = ["name"];
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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; } } /* global window */ // import Err from '@lskjs/err';
// const DEBUG = __DEV__ && __STAGE__ === 'isuvorov';
// const DEBUG = false;
var AuthClientModule = /*#__PURE__*/function (_Module) {
(0, _inherits2["default"])(AuthClientModule, _Module);
var _super = _createSuper(AuthClientModule);
function AuthClientModule() {
var _this;
(0, _classCallCheck2["default"])(this, AuthClientModule);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.storages = {
MemoryStorage: _MemoryStorage["default"],
LocalStorage: _LocalStorage["default"]
};
return _this;
}
(0, _createClass2["default"])(AuthClientModule, [{
key: "init",
value: function () {
var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var _this$storages, _this$storages2;
var AuthStore;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "init", this).call(this);
case 2:
_context.next = 4;
return this.module('stores.AuthStore');
case 4:
AuthStore = _context.sent;
this.store = new AuthStore();
if (!(_env.isClient && (_this$storages = this.storages) !== null && _this$storages !== void 0 && _this$storages.LocalStorage)) {
_context.next = 10;
break;
}
this.localStorage = new this.storages.LocalStorage({
// memoryState: this.app.rootState,
config: (0, _get4["default"])(this, 'app.config.storage', {})
});
_context.next = 10;
return this.localStorage.init();
case 10:
if (!((_this$storages2 = this.storages) !== null && _this$storages2 !== void 0 && _this$storages2.MemoryStorage)) {
_context.next = 14;
break;
}
this.memoryStorage = new this.storages.MemoryStorage({
state: this.app.rootState,
config: (0, _get4["default"])(this, 'app.config.storage', {})
});
_context.next = 14;
return this.memoryStorage.init();
case 14:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function init() {
return _init.apply(this, arguments);
}
return init;
}()
}, {
key: "getModules",
value: function () {
var _getModules = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.t0 = _objectSpread;
_context2.t1 = _objectSpread;
_context2.t2 = {};
_context2.next = 5;
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "getModules", this).call(this);
case 5:
_context2.t3 = _context2.sent;
_context2.t4 = (0, _context2.t1)(_context2.t2, _context2.t3);
_context2.t5 = {};
_context2.t6 = {
stores: [function () {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require('@lskjs/mobx/mobxStores'));
});
}, {
stores: _stores["default"]
}]
};
return _context2.abrupt("return", (0, _context2.t0)(_context2.t4, _context2.t5, _context2.t6));
case 10:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function getModules() {
return _getModules.apply(this, arguments);
}
return getModules;
}()
}, {
key: "run",
value: function () {
var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var _this2 = this;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "run", this).call(this);
case 2:
_context3.next = 4;
return this.loadStore();
case 4:
if (_env.isClient && this.store.isAuth()) {
setTimeout(function () {
_this2.updateSession();
}, _env.isDev ? 10000 : 1000);
}
case 5:
case "end":
return _context3.stop();
}
}, _callee3, this);
}));
function run() {
return _run.apply(this, arguments);
}
return run;
}()
}, {
key: "setToken",
value: function () {
var _setToken = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(token) {
var expires,
cookies,
api,
_get2,
_get2$name,
name,
options,
_args4 = arguments;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
expires = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : 365;
cookies = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : true;
if (this.debug) this.log.trace('AuthClientModule.setToken', token);
if (!this.app.hasModule('api')) {
_context4.next = 9;
break;
}
_context4.next = 6;
return this.app.module('api');
case 6:
api = _context4.sent;
_context4.next = 9;
return api.setToken(token);
case 9:
if (this.app.api) this.app.api.setAuthToken(token);
if (this.app.apiq) this.app.apiq.setToken(token);
if (this.memoryStorage) this.memoryStorage.set('req.token', token);
_get2 = (0, _get4["default"])(this.app, 'config.jwt.cookie', {}), _get2$name = _get2.name, name = _get2$name === void 0 ? 'token' : _get2$name, options = (0, _objectWithoutProperties2["default"])(_get2, _excluded);
if (this.debug) this.log.trace('AuthClientModule.setToken cookie', {
name: name,
options: options,
token: token
}, _env.isClient && cookies, _env.isClient, cookies);
if (_env.isClient && cookies) {
if (token == null) {
if (this.debug) this.log.trace('cookie.remove(name, options)', name, options);
_jsCookie["default"].remove(name, options);
} else {
if (this.debug) this.log.trace('cookie.set(name, token, { expires, ...options })', name, token, _objectSpread({
expires: expires
}, options));
_jsCookie["default"].set(name, token, _objectSpread({
expires: expires
}, options));
}
}
case 15:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function setToken(_x) {
return _setToken.apply(this, arguments);
}
return setToken;
}()
}, {
key: "loadStore",
value: function () {
var _loadStore = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var state, _session2, _yield$this$store$con, _session, session;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
state = {};
if (this.memoryStorage) {
state = _objectSpread(_objectSpread({}, state), this.memoryStorage.get('auth'));
}
if (this.localStorage) {
state = _objectSpread(_objectSpread({}, state), this.localStorage.get('auth'));
}
if (!(!state.session && this.memoryStorage.get('req.user'))) {
_context5.next = 18;
break;
}
_session2 = {
_id: this.memoryStorage.get('req.user._id'),
user: this.memoryStorage.get('req.user'),
token: this.memoryStorage.get('req.token')
};
state = _objectSpread(_objectSpread({}, state), {}, {
session: _session2,
sessions: [_session2]
});
if (!_env.isServer) {
_context5.next = 18;
break;
}
_context5.prev = 7;
_context5.next = 10;
return this.store.constructor.api.session({
__init: true,
session: _session2
});
case 10:
_yield$this$store$con = _context5.sent;
_session = _yield$this$store$con.data;
if (_session && Object.keys(_session).length > 0 && _session2._id === _session._id) {
state.session = _session;
state.sessions = [_session];
}
_context5.next = 18;
break;
case 15:
_context5.prev = 15;
_context5.t0 = _context5["catch"](7);
this.log.error('loadStore session', _context5.t0);
case 18:
if (this.debug) this.log.trace('loadStore', state);
this.store.setState(state);
session = this.store.session;
_context5.next = 23;
return this.setToken(session ? session.token : null);
case 23:
case "end":
return _context5.stop();
}
}, _callee5, this, [[7, 15]]);
}));
function loadStore() {
return _loadStore.apply(this, arguments);
}
return loadStore;
}()
}, {
key: "saveStore",
value: function () {
var _saveStore = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
var state, token;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
state = this.store.getState();
if (this.debug) this.log.trace('saveStore', state);
if (this.localStorage) this.localStorage.set('auth', state);
if (this.memoryStorage) this.memoryStorage.set('auth', state);
token = state.session ? state.session.token : null;
_context6.next = 7;
return this.setToken(token);
case 7:
case "end":
return _context6.stop();
}
}, _callee6, this);
}));
function saveStore() {
return _saveStore.apply(this, arguments);
}
return saveStore;
}()
}, {
key: "isAuth",
value: function isAuth() {
return this.store.isAuth();
}
}, {
key: "getSession",
value: function getSession() {
return this.store.getSession();
}
}, {
key: "getUserId",
value: function getUserId() {
return this.store.getUserId();
}
}, {
key: "logout",
value: function () {
var _logout = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
var redirect,
_args7 = arguments;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
redirect = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : true;
_context7.next = 3;
return this.store.logout();
case 3:
_context7.next = 5;
return this.saveStore();
case 5:
if (redirect) this.app.redirect('/');
case 6:
case "end":
return _context7.stop();
}
}, _callee7, this);
}));
function logout() {
return _logout.apply(this, arguments);
}
return logout;
}()
}, {
key: "signup",
value: function () {
var _signup = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
var _this$store;
var res,
_args8 = arguments;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return (_this$store = this.store).signup.apply(_this$store, _args8);
case 2:
res = _context8.sent;
_context8.next = 5;
return this.saveStore();
case 5:
return _context8.abrupt("return", res);
case 6:
case "end":
return _context8.stop();
}
}, _callee8, this);
}));
function signup() {
return _signup.apply(this, arguments);
}
return signup;
}()
}, {
key: "login",
value: function () {
var _login = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
var _this$log, _this$store2;
var _len2,
args,
_key2,
res,
_args9 = arguments;
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) switch (_context9.prev = _context9.next) {
case 0:
for (_len2 = _args9.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = _args9[_key2];
}
(_this$log = this.log).debug.apply(_this$log, ['login'].concat(args));
_context9.next = 4;
return (_this$store2 = this.store).login.apply(_this$store2, args);
case 4:
res = _context9.sent;
this.log.trace('login res', res);
_context9.next = 8;
return this.saveStore();
case 8:
return _context9.abrupt("return", res);
case 9:
case "end":
return _context9.stop();
}
}, _callee9, this);
}));
function login() {
return _login.apply(this, arguments);
}
return login;
}()
}, {
key: "updateSession",
value: function () {
var _updateSession = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
var _this$store3,
res,
_args10 = arguments;
return _regenerator["default"].wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
case 0:
_context10.prev = 0;
_context10.next = 3;
return (_this$store3 = this.store).updateSession.apply(_this$store3, _args10);
case 3:
res = _context10.sent;
_context10.next = 6;
return this.saveStore();
case 6:
return _context10.abrupt("return", res);
case 9:
_context10.prev = 9;
_context10.t0 = _context10["catch"](0);
if (!(_context10.t0.code === 'auth.userNotFound')) {
_context10.next = 14;
break;
}
_context10.next = 14;
return this.logout();
case 14:
throw _context10.t0;
case 15:
case "end":
return _context10.stop();
}
}, _callee10, this, [[0, 9]]);
}));
function updateSession() {
return _updateSession.apply(this, arguments);
}
return updateSession;
}()
}, {
key: "confirm",
value: function confirm(values) {
return this.app.api.fetch('/api/auth/permit/confirm', {
method: 'POST',
data: values
});
}
}, {
key: "restorePassword",
value: function restorePassword(_ref) {
var email = _ref.email;
return this.app.api.fetch('/api/auth/restorePassword', {
method: 'POST',
data: {
email: email
}
});
}
}, {
key: "setPassword",
value: function setPassword(_ref2) {
var permitId = _ref2.permitId,
code = _ref2.code,
password = _ref2.password;
return this.app.api.fetch('/api/auth/setPassword', {
method: 'POST',
data: {
permitId: permitId,
code: code,
password: password
}
});
}
}, {
key: "confirmEmail",
value: function confirmEmail(_ref3) {
var permitId = _ref3.permitId,
code = _ref3.code;
return this.app.api.fetch('/api/auth/confirmEmail', {
method: 'POST',
data: {
permitId: permitId,
code: code
}
});
}
}, {
key: "setData",
value: function setData() {
var _this$store4;
return (_this$store4 = this.store).setData.apply(_this$store4, arguments);
}
}, {
key: "loginPassport",
value: function loginPassport(data) {
return this.applyPromiseAndFetchProfile(this.app.api.authLoginPassport(data));
}
}, {
key: "authPassport",
value: function authPassport(provider) {
if (typeof window !== 'undefined') window.location = "/api/module/auth/".concat(provider);
}
}]);
return AuthClientModule;
}(_module["default"]); // export default ctx => ({
// init() {
// // this.components = require('./uapp/components').default(ctx);
// // this.socials = require('./uapp/socials').default;// (ctx);
// // this.models = require('./uapp/models').default(ctx);
// this.stores = require('./uapp/stores').default(ctx);
// // this.router = require('./uapp/router').default;
// },
// // getStores
// });
exports.AuthClientModule = AuthClientModule;
var _default = AuthClientModule;
exports["default"] = _default;
//# sourceMappingURL=AuthClientModule.js.map