Skip to content

Commit 90a8320

Browse files
committed
Missing popup_redirect update
1 parent 7124db2 commit 90a8320

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

packages-exp/auth-exp/src/platform_browser/popup_redirect.ts

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,7 @@ import { _getCurrentUrl } from '../core/util/location';
2828
import { _open, AuthPopup } from '../core/util/popup';
2929
import { ApiKey, AppName, Auth } from '../model/auth';
3030
import {
31-
AuthEventType,
32-
EventManager,
33-
GapiAuthEvent,
34-
GapiOutcome,
35-
PopupRedirectResolver
31+
AuthEventType, EventManager, GapiAuthEvent, GapiOutcome, PopupRedirectResolver
3632
} from '../model/popup_redirect';
3733
import { _openIframe } from './iframe/iframe';
3834

@@ -41,7 +37,7 @@ import { _openIframe } from './iframe/iframe';
4137
*/
4238
const WIDGET_URL = '__/auth/handler';
4339

44-
export class BrowserPopupRedirectResolver implements PopupRedirectResolver {
40+
class BrowserPopupRedirectResolver implements PopupRedirectResolver {
4541
private eventManager: EventManager | null = null;
4642
private initializationPromise: Promise<EventManager> | null = null;
4743

@@ -61,6 +57,16 @@ export class BrowserPopupRedirectResolver implements PopupRedirectResolver {
6157
return _open(auth.name, url, _generateEventId());
6258
}
6359

60+
async _openRedirect(
61+
auth: Auth,
62+
provider: externs.AuthProvider,
63+
authType: AuthEventType,
64+
eventId?: string
65+
): Promise<never> {
66+
window.location.href = getRedirectUrl(auth, provider, authType, eventId);
67+
return new Promise(() => {});
68+
}
69+
6470
_initialize(auth: Auth): Promise<EventManager> {
6571
if (this.eventManager) {
6672
return Promise.resolve(this.eventManager);
@@ -78,11 +84,12 @@ export class BrowserPopupRedirectResolver implements PopupRedirectResolver {
7884
const eventManager = new AuthEventManager(auth.name);
7985
iframe.register<GapiAuthEvent>(
8086
'authEvent',
81-
async (message: GapiAuthEvent) => {
82-
await eventManager.onEvent(message.authEvent);
87+
({authEvent}: GapiAuthEvent) => {
88+
const handled = eventManager.onEvent(authEvent);
8389

90+
console.log(handled ? 'Handled auth message' : 'Other-window message');
8491
// We always ACK with the iframe
85-
return { status: GapiOutcome.ACK };
92+
return { status: handled ? GapiOutcome.ACK : GapiOutcome.ERROR };
8693
},
8794
gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER
8895
);
@@ -92,6 +99,8 @@ export class BrowserPopupRedirectResolver implements PopupRedirectResolver {
9299
}
93100
}
94101

102+
export const browserPopupRedirectResolver: externs.PopupRedirectResolver = BrowserPopupRedirectResolver;
103+
95104
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
96105
type WidgetParams = {
97106
apiKey: ApiKey;
@@ -130,7 +139,7 @@ function getRedirectUrl(
130139
if (!isEmpty(provider.getCustomParameters())) {
131140
params.customParameters = JSON.stringify(provider.getCustomParameters());
132141
}
133-
const scopes = provider.getScopes();
142+
const scopes = provider.getScopes().filter(scope => scope !== '');
134143
if (scopes.length > 0) {
135144
params.scopes = scopes.join(',');
136145
}
@@ -147,6 +156,12 @@ function getRedirectUrl(
147156
params.tid = auth.tenantId;
148157
}
149158

159+
for (const key of Object.keys(params)) {
160+
if ((params as Record<string, unknown>)[key] === undefined) {
161+
delete (params as Record<string, unknown>)[key];
162+
}
163+
}
164+
150165
// TODO: maybe set eid as endipointId
151166
// TODO: maybe set fw as Frameworks.join(",")
152167

@@ -156,5 +171,7 @@ function getRedirectUrl(
156171
).slice(1)}`
157172
);
158173

174+
console.log(url);
175+
159176
return url.toString();
160177
}

0 commit comments

Comments
 (0)