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() {