diff --git a/products/ASC.Files/Client/src/components/dialogs/ConnectDialog/index.js b/products/ASC.Files/Client/src/components/dialogs/ConnectDialog/index.js
index ccc399584e..d5f50ad3ff 100644
--- a/products/ASC.Files/Client/src/components/dialogs/ConnectDialog/index.js
+++ b/products/ASC.Files/Client/src/components/dialogs/ConnectDialog/index.js
@@ -86,7 +86,7 @@ const PureConnectDialogContainer = (props) => {
setSelectedNode,
providers,
} = props;
- const { corporate, title, link, provider_id, provider_key } = item;
+ const { corporate, title, link, token, provider_id, provider_key } = item;
const provider = providers.find(
(el) => el.provider_key === item.provider_key
@@ -98,6 +98,7 @@ const PureConnectDialogContainer = (props) => {
const [passwordValue, setPasswordValue] = useState("");
const [customerTitle, setCustomerTitleValue] = useState(folderTitle);
const [isCorporate, setMakeShared] = useState(!!corporate);
+ const [oAuthToken, setToken] = useState(token);
const onChangeUrl = (e) => setUrlValue(e.target.value);
const onChangeLogin = (e) => setLoginValue(e.target.value);
@@ -113,7 +114,7 @@ const PureConnectDialogContainer = (props) => {
].some((el) => el.trim().length === 0);
const onSave = () => {
- if (isEmptyField) return toastr.error(t("EmptyField"));
+ //if (isEmptyField) return toastr.error(t("EmptyField"));
onClose();
setIsLoading(true);
@@ -121,7 +122,7 @@ const PureConnectDialogContainer = (props) => {
null,
null,
null,
- null,
+ oAuthToken,
isCorporate,
customerTitle,
provider_key,
@@ -166,8 +167,8 @@ const PureConnectDialogContainer = (props) => {
const onReconnect = () => {
let authModal = window.open("", "Authorization", "height=600, width=1020");
- openConnectWindow(title, authModal).then(
- (modal) => getOAuthToken(modal) //.then((token) => setToken(token))
+ openConnectWindow(title, authModal).then((modal) =>
+ getOAuthToken(modal).then((token) => setToken(token))
);
};
diff --git a/products/ASC.Files/Client/src/store/files/actions.js b/products/ASC.Files/Client/src/store/files/actions.js
index 4bb1cdf308..5d4c09c544 100644
--- a/products/ASC.Files/Client/src/store/files/actions.js
+++ b/products/ASC.Files/Client/src/store/files/actions.js
@@ -1724,18 +1724,15 @@ const convertServiceName = (serviceName) => {
export function getOAuthToken(modal) {
return new Promise((resolve) => {
+ localStorage.removeItem("code");
const interval = setInterval(() => {
try {
- if (modal.document.documentElement.innerText) {
- const converted = JSON.parse(
- modal.document.documentElement.innerText
- );
+ const code = localStorage.getItem("code");
+
+ if (code) {
+ localStorage.removeItem("code");
clearInterval(interval);
- const token = converted.response;
- if (token) {
- modal.close();
- return resolve(token);
- }
+ resolve(code);
}
} catch {
return;
diff --git a/web/ASC.Web.Client/src/App.js b/web/ASC.Web.Client/src/App.js
index a9880831b7..4575e36c7d 100644
--- a/web/ASC.Web.Client/src/App.js
+++ b/web/ASC.Web.Client/src/App.js
@@ -22,6 +22,7 @@ const Confirm = lazy(() => import("./components/pages/Confirm"));
const Settings = lazy(() => import("./components/pages/Settings"));
const Wizard = lazy(() => import("./components/pages/Wizard"));
const Payments = lazy(() => import("./components/pages/Payments"));
+const ThirdPartyResponse = lazy(() => import("./components/pages/ThirdParty"));
const {
setIsLoaded,
getUser,
@@ -97,6 +98,10 @@ class App extends React.Component {
component={ComingSoon}
/>
+
diff --git a/web/ASC.Web.Client/src/components/pages/ThirdParty/index.js b/web/ASC.Web.Client/src/components/pages/ThirdParty/index.js
new file mode 100644
index 0000000000..9c6c6f1b26
--- /dev/null
+++ b/web/ASC.Web.Client/src/components/pages/ThirdParty/index.js
@@ -0,0 +1,30 @@
+import React from "react";
+import { withRouter } from "react-router";
+import { Box } from "asc-web-components";
+import { utils } from "asc-web-common";
+
+const { getObjectByLocation } = utils;
+
+class ThirdPartyResponse extends React.Component {
+ constructor(props) {
+ super(props);
+ const { provider } = props.match.params;
+ const urlParams = getObjectByLocation(window.location);
+
+ this.code = urlParams ? urlParams.code || null : null;
+ this.provider = provider;
+ }
+
+ async componentDidMount() {
+ localStorage.setItem("provider", this.provider);
+ localStorage.setItem("code", this.code);
+
+ setTimeout(window.close(), 1000);
+ }
+
+ render() {
+ return OK;
+ }
+}
+
+export default withRouter(ThirdPartyResponse);