UNPKG

8.66 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/strategies/BaseStrategy.js"],"names":["BaseStrategy","params","config","Strategy","type","Object","assign","path","options","origin","app","url","id","callbackURL","callbackUrl","provider","method","console","log","getCallbackUrl","scope","args","accessToken","refreshToken","profile","PassportModel","models","providerId","getProviderId","findOne","passport","createPassport","isNew","updatePassport","save","redirect","getSuccessRedirect","getPassportStrategyConfig","conf","clientID","clientId","strategy","args1","reverse","done","args2","passportStrategyCallback","then","data","err","name","token","getProfile","warn","generateToken"],"mappings":"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","sourcesContent":["import pick from 'lodash/pick';\n\nexport class BaseStrategy {\n constructor(params) {\n Object.assign(this, params);\n }\n\n config = {};\n Strategy = null;\n type = null;\n\n url(path, options = {}) {\n const { origin } = options;\n if (origin) {\n return origin + path;\n }\n return this.app.url(path);\n }\n\n getInfo() {\n return {\n type: this.type,\n ...pick(this.config, ['clientId', 'clientID']),\n };\n }\n\n getProviderId({ id } = {}) {\n return id;\n }\n\n getCallbackUrl({ origin } = {}) {\n return (\n this.config.callbackURL || this.config.callbackUrl || this.url(`/api/auth/${this.provider}/callback`, { origin })\n );\n }\n getPassportAuthenticateParams({ method = 'auth', origin } = {}) {\n console.log('getPassportAuthenticateParams callbackURL', this.getCallbackUrl({ origin }));\n if (method === 'auth') {\n return { callbackURL: this.getCallbackUrl({ origin }) };\n }\n return {};\n }\n\n Strategy = null;\n getPassportStrategyConfig() {\n return {\n ...this.config,\n scope: this.config.scope || [],\n callbackURL: this.getCallbackUrl(),\n };\n }\n\n async passportStrategyCallback(...args) {\n const [accessToken, refreshToken, profile] = args;\n const { PassportModel } = this.app.models;\n const providerId = this.getProviderId(profile);\n let passport = await PassportModel.findOne({\n provider: this.provider,\n providerId,\n });\n const params = {\n accessToken,\n refreshToken,\n profile,\n providerId,\n };\n if (!passport) {\n passport = await this.createPassport(params);\n params.isNew = true;\n }\n params.passport = passport;\n await this.updatePassport(params);\n await passport.save();\n params.redirect = this.getSuccessRedirect(params);\n return params;\n }\n\n // Using:\n // passport.use(strategy.getPassportStrategy());\n getPassportStrategy() {\n const config = this.getPassportStrategyConfig();\n const conf = {\n ...config,\n clientID: config.clientID || config.clientId,\n };\n\n const strategy = new this.Strategy(conf, (...args1) => {\n const [done, ...args2] = args1.reverse();\n const args = args2.reverse();\n this.passportStrategyCallback(...args)\n .then((data) => done(null, data))\n .catch((err) => done(err));\n });\n\n strategy.name = this.provider;\n return strategy;\n }\n\n async createPassport({ token, accessToken, refreshToken, providerId }) {\n const { PassportModel } = this.app.models;\n return new PassportModel({\n type: this.type,\n provider: this.provider,\n providerId,\n token: token || accessToken,\n refreshToken,\n });\n }\n\n async updatePassport({ accessToken, refreshToken, passport }) {\n /* eslint-disable no-param-reassign */\n if (accessToken) passport.token = accessToken;\n if (refreshToken) passport.refreshToken = refreshToken;\n try {\n passport.profile = await this.getProfile(passport);\n } catch (err) {\n this.app.log.warn('NOT OVERRIDED: Strategy.getProfile err', err);\n }\n /* eslint-enable no-param-reassign */\n }\n\n async updateTokens() {\n // passport\n this.app.log.warn('NOT OVERRIDED: Strategy.updateTokens');\n // return passport;\n }\n\n async getProfile() {\n // passport\n return {};\n }\n\n getSuccessRedirect(passport) {\n return this.url(`/auth/passport?p=${passport.generateToken()}`);\n }\n}\n\nexport default BaseStrategy;\n"],"file":"BaseStrategy.js"}
\No newline at end of file