From 8d1f4581bcda3ce721c24c1eeaf181e687064c47 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 8 Nov 2024 05:06:11 +0000 Subject: [PATCH 1/2] Added role checks in data source Signed-off-by: Ubuntu --- .../ui/react/src/common/client.ts | 5 +++ .../ui/react/src/common/constant.ts | 2 + .../components/Conversation/DataSource.tsx | 37 ++++++++++--------- ProductivitySuite/ui/react/src/keycloack.ts | 6 +++ 4 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 ProductivitySuite/ui/react/src/common/constant.ts diff --git a/ProductivitySuite/ui/react/src/common/client.ts b/ProductivitySuite/ui/react/src/common/client.ts index 7512f73e33..5d7de75af6 100644 --- a/ProductivitySuite/ui/react/src/common/client.ts +++ b/ProductivitySuite/ui/react/src/common/client.ts @@ -2,7 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 import axios from "axios"; +import keycloak from "../keycloack"; //add iterceptors to add any request headers +axios.interceptors.request.use(async (config) => { + config.headers['Authorization'] = `Bearer ${keycloak.token}`; + return config; +}); export default axios; diff --git a/ProductivitySuite/ui/react/src/common/constant.ts b/ProductivitySuite/ui/react/src/common/constant.ts new file mode 100644 index 0000000000..efdba6ad13 --- /dev/null +++ b/ProductivitySuite/ui/react/src/common/constant.ts @@ -0,0 +1,2 @@ +export const ADMIN="admin" +export const USER="user" \ No newline at end of file diff --git a/ProductivitySuite/ui/react/src/components/Conversation/DataSource.tsx b/ProductivitySuite/ui/react/src/components/Conversation/DataSource.tsx index cc273aa83c..cd6d2c3897 100644 --- a/ProductivitySuite/ui/react/src/components/Conversation/DataSource.tsx +++ b/ProductivitySuite/ui/react/src/components/Conversation/DataSource.tsx @@ -7,6 +7,8 @@ import { SyntheticEvent, useEffect, useState } from 'react' import { useAppDispatch, useAppSelector } from '../../redux/store' import { conversationSelector, deleteInDataSource, getAllFilesInDataSource, submitDataSourceURL, uploadFile } from '../../redux/Conversation/ConversationSlice' import styleClasses from './dataSource.module.scss' +import keycloak from '../../keycloack' +import { ADMIN } from '../../common/constant' @@ -16,7 +18,7 @@ export default function DataSource() { const [url, setURL] = useState(""); const dispatch = useAppDispatch() const { filesInDataSource } = useAppSelector(conversationSelector) - + const handleFileUpload = () => { if (file) dispatch(uploadFile({ file })) @@ -32,12 +34,12 @@ export default function DataSource() { } const handleDelete = (file: string) => { - dispatch(deleteInDataSource({file})) + dispatch(deleteInDataSource({ file })) } - useEffect(()=>{ - dispatch(getAllFilesInDataSource({knowledgeBaseId:"default"})) - },[]) + useEffect(() => { + dispatch(getAllFilesInDataSource({ knowledgeBaseId: "default" })) + }, []) return (
@@ -50,25 +52,25 @@ export default function DataSource() { - + - +
{isFile ? ( <> - - + + ) : ( <> - - + + )}
@@ -77,16 +79,17 @@ export default function DataSource() { Files - {filesInDataSource.map(file=> { + {filesInDataSource.map(file => { return ( -
+
{file.name} - handleDelete(file.name)} size={32} variant="default"> + handleDelete(file.name)} disabled={!keycloak.hasRealmRole(ADMIN)} size={32} variant="default"> - +
- )})} + ) + })}
) diff --git a/ProductivitySuite/ui/react/src/keycloack.ts b/ProductivitySuite/ui/react/src/keycloack.ts index 26ba47511c..83c683b84d 100644 --- a/ProductivitySuite/ui/react/src/keycloack.ts +++ b/ProductivitySuite/ui/react/src/keycloack.ts @@ -9,4 +9,10 @@ const keycloak = new Keycloak({ clientId: "productivitysuite", }); +//auto refresh access token when expired +keycloak.onTokenExpired = async () => { + console.log('token expired', keycloak.token); + await keycloak.updateToken(30) +} + export default keycloak; From 2739998bd6e3c49137434860fdd48cf4c8685e23 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 05:08:30 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- ProductivitySuite/ui/react/src/common/client.ts | 4 ++-- ProductivitySuite/ui/react/src/common/constant.ts | 7 +++++-- ProductivitySuite/ui/react/src/keycloack.ts | 6 +++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ProductivitySuite/ui/react/src/common/client.ts b/ProductivitySuite/ui/react/src/common/client.ts index 5d7de75af6..cdddd0340d 100644 --- a/ProductivitySuite/ui/react/src/common/client.ts +++ b/ProductivitySuite/ui/react/src/common/client.ts @@ -6,8 +6,8 @@ import keycloak from "../keycloack"; //add iterceptors to add any request headers axios.interceptors.request.use(async (config) => { - config.headers['Authorization'] = `Bearer ${keycloak.token}`; - return config; + config.headers["Authorization"] = `Bearer ${keycloak.token}`; + return config; }); export default axios; diff --git a/ProductivitySuite/ui/react/src/common/constant.ts b/ProductivitySuite/ui/react/src/common/constant.ts index efdba6ad13..f9e0f301d3 100644 --- a/ProductivitySuite/ui/react/src/common/constant.ts +++ b/ProductivitySuite/ui/react/src/common/constant.ts @@ -1,2 +1,5 @@ -export const ADMIN="admin" -export const USER="user" \ No newline at end of file +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +export const ADMIN = "admin"; +export const USER = "user"; diff --git a/ProductivitySuite/ui/react/src/keycloack.ts b/ProductivitySuite/ui/react/src/keycloack.ts index 83c683b84d..0ccb5f9351 100644 --- a/ProductivitySuite/ui/react/src/keycloack.ts +++ b/ProductivitySuite/ui/react/src/keycloack.ts @@ -11,8 +11,8 @@ const keycloak = new Keycloak({ //auto refresh access token when expired keycloak.onTokenExpired = async () => { - console.log('token expired', keycloak.token); - await keycloak.updateToken(30) -} + console.log("token expired", keycloak.token); + await keycloak.updateToken(30); +}; export default keycloak;