Web: Files: Added ThirdParty response page, fixed oAuth connect/reconnect
This commit is contained in:
parent
2b2e7ba8bf
commit
24127929aa
@ -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))
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
30
web/ASC.Web.Client/src/components/pages/ThirdParty/index.js
vendored
Normal file
30
web/ASC.Web.Client/src/components/pages/ThirdParty/index.js
vendored
Normal 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);
|
Loading…
Reference in New Issue
Block a user