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 | 1x 3x 3x 6x 6x 17x 12x 12x 4x | import { Inject, Injectable } from "@nestjs/common";
import { AuthenticationStrategy, ConfigService, ExternalAuthenticationService, RequestContext } from "@vendure/core";
import { UserExistedInAnotherStrategyError } from "./interfaces";
@Injectable()
export class CrossStrategiesChecker {
constructor(
@Inject(ExternalAuthenticationService) private externalAuthService: ExternalAuthenticationService,
@Inject(ConfigService) private configService: ConfigService
) {}
async check(ctx: RequestContext, email: string, againstStrategy: string, forAdmin: boolean = false) {
const strategies = forAdmin
? this.configService.authOptions.adminAuthenticationStrategy
: this.configService.authOptions.shopAuthenticationStrategy
for (let strategy of strategies) {
if (strategy.name === againstStrategy) { continue }
const user = forAdmin
? await this.externalAuthService.findAdministratorUser(ctx, strategy.name, email)
: await this.externalAuthService.findCustomerUser(ctx, strategy.name, email)
if (user) { throw new UserExistedInAnotherStrategyError(strategy.name) }
}
return true
}
} |