(url: string, dataObject: AuthRequestPayload, popupTimeout = 1000 * 10)
| 531 | } |
| 532 | |
| 533 | private async authHandler(url: string, dataObject: AuthRequestPayload, popupTimeout = 1000 * 10): Promise<AuthFlowResult | null> { |
| 534 | const loginId = StorageManager.generateRandomSessionKey(); |
| 535 | const recordId = generateRecordId(); |
| 536 | await this.storeAuthPayload(loginId, dataObject); |
| 537 | const configParams: BaseLoginParams = { |
| 538 | loginId, |
| 539 | recordId, |
| 540 | sessionNamespace: this.options.sessionNamespace, |
| 541 | storageServerUrl: this.options.storageServerUrl, |
| 542 | loginSource: dataObject.params.loginSource, |
| 543 | }; |
| 544 | |
| 545 | if (this.options.uxMode === UX_MODE.REDIRECT) { |
| 546 | const loginUrl = constructURL({ |
| 547 | baseURL: url, |
| 548 | hash: { b64Params: jsonToBase64(configParams) }, |
| 549 | }); |
| 550 | window.location.href = loginUrl; |
| 551 | return null; |
| 552 | } |
| 553 | |
| 554 | const loginUrl = constructURL({ |
| 555 | baseURL: url, |
| 556 | hash: { b64Params: jsonToBase64(configParams) }, |
| 557 | }); |
| 558 | const currentWindow = new PopupHandler({ |
| 559 | url: loginUrl, |
| 560 | timeout: popupTimeout, |
| 561 | serverUrl: this.options.storageServerUrl, |
| 562 | socketUrl: this.options.sessionSocketUrl, |
| 563 | }); |
| 564 | |
| 565 | return new Promise((resolve, reject) => { |
| 566 | currentWindow.on("close", () => { |
| 567 | reject(LoginError.popupClosed()); |
| 568 | }); |
| 569 | |
| 570 | currentWindow.listenOnChannel(loginId).then(resolve).catch(reject); |
| 571 | |
| 572 | try { |
| 573 | currentWindow.open(); |
| 574 | } catch (error) { |
| 575 | reject(error); |
| 576 | } |
| 577 | }); |
| 578 | } |
| 579 | } |
no test coverage detected