import { TwoFactorProviderType } from "../../../enums/twoFactorProviderType"; import { DeviceRequest } from "../deviceRequest"; export interface TokenRequestTwoFactor { provider: TwoFactorProviderType; token: string; remember: boolean; } export abstract class TokenRequest { protected device?: DeviceRequest; constructor(protected twoFactor: TokenRequestTwoFactor, device?: DeviceRequest) { this.device = device != null ? device : null; } alterIdentityTokenHeaders(headers: Headers) { // Implemented in subclass if required } setTwoFactor(twoFactor: TokenRequestTwoFactor) { this.twoFactor = twoFactor; } protected toIdentityToken(clientId: string) { const obj: any = { scope: "api offline_access", client_id: clientId, }; if (this.device) { obj.deviceType = this.device.type; obj.deviceIdentifier = this.device.identifier; obj.deviceName = this.device.name; // no push tokens for browser apps yet // obj.devicePushToken = this.device.pushToken; } if (this.twoFactor.token && this.twoFactor.provider != null) { obj.twoFactorToken = this.twoFactor.token; obj.twoFactorProvider = this.twoFactor.provider; obj.twoFactorRemember = this.twoFactor.remember ? "1" : "0"; } return obj; } }