Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 3x 3x 2x 3x 2x 3x 3x 6x 6x 4x 4x 3x 1x 2x 2x | import { HttpModule } from '@nestjs/axios'; import { Abstract, DynamicModule, ForwardReference, HttpService, Provider, Type } from '@nestjs/common'; import { VendurePlugin, PluginCommonModule } from '@vendure/core' import { DEFAULT_PLUGIN_OPTIONS, THIRD_PARTY_OPTIONS_PROVIDER, LIST_OF_STRATEGY } from './constants' import { CrossStrategiesChecker } from './cross-strategies-checker.service'; import { FacebookAuthService } from './facebook-auth.service'; import { FacebookAuthStrategy } from './facebook-auth.strategy'; import { GoogleAuthService } from './google-auth.service'; import { GoogleAuthStrategy } from './google-auth.strategy'; import { IThirdPartyAuthPluginOptions } from './interfaces' @VendurePlugin({ imports: [PluginCommonModule, HttpModule], providers: [ { provide: THIRD_PARTY_OPTIONS_PROVIDER, useFactory: () =>{ return ThirdPartyAuthPlugin.options } }, { provide: GoogleAuthService, inject: [THIRD_PARTY_OPTIONS_PROVIDER], useFactory: async (options: IThirdPartyAuthPluginOptions) => { if (!options.google) return null return new GoogleAuthService(options as Required<IThirdPartyAuthPluginOptions>) } }, { provide: FacebookAuthService, inject: [THIRD_PARTY_OPTIONS_PROVIDER, HttpService], useFactory: async (options: IThirdPartyAuthPluginOptions, httpService) => { if (!options.facebook) return null return new FacebookAuthService( httpService, options as Required<IThirdPartyAuthPluginOptions> ) } }, CrossStrategiesChecker ], configuration: (conf) => { const options = ThirdPartyAuthPlugin.options for (let name of LIST_OF_STRATEGY) { const optionDetail = options[name] if (!optionDetail) { continue } const strategy = name === 'google' ? new GoogleAuthStrategy() : new FacebookAuthStrategy() conf.authOptions.shopAuthenticationStrategy.push(strategy) } return conf } }) export class ThirdPartyAuthPlugin { static options: IThirdPartyAuthPluginOptions static init(options: Partial<IThirdPartyAuthPluginOptions>) { ThirdPartyAuthPlugin.options = { ...DEFAULT_PLUGIN_OPTIONS, ...options } return ThirdPartyAuthPlugin } } |