Web: Files: Added ThirdParty response page, fixed oAuth connect/reconnect

This commit is contained in:
Ilya Oleshko 2021-01-15 11:52:29 +03:00
parent 2b2e7ba8bf
commit 24127929aa
4 changed files with 47 additions and 14 deletions

View File

@ -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))
);
};

View File

@ -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;

View File

@ -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}
/>
<PrivateRoute path="/payments" component={Payments} />
<PrivateRoute
path={`/thirdparty/:provider`}
component={ThirdPartyResponse}
/>
<PrivateRoute component={Error404} />
</Switch>
</Suspense>

View File

@ -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 <Box>OK</Box>;
}
}
export default withRouter(ThirdPartyResponse);