From 6433f03aae31b22e87d40e0106e55084bef38d31 Mon Sep 17 00:00:00 2001 From: aelassas Date: Sun, 19 Jan 2025 08:20:12 +0100 Subject: [PATCH 1/2] Add privacy policy link to footer --- frontend/src/components/Footer.tsx | 1 + frontend/src/lang/footer.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index 363a159c..b1b73477 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -26,6 +26,7 @@ const Footer = () => {
{strings.CORPORATE}
diff --git a/frontend/src/lang/footer.ts b/frontend/src/lang/footer.ts index c8b2f142..862db587 100644 --- a/frontend/src/lang/footer.ts +++ b/frontend/src/lang/footer.ts @@ -18,6 +18,7 @@ const strings = new LocalizedStrings({ SUPPORT: 'Support', CONTACT: 'Contact', SECURE_PAYMENT: `Paiement 100% sécurisé avec ${env.WEBSITE_NAME}`, + PRIVACY_POLICY: 'Politique de Confidentialité', }, en: { COPYRIGHT_PART1, @@ -32,6 +33,7 @@ const strings = new LocalizedStrings({ SUPPORT: 'Support', CONTACT: 'Contact', SECURE_PAYMENT: `100% secure payment with ${env.WEBSITE_NAME}`, + PRIVACY_POLICY: 'Privacy Policy', }, }) From 0a7588e0090fc6fd537b05e9668a2fc71555b8d1 Mon Sep 17 00:00:00 2001 From: aelassas Date: Sun, 19 Jan 2025 09:06:44 +0100 Subject: [PATCH 2/2] Add cookie policy page --- backend/vite.config.ts | 2 +- frontend/src/App.tsx | 2 + frontend/src/assets/css/cookie-policy.css | 18 ++++ frontend/src/components/Footer.tsx | 1 + frontend/src/components/Header.tsx | 10 ++ frontend/src/lang/cookie-policy.ts | 109 ++++++++++++++++++++++ frontend/src/lang/footer.ts | 2 + frontend/src/lang/header.ts | 2 + frontend/src/pages/CookiePolicy.tsx | 22 +++++ frontend/vite.config.ts | 2 +- 10 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 frontend/src/assets/css/cookie-policy.css create mode 100644 frontend/src/lang/cookie-policy.ts create mode 100644 frontend/src/pages/CookiePolicy.tsx diff --git a/backend/vite.config.ts b/backend/vite.config.ts index bfb8651c..8bb9ddd9 100644 --- a/backend/vite.config.ts +++ b/backend/vite.config.ts @@ -39,7 +39,7 @@ export default ({ mode }: { mode: string }) => { server: { host: '0.0.0.0', - port: Number.parseInt(process.env.VITE_PORT || '3006', 10), + port: Number.parseInt(process.env.VITE_PORT || '3003', 10), }, build: { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c41ef71f..2b3a5ccc 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -35,6 +35,7 @@ const NoMatch = lazy(() => import('@/pages/NoMatch')) const Agencies = lazy(() => import('@/pages/Agencies')) const Locations = lazy(() => import('@/pages/Locations')) const Privacy = lazy(() => import('@/pages/Privacy')) +const CookiePolicy = lazy(() => import('@/pages/CookiePolicy')) const App = () => ( @@ -69,6 +70,7 @@ const App = () => ( } /> } /> } /> + } /> } /> diff --git a/frontend/src/assets/css/cookie-policy.css b/frontend/src/assets/css/cookie-policy.css new file mode 100644 index 00000000..05ffa805 --- /dev/null +++ b/frontend/src/assets/css/cookie-policy.css @@ -0,0 +1,18 @@ +div.cookie-policy { + display: flex; + flex-direction: column; + flex: 1 0 auto; + align-items: center; + transform: translate3d(0, 0, 0); + white-space: pre-wrap; + padding: 50px 20%; + font-size: 15px; + color: #121212; + min-height: 100vh; +} + +@media only screen and (width <=960px) { + div.cookie-policy { + padding: 30px 20px; + } +} diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index b1b73477..e56289df 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -26,6 +26,7 @@ const Footer = () => {
{strings.CORPORATE}
  • navigate('/about')}>{strings.ABOUT}
  • +
  • navigate('/cookie-policy')}>{strings.COOKIE_POLICY}
  • navigate('/privacy')}>{strings.PRIVACY_POLICY}
  • navigate('/tos')}>{strings.TOS}
diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx index 2324be3f..c031100c 100644 --- a/frontend/src/components/Header.tsx +++ b/frontend/src/components/Header.tsx @@ -32,6 +32,7 @@ import { LocationOn as LocationIcon, PersonOutline as SignUpIcon, PrivacyTip as PrivacyIcon, + Cookie as CookiePolicyIcon, } from '@mui/icons-material' import { toast } from 'react-toastify' import { CircleFlag } from 'react-circle-flags' @@ -450,6 +451,15 @@ const Header = ({ + { + navigate('/cookie-policy') + handleSideMenuClose() + }} + > + + + { navigate('/privacy') diff --git a/frontend/src/lang/cookie-policy.ts b/frontend/src/lang/cookie-policy.ts new file mode 100644 index 00000000..87d0b766 --- /dev/null +++ b/frontend/src/lang/cookie-policy.ts @@ -0,0 +1,109 @@ +import LocalizedStrings from 'localized-strings' +import * as langHelper from '@/common/langHelper' +import env from '@/config/env.config' + +const strings = new LocalizedStrings({ + fr: { + TITLE: 'Politique de cookies', + POLICY: ` +Cette Politique en matière de cookies explique comment ${env.WEBSITE_NAME} (« nous », « notre » ou « nos ») utilise des cookies et des technologies similaires sur notre site web. En utilisant notre site web, vous consentez à l'utilisation des cookies conformément à cette politique. + +1. Qu'est-ce qu'un cookie ? + +Les cookies sont de petits fichiers texte qui sont stockés sur votre appareil (ordinateur, tablette, smartphone) lorsque vous visitez un site web. Ils permettent d'améliorer votre expérience de navigation en mémorisant vos préférences et en fournissant des informations ou des services pertinents. + +2. Types de cookies que nous utilisons + +Nous utilisons les types de cookies suivants : + +- Cookies strictement nécessaires : Ces cookies sont essentiels au fonctionnement du site web et ne peuvent pas être désactivés dans nos systèmes. +- Cookies de performance : Ces cookies nous aident à comprendre comment les visiteurs interagissent avec notre site web en collectant et en rapportant des informations de manière anonyme. +- Cookies fonctionnels : Ces cookies permettent au site web d'offrir des fonctionnalités améliorées et une personnalisation. +- Cookies de ciblage/publicitaires : Ces cookies sont utilisés pour diffuser des publicités pertinentes et suivre les performances des annonces. + +3. Comment utilisons-nous les cookies ? + +Nous utilisons les cookies pour : + +- Améliorer la fonctionnalité et la performance du site web. +-Analyser l'utilisation du site afin d'améliorer nos services. +-Personnaliser votre expérience et mémoriser vos préférences. +-Diffuser des publicités ciblées en fonction de vos intérêts. + +4. Gestion de vos préférences en matière de cookies + +Vous pouvez gérer vos préférences en matière de cookies à tout moment en modifiant les paramètres de votre navigateur. La plupart des navigateurs vous permettent de : + +- Bloquer tous les cookies. +- Supprimer les cookies existants. +- Recevoir des notifications lorsqu'un cookie est défini. + +Veuillez noter que la désactivation des cookies peut affecter votre expérience sur notre site web. + +5. Cookies tiers + +Nous pouvons autoriser des prestataires de services tiers à placer des cookies sur notre site web pour analyser le trafic, fournir des services publicitaires ou activer des fonctionnalités supplémentaires. Ces cookies sont régis par les politiques de confidentialité des tiers. + +6. Modifications de cette Politique en matière de cookies + +Nous pouvons mettre à jour cette Politique en matière de cookies de temps en temps pour refléter les évolutions technologiques, législatives ou nos pratiques. La politique mise à jour sera publiée sur cette page avec une nouvelle date de « Dernière mise à jour ». + +7. Nous contacter + +Si vous avez des questions concernant cette Politique en matière de cookies, veuillez nous contacter à : ${env.CONTACT_EMAIL} + `, + }, + en: { + TITLE: 'Cookie Policy', + POLICY: ` +This Cookie Policy explains how ${env.WEBSITE_NAME} ("we," "us," or "our") uses cookies and similar technologies on our website. By using our website, you consent to the use of cookies as described in this policy. + +1. What Are Cookies? + +Cookies are small text files that are stored on your device (computer, tablet, smartphone) when you visit a website. They help improve your browsing experience by remembering your preferences and providing relevant information or services. + +2. Types of Cookies We Use + +We use the following types of cookies: + +- Strictly Necessary Cookies: These cookies are essential for the website to function and cannot be turned off in our systems. +- Performance Cookies: These cookies help us understand how visitors interact with our website by collecting and reporting information anonymously. +- Functional Cookies: These cookies enable the website to provide enhanced functionality and personalization. +- Targeting/Advertising Cookies: These cookies are used to deliver relevant advertisements and track ad performance. + +3. How We Use Cookies + +We use cookies to: + +- Enhance website functionality and performance. +- Analyze site usage to improve our services. +- Personalize your experience and remember your preferences. +- Deliver targeted advertisements based on your interests. + +4. Managing Your Cookie Preferences + +You can manage your cookie preferences at any time by adjusting the settings in your browser. Most browsers allow you to: + +- Block all cookies. +- Delete existing cookies. +- Receive notifications when a cookie is set. + +Please note that disabling cookies may impact your experience on our website. + +5. Third-Party Cookies + +We may allow third-party service providers to place cookies on our website to analyze site traffic, provide advertising services, or enable additional features. These cookies are governed by the third parties' privacy policies. + +6. Changes to This Cookie Policy + +We may update this Cookie Policy from time to time to reflect changes in technology, legislation, or our practices. The updated policy will be posted on this page with a revised "Last updated" date. + +7. Contact Us + +If you have any questions about this Cookie Policy, please contact us at: ${env.CONTACT_EMAIL} + `, + }, +}) + +langHelper.setLanguage(strings) +export { strings } diff --git a/frontend/src/lang/footer.ts b/frontend/src/lang/footer.ts index 862db587..ac80c141 100644 --- a/frontend/src/lang/footer.ts +++ b/frontend/src/lang/footer.ts @@ -19,6 +19,7 @@ const strings = new LocalizedStrings({ CONTACT: 'Contact', SECURE_PAYMENT: `Paiement 100% sécurisé avec ${env.WEBSITE_NAME}`, PRIVACY_POLICY: 'Politique de Confidentialité', + COOKIE_POLICY: 'Politique de cookies', }, en: { COPYRIGHT_PART1, @@ -34,6 +35,7 @@ const strings = new LocalizedStrings({ CONTACT: 'Contact', SECURE_PAYMENT: `100% secure payment with ${env.WEBSITE_NAME}`, PRIVACY_POLICY: 'Privacy Policy', + COOKIE_POLICY: 'Cookie Policy', }, }) diff --git a/frontend/src/lang/header.ts b/frontend/src/lang/header.ts index cde4edcc..8a795336 100644 --- a/frontend/src/lang/header.ts +++ b/frontend/src/lang/header.ts @@ -15,6 +15,7 @@ const strings = new LocalizedStrings({ AGENCIES: 'Agences', LOCATIONS: 'Destinations', PRIVACY_POLICY: 'Politique de Confidentialité', + COOKIE_POLICY: 'Politique de cookies', }, en: { SIGN_IN: 'Sign in', @@ -29,6 +30,7 @@ const strings = new LocalizedStrings({ AGENCIES: 'Agencies', LOCATIONS: 'Destinations', PRIVACY_POLICY: 'Privacy Policy', + COOKIE_POLICY: 'Cookie Policy', }, }) diff --git a/frontend/src/pages/CookiePolicy.tsx b/frontend/src/pages/CookiePolicy.tsx new file mode 100644 index 00000000..20a49e24 --- /dev/null +++ b/frontend/src/pages/CookiePolicy.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { strings } from '@/lang/cookie-policy' +import Layout from '@/components/Layout' +import Footer from '@/components/Footer' + +import '@/assets/css/cookie-policy.css' + +const ToS = () => { + const onLoad = () => { } + + return ( + +
+

{strings.TITLE}

+

{strings.POLICY}

+
+