diff --git a/conf/nginx.conf b/conf/nginx.conf index d7ad877..6e717ef 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -5,4 +5,5 @@ server { index index.html index.htm; try_files $uri $uri/ /index.html; } + add_header Content-Security-Policy "default-src 'self';" always; } \ No newline at end of file diff --git a/pmp-frontend-app/package-lock.json b/pmp-frontend-app/package-lock.json index 61ef4b2..c2c11bc 100644 --- a/pmp-frontend-app/package-lock.json +++ b/pmp-frontend-app/package-lock.json @@ -16,6 +16,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-google-recaptcha": "^3.1.0", + "react-iframe": "^1.8.5", "react-markdown": "^9.0.1", "react-router-dom": "^6.22.3", "remark-gfm": "^4.0.0" @@ -4769,6 +4770,17 @@ "react": ">=16.4.1" } }, + "node_modules/react-iframe": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/react-iframe/-/react-iframe-1.8.5.tgz", + "integrity": "sha512-F4cQJGs3ydaG6fJWfuz9yLwOU0Trzl6kttXuUG+vYwosH8enOOFxZWEDQCSbNVO8ayjfYZeqLxEvdvcsSy4GvA==", + "dependencies": { + "object-assign": "^4.1.1" + }, + "peerDependencies": { + "react": ">=16.x.x" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", diff --git a/pmp-frontend-app/package.json b/pmp-frontend-app/package.json index 99a5c68..9b894c2 100644 --- a/pmp-frontend-app/package.json +++ b/pmp-frontend-app/package.json @@ -18,6 +18,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-google-recaptcha": "^3.1.0", + "react-iframe": "^1.8.5", "react-markdown": "^9.0.1", "react-router-dom": "^6.22.3", "remark-gfm": "^4.0.0" diff --git a/pmp-frontend-app/src/components/Routes.tsx b/pmp-frontend-app/src/components/Routes.tsx index f3610f3..b6a96b5 100644 --- a/pmp-frontend-app/src/components/Routes.tsx +++ b/pmp-frontend-app/src/components/Routes.tsx @@ -13,6 +13,7 @@ import AboutFAQPage from '../pages/AboutFAQPage'; import AboutTeamPage from '../pages/AboutTeamPage'; import AboutPartnersPage from '../pages/AboutPartnersPage'; import AccessClinicalDataPage from '../pages/AccessClinicalDataPage' +import KiarvaIFramePage from '../pages/KiarvaIFramePage'; const router = createBrowserRouter([ { @@ -73,6 +74,10 @@ const router = createBrowserRouter([ path: 'privacy', element: , }, + { + path: 'kiarva', + element: , + }, ] }, ]); diff --git a/pmp-frontend-app/src/pages/KiarvaIFramePage.tsx b/pmp-frontend-app/src/pages/KiarvaIFramePage.tsx new file mode 100644 index 0000000..51cd300 --- /dev/null +++ b/pmp-frontend-app/src/pages/KiarvaIFramePage.tsx @@ -0,0 +1,21 @@ +import { ReactElement } from 'react'; +import { TrackPageViewIfEnabled } from '../util/cookiesHandling'; +import Iframe from 'react-iframe'; + +export default function KiarvaIFramePage(): ReactElement { + TrackPageViewIfEnabled(); + + let kiarva_hostname = ''; + + return ( + <> + {kiarva_hostname && + (