UNPKG

16.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"AuthClientModule.js","names":["AuthClientModule","storages","MemoryStorage","LocalStorage","module","AuthStore","store","isClient","localStorage","config","get","init","memoryStorage","state","app","rootState","stores","loadStore","isAuth","setTimeout","updateSession","isDev","token","expires","cookies","debug","log","trace","hasModule","api","setToken","setAuthToken","apiq","set","name","options","cookie","remove","session","_id","user","sessions","isServer","constructor","__init","_session","data","Object","keys","length","error","setState","getState","getSession","getUserId","redirect","logout","saveStore","signup","res","args","login","code","values","fetch","method","email","permitId","password","setData","applyPromiseAndFetchProfile","authLoginPassport","provider","window","location","Module"],"sources":["../src/AuthClientModule.js"],"sourcesContent":["/* global window */\nimport { isClient, isDev, isServer } from '@lskjs/env';\n// import Err from '@lskjs/err';\nimport Module from '@lskjs/module';\nimport cookie from 'js-cookie';\nimport get from 'lodash/get';\n\nimport LocalStorage from './Storage/LocalStorage';\nimport MemoryStorage from './Storage/MemoryStorage';\nimport stores from './stores';\n\n// const DEBUG = __DEV__ && __STAGE__ === 'isuvorov';\n// const DEBUG = false;\n\nexport class AuthClientModule extends Module {\n storages = {\n MemoryStorage,\n LocalStorage,\n };\n\n async init() {\n await super.init();\n // this.stores = require('./stores').default(this.app);\n const AuthStore = await this.module('stores.AuthStore');\n this.store = new AuthStore();\n if (isClient && this.storages?.LocalStorage) {\n this.localStorage = new this.storages.LocalStorage({\n // memoryState: this.app.rootState,\n config: get(this, 'app.config.storage', {}),\n });\n await this.localStorage.init();\n }\n if (this.storages?.MemoryStorage) {\n this.memoryStorage = new this.storages.MemoryStorage({\n state: this.app.rootState,\n config: get(this, 'app.config.storage', {}),\n });\n await this.memoryStorage.init();\n }\n }\n\n async getModules() {\n return {\n ...(await super.getModules()),\n stores: [() => import('@lskjs/mobx/mobxStores'), { stores }],\n };\n }\n\n async run() {\n await super.run();\n await this.loadStore();\n if (isClient && this.store.isAuth()) {\n setTimeout(\n () => {\n this.updateSession();\n },\n isDev ? 10000 : 1000,\n );\n }\n }\n\n async setToken(token, expires = 365, cookies = true) {\n if (this.debug) this.log.trace('AuthClientModule.setToken', token);\n if (this.app.hasModule('api')) {\n const api = await this.app.module('api');\n await api.setToken(token);\n }\n if (this.app.api) this.app.api.setAuthToken(token);\n if (this.app.apiq) this.app.apiq.setToken(token);\n if (this.memoryStorage) this.memoryStorage.set('req.token', token);\n const { name = 'token', ...options } = get(this.app, 'config.jwt.cookie', {});\n if (this.debug)\n this.log.trace(\n 'AuthClientModule.setToken cookie',\n { name, options, token },\n isClient && cookies,\n isClient,\n cookies,\n );\n if (isClient && cookies) {\n if (token == null) {\n if (this.debug) this.log.trace('cookie.remove(name, options)', name, options);\n cookie.remove(name, options);\n } else {\n if (this.debug)\n this.log.trace('cookie.set(name, token, { expires, ...options })', name, token, { expires, ...options });\n cookie.set(name, token, { expires, ...options });\n }\n }\n }\n\n async loadStore() {\n let state = {};\n if (this.memoryStorage) {\n state = {\n ...state,\n ...this.memoryStorage.get('auth'),\n };\n }\n if (this.localStorage) {\n state = {\n ...state,\n ...this.localStorage.get('auth'),\n };\n }\n if (!state.session && this.memoryStorage.get('req.user')) {\n const session = {\n _id: this.memoryStorage.get('req.user._id'),\n user: this.memoryStorage.get('req.user'),\n token: this.memoryStorage.get('req.token'),\n };\n\n state = {\n ...state,\n session,\n sessions: [session],\n };\n\n if (isServer) {\n try {\n const { data: _session } = await this.store.constructor.api.session({ __init: true, session });\n if (_session && Object.keys(_session).length > 0 && session._id === _session._id) {\n state.session = _session;\n state.sessions = [_session];\n }\n } catch (error) {\n this.log.error('loadStore session', error);\n }\n }\n }\n\n if (this.debug) this.log.trace('loadStore', state);\n this.store.setState(state);\n\n const { session } = this.store;\n await this.setToken(session ? session.token : null);\n }\n\n async saveStore() {\n const state = this.store.getState();\n if (this.debug) this.log.trace('saveStore', state);\n if (this.localStorage) this.localStorage.set('auth', state);\n if (this.memoryStorage) this.memoryStorage.set('auth', state);\n const token = state.session ? state.session.token : null;\n await this.setToken(token);\n // try {\n // await this.app.reconnect();\n // } catch (err) {\n // console.error('AuthStore.applyPromise: this.app.reconnect', err); //eslint-disable-line\n // }\n }\n\n isAuth() {\n return this.store.isAuth();\n }\n getSession() {\n return this.store.getSession();\n }\n getUserId() {\n return this.store.getUserId();\n }\n\n async logout(redirect = true) {\n await this.store.logout();\n await this.saveStore();\n if (redirect) this.app.redirect('/');\n }\n\n async signup(...args) {\n const res = await this.store.signup(...args);\n await this.saveStore();\n return res;\n }\n\n async login(...args) {\n this.log.debug('login', ...args);\n const res = await this.store.login(...args);\n this.log.trace('login res', res);\n await this.saveStore();\n return res;\n }\n\n async updateSession(...args) {\n try {\n const res = await this.store.updateSession(...args);\n await this.saveStore();\n return res;\n } catch (err) {\n if (err.code === 'auth.userNotFound') {\n await this.logout();\n }\n throw err;\n }\n }\n\n confirm(values) {\n return this.app.api.fetch('/api/auth/permit/confirm', {\n method: 'POST',\n data: values,\n });\n }\n\n restorePassword({ email }) {\n return this.app.api.fetch('/api/auth/restorePassword', {\n method: 'POST',\n data: { email },\n });\n }\n\n setPassword({ permitId, code, password }) {\n return this.app.api.fetch('/api/auth/setPassword', {\n method: 'POST',\n data: { permitId, code, password },\n });\n }\n\n confirmEmail({ permitId, code }) {\n return this.app.api.fetch('/api/auth/confirmEmail', {\n method: 'POST',\n data: { permitId, code },\n });\n }\n\n setData(...args) {\n return this.store.setData(...args);\n }\n\n loginPassport(data) {\n return this.applyPromiseAndFetchProfile(this.app.api.authLoginPassport(data));\n }\n\n authPassport(provider) {\n if (typeof window !== 'undefined') window.location = `/api/module/auth/${provider}`;\n }\n}\n\n// export default ctx => ({\n// init() {\n// // this.components = require('./uapp/components').default(ctx);\n// // this.socials = require('./uapp/socials').default;// (ctx);\n// // this.models = require('./uapp/models').default(ctx);\n// this.stores = require('./uapp/stores').default(ctx);\n// // this.router = require('./uapp/router').default;\n// },\n// // getStores\n// });\n\nexport default AuthClientModule;\n"],"mappings":"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"}
\No newline at end of file