fix and update
This commit is contained in:
35
apps/frontend/lib/oauth-popup-bridge.ts
Normal file
35
apps/frontend/lib/oauth-popup-bridge.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
export const ONE_TAP_MESSAGE_TYPE = 'lendry-sso-onetap';
|
||||
|
||||
export function parsePopupOAuthParams(searchParams: URLSearchParams) {
|
||||
const display = searchParams.get('display');
|
||||
const popupOrigin = searchParams.get('popup_origin');
|
||||
if (display !== 'popup' || !popupOrigin?.trim()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return { popupOrigin: new URL(popupOrigin.trim()).origin };
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export function postOneTapResult(popupOrigin: string, payload: Record<string, unknown>) {
|
||||
if (!window.opener) {
|
||||
return false;
|
||||
}
|
||||
|
||||
window.opener.postMessage({ type: ONE_TAP_MESSAGE_TYPE, ...payload }, popupOrigin);
|
||||
window.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
export function parseAuthorizationRedirect(redirectUrl: string) {
|
||||
const url = new URL(redirectUrl);
|
||||
return {
|
||||
code: url.searchParams.get('code'),
|
||||
state: url.searchParams.get('state'),
|
||||
error: url.searchParams.get('error'),
|
||||
errorDescription: url.searchParams.get('error_description')
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user