diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js
index 7f472e1c..791f6b4a 100644
--- a/web/src/ProviderEditPage.js
+++ b/web/src/ProviderEditPage.js
@@ -467,6 +467,39 @@ class ProviderEditPage extends React.Component {
this.updateProviderField("issuerUrl", issuerUrl);
}
+ fetchSamlMetadata() {
+ this.setState({
+ metadataLoading: true,
+ });
+ fetch(this.state.requestUrl, {
+ method: "GET",
+ }).then(res => {
+ if (!res.ok) {
+ return Promise.reject("error");
+ }
+ return res.text();
+ }).then(text => {
+ this.updateProviderField("metadata", text);
+ this.parseSamlMetadata();
+ Setting.showMessage("success", i18next.t("general:Successfully added"));
+ }).catch(err => {
+ Setting.showMessage("error", err.message);
+ }).finally(() => {
+ this.setState({
+ metadataLoading: false,
+ });
+ });
+ }
+
+ parseSamlMetadata() {
+ try {
+ this.loadSamlConfiguration();
+ Setting.showMessage("success", i18next.t("provider:Parse metadata successfully"));
+ } catch (err) {
+ Setting.showMessage("error", i18next.t("provider:Can not parse metadata"));
+ }
+ }
+
renderProvider() {
return (
+
+
+ {Setting.getLabel(i18next.t("provider:Metadata url"), i18next.t("provider:Metadata url - Tooltip"))} :
+
+
+ {
+ this.setState({
+ requestUrl: e.target.value,
+ });
+ }} />
+
+
+
+
+
{Setting.getLabel(i18next.t("provider:Metadata"), i18next.t("provider:Metadata - Tooltip"))} :
@@ -1255,14 +1303,7 @@ class ProviderEditPage extends React.Component {
-