feat: support popup mode in OAuth (#1668)

* feat: support `popup` mode in OAuth

* feat: sendMessage when popup window closed

* fix: fix param name error
This commit is contained in:
imp2002
2023-03-22 00:15:17 +08:00
committed by GitHub
parent da7336a9a4
commit f191488338

View File

@ -204,6 +204,13 @@ class LoginPage extends React.Component {
}
}
sendPopupData(message, redirectUri) {
const params = new URLSearchParams(this.props.location.search);
if (params.get("popup") === "1") {
window.opener.postMessage(message, redirectUri);
}
}
postCodeLoginAction(res) {
const application = this.getApplicationObj();
const ths = this;
@ -243,6 +250,7 @@ class LoginPage extends React.Component {
}
} else {
Setting.goToLink(`${oAuthParams.redirectUri}${concatChar}code=${code}&state=${oAuthParams.state}`);
this.sendPopupData({type: "loginSuccess", data: {code: code, state: oAuthParams.state}}, oAuthParams.redirectUri);
}
}
}
@ -640,6 +648,12 @@ class LoginPage extends React.Component {
this.onFinish(values);
}
if (params.get("popup") === "1") {
window.addEventListener("beforeunload", () => {
this.sendPopupData({type: "windowClosed"}, params.get("redirect_uri"));
});
}
if (application.enableAutoSignin) {
const values = {};
values["application"] = application.name;