fix(auth): swap popup for new tab (#648)

This commit is contained in:
Denys Konovalov 2023-03-14 13:20:48 +01:00 committed by GitHub
parent 2ecb1cdcba
commit 4c37beebb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,29 +18,6 @@ export class NetlifyError {
} }
} }
const PROVIDERS = {
github: {
width: 960,
height: 600,
},
gitlab: {
width: 960,
height: 600,
},
gitea: {
width: 960,
height: 600,
},
bitbucket: {
width: 960,
height: 500,
},
email: {
width: 500,
height: 400,
},
} as const;
class Authenticator { class Authenticator {
private site_id: string | null; private site_id: string | null;
private base_url: string; private base_url: string;
@ -55,7 +32,7 @@ class Authenticator {
} }
handshakeCallback( handshakeCallback(
options: { provider?: keyof typeof PROVIDERS }, options: { provider?: string | undefined },
cb: (error: Error | NetlifyError | null, data?: User) => void, cb: (error: Error | NetlifyError | null, data?: User) => void,
) { ) {
const fn = (e: { data: string; origin: string }) => { const fn = (e: { data: string; origin: string }) => {
@ -69,7 +46,7 @@ class Authenticator {
} }
authorizeCallback( authorizeCallback(
options: { provider?: keyof typeof PROVIDERS }, options: { provider?: string | undefined },
cb: (error: Error | NetlifyError | null, data?: User) => void, cb: (error: Error | NetlifyError | null, data?: User) => void,
) { ) {
const fn = (e: { data: string; origin: string }) => { const fn = (e: { data: string; origin: string }) => {
@ -109,7 +86,7 @@ class Authenticator {
authenticate( authenticate(
options: { options: {
provider?: keyof typeof PROVIDERS; provider?: string | undefined;
scope?: string; scope?: string;
login?: boolean; login?: boolean;
beta_invite?: string; beta_invite?: string;
@ -137,9 +114,6 @@ class Authenticator {
); );
} }
const conf = PROVIDERS[provider] || PROVIDERS.github;
const left = screen.width / 2 - conf.width / 2;
const top = screen.height / 2 - conf.height / 2;
window.addEventListener('message', this.handshakeCallback(options, cb), false); window.addEventListener('message', this.handshakeCallback(options, cb), false);
let url = `${this.base_url}/${this.auth_endpoint}?provider=${options.provider}&site_id=${siteID}`; let url = `${this.base_url}/${this.auth_endpoint}?provider=${options.provider}&site_id=${siteID}`;
if (options.scope) { if (options.scope) {
@ -154,17 +128,13 @@ class Authenticator {
if (options.invite_code) { if (options.invite_code) {
url += '&invite_code=' + options.invite_code; url += '&invite_code=' + options.invite_code;
} }
this.authWindow = window.open( this.authWindow = window.open(url, 'Netlify Authorization');
url,
'Netlify Authorization',
`width=${conf.width}, height=${conf.height}, top=${top}, left=${left}`,
);
this.authWindow?.focus(); this.authWindow?.focus();
} }
refresh( refresh(
options: { options: {
provider: keyof typeof PROVIDERS; provider: string;
refresh_token?: string; refresh_token?: string;
}, },
cb?: (error: Error | NetlifyError | null, data?: User) => void, cb?: (error: Error | NetlifyError | null, data?: User) => void,