fix: OAuth authorization issue (#12183)

This commit is contained in:
haojin111 2022-03-28 11:33:32 +08:00 committed by GitHub
parent bf1d9efc2a
commit e6466e1758
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 1 deletions

View File

@ -21,6 +21,8 @@ import _, { get } from "lodash";
import { Title } from "./components/StyledComponents";
import {
createMessage,
OAUTH_AUTHORIZATION_APPSMITH_ERROR,
OAUTH_AUTHORIZATION_FAILED,
RECONNECT_DATASOURCE_SUCCESS_MESSAGE1,
RECONNECT_DATASOURCE_SUCCESS_MESSAGE2,
RECONNECT_MISSING_DATASOURCE_CREDENTIALS,
@ -54,6 +56,8 @@ import { useQuery } from "../utils";
import ListItemWrapper from "./components/DatasourceListItem";
import { getDefaultPageId } from "sagas/ApplicationSagas";
import { ReduxActionTypes } from "constants/ReduxActionConstants";
import { Toaster, Variant } from "components/ads";
import { getOAuthAccessToken } from "actions/datasourceActions";
import { builderURL } from "RouteBuilder";
const Container = styled.div`
@ -227,6 +231,11 @@ const DBFormWrapper = styled.div`
}
`;
enum AuthorizationStatus {
SUCCESS = "success",
APPSMITH_ERROR = "appsmith_error",
}
function TooltipContent() {
return (
<TooltipWrapper>
@ -279,6 +288,30 @@ function ReconnectDatasourceModal() {
const [appId, setAppId] = useState<string | null>(queryAppId);
const [appURL, setAppURL] = useState("");
const [datasouce, setDatasource] = useState<Datasource | null>(null);
const [isImport, setIsImport] = useState(queryIsImport);
// when redirecting from oauth, processing the status
if (isImport) {
setIsImport(false);
const status = queryParams.get("response_status");
const display_message = queryParams.get("display_message");
const variant = Variant.danger;
if (status !== AuthorizationStatus.SUCCESS) {
const message =
status === AuthorizationStatus.APPSMITH_ERROR
? OAUTH_AUTHORIZATION_APPSMITH_ERROR
: OAUTH_AUTHORIZATION_FAILED;
Toaster.show({ text: display_message || message, variant });
} else if (queryDatasourceId) {
dispatch(getOAuthAccessToken(queryDatasourceId));
}
AnalyticsUtil.logEvent("DATASOURCE_AUTH_COMPLETE", {
queryAppId,
queryDatasourceId,
queryPageId,
});
}
// should open reconnect datasource modal
useEffect(() => {

View File

@ -130,7 +130,11 @@ function OAuth({
const search = new URLSearchParams(location.search);
const status = search.get("response_status");
if (status) {
const queryIsImport = search.get("importForGit");
const queryDatasourceId = search.get("datasourceId");
const shouldNotify =
!queryIsImport || (queryIsImport && queryDatasourceId === datasourceId);
if (status && shouldNotify) {
const display_message = search.get("display_message");
const variant = Variant.danger;