From 00c46f6c7cfc98ee9ddc823e317f8fa879de4e53 Mon Sep 17 00:00:00 2001
From: mr-chenguang lcgash
Date: Fri, 14 Feb 2025 03:10:16 +0000
Subject: [PATCH 1/3] feat(dataconnectors): support confluence personal access
token
---
.../utils/extensions/Confluence/index.js | 8 +-
.../Connectors/Confluence/index.jsx | 166 ++++++++++++------
frontend/src/models/dataConnector.js | 2 +
3 files changed, 118 insertions(+), 58 deletions(-)
diff --git a/collector/utils/extensions/Confluence/index.js b/collector/utils/extensions/Confluence/index.js
index e0699222a99..4d17d56befe 100644
--- a/collector/utils/extensions/Confluence/index.js
+++ b/collector/utils/extensions/Confluence/index.js
@@ -19,18 +19,19 @@ async function loadConfluence(
username = null,
accessToken = null,
cloud = true,
+ personalAccessToken = null,
},
response
) {
- if (!baseUrl || !spaceKey || !username || !accessToken) {
+ if (!personalAccessToken && (!username || !accessToken)) {
return {
success: false,
reason:
- "You need either a username and access token, or a personal access token (PAT), to use the Confluence connector.",
+ "You need either a personal access token (PAT), or a username and access token to use the Confluence connector.",
};
}
- if (!validBaseUrl(baseUrl)) {
+ if (!baseUrl || !validBaseUrl(baseUrl)) {
return {
success: false,
reason: "Provided base URL is not a valid URL.",
@@ -52,6 +53,7 @@ async function loadConfluence(
username,
accessToken,
cloud,
+ personalAccessToken,
});
const { docs, error } = await loader
diff --git a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
index 6204442012b..6b1e21e9fc5 100644
--- a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
+++ b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
@@ -6,6 +6,11 @@ import { Tooltip } from "react-tooltip";
export default function ConfluenceOptions() {
const [loading, setLoading] = useState(false);
+ const [accessType, setAccessType] = useState("username");
+
+ const changeAccessType = (value) => {
+ setAccessType(value);
+ };
const handleSubmit = async (e) => {
e.preventDefault();
@@ -27,6 +32,7 @@ export default function ConfluenceOptions() {
username: form.get("username"),
accessToken: form.get("accessToken"),
cloud: form.get("isCloud") === "true",
+ personalAccessToken: form.get("personalAccessToken"),
});
if (!!error) {
@@ -122,70 +128,120 @@ export default function ConfluenceOptions() {
- Your Confluence username.
+ Your Confluence authentication type, eg: username and access
+ token / personal access token.
-
+
-
-
-
+ )}
diff --git a/frontend/src/models/dataConnector.js b/frontend/src/models/dataConnector.js
index 30c17fb12ce..b35b5ff90a9 100644
--- a/frontend/src/models/dataConnector.js
+++ b/frontend/src/models/dataConnector.js
@@ -137,6 +137,7 @@ const DataConnector = {
username,
accessToken,
cloud,
+ personalAccessToken,
}) {
return await fetch(`${API_BASE}/ext/confluence`, {
method: "POST",
@@ -147,6 +148,7 @@ const DataConnector = {
username,
accessToken,
cloud,
+ personalAccessToken,
}),
})
.then((res) => res.json())
From 51db30cc9249d8e1436d9f596d2b9ca6d0b0e582 Mon Sep 17 00:00:00 2001
From: mr-chenguang lcgash
Date: Fri, 14 Feb 2025 06:50:39 +0000
Subject: [PATCH 2/3] fix: change select option
---
.../Connectors/Confluence/index.jsx | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
index 6b1e21e9fc5..224cd81afa7 100644
--- a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
+++ b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
@@ -141,10 +141,19 @@ export default function ConfluenceOptions() {
defaultValue={accessType}
onChange={(e) => changeAccessType(e.target.value)}
>
- {["username", "personalToken"].map((type) => {
+ {[
+ {
+ name: "Username and Access Token",
+ value: "username",
+ },
+ {
+ name: "Personal Access Token",
+ value: "personalToken",
+ },
+ ].map((type) => {
return (
-
);
})}
From 32bd15d16f00c84816c1251959f82df0fae47ed4 Mon Sep 17 00:00:00 2001
From: timothycarambat
Date: Fri, 14 Feb 2025 12:10:42 -0800
Subject: [PATCH 3/3] linting change name on accesstype field
---
.../DataConnectors/Connectors/Confluence/index.jsx | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
index 224cd81afa7..5f63812c869 100644
--- a/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
+++ b/frontend/src/components/Modals/ManageWorkspace/DataConnectors/Connectors/Confluence/index.jsx
@@ -8,10 +8,6 @@ export default function ConfluenceOptions() {
const [loading, setLoading] = useState(false);
const [accessType, setAccessType] = useState("username");
- const changeAccessType = (value) => {
- setAccessType(value);
- };
-
const handleSubmit = async (e) => {
e.preventDefault();
const form = new FormData(e.target);
@@ -136,12 +132,12 @@ export default function ConfluenceOptions() {