(frontend) introduce dedicated terms of service page

Created a proper terms of service page within the application to replace
external doc page redirects. Implemented based on Sophie's accessibility
requirements to improve user experience for all users regardless
of ability.
This commit is contained in:
lebaudantoine
2025-03-10 23:53:16 +01:00
committed by aleb_the_flash
parent 5f07d4a88b
commit 1c40003c3c
12 changed files with 1176 additions and 6 deletions

View File

@@ -0,0 +1,371 @@
import { Screen } from '@/layout/Screen'
import { Bold, H, P, A, Ul } from '@/primitives'
import { css } from '@/styled-system/css'
import { HStack } from '@/styled-system/jsx'
import { useTranslation } from 'react-i18next'
/* eslint-disable @typescript-eslint/no-explicit-any */
const ensureArray = (value: any) => {
if (Array.isArray(value)) {
return value
}
return []
}
/* eslint-enable @typescript-eslint/no-explicit-any */
export const TermsOfServiceRoute = () => {
const { t } = useTranslation('termsOfService')
return (
<Screen layout="centered" headerTitle={t('terms.title')}>
<HStack display={'block'} padding={'2rem'}>
<P>{t('terms.introduction')}</P>
{/* Article 1 */}
<H lvl={2}>{t('terms.articles.article1.title')}</H>
<P>{t('terms.articles.article1.content')}</P>
{/* Article 2 */}
<H lvl={2}>{t('terms.articles.article2.title')}</H>
<P>{t('terms.articles.article2.content')}</P>
<Ul>
{ensureArray(
t('terms.articles.article2.purposes', { returnObjects: true })
).map((purpose, index) => (
<li key={index}>{purpose}</li>
))}
</Ul>
{/* Article 3 */}
<H lvl={2}>{t('terms.articles.article3.title')}</H>
{ensureArray(
t('terms.articles.article3.definitions', { returnObjects: true })
).map((def, index) => (
<P key={index}>
<Bold>{`"${def.term}"`}</Bold> {def.definition}
</P>
))}
{/* Article 4 */}
<H lvl={2}>{t('terms.articles.article4.title')}</H>
<P>{t('terms.articles.article4.content')}</P>
{/* Article 5 */}
<H lvl={2}>{t('terms.articles.article5.title')}</H>
{/* Section 5.1 */}
<H lvl={3} bold>
{t('terms.articles.article5.sections.section1.title')}
</H>
<P>{t('terms.articles.article5.sections.section1.content')}</P>
<P>{t('terms.articles.article5.sections.section1.paragraph1')}</P>
<P>{t('terms.articles.article5.sections.section1.paragraph2')}</P>
<Ul>
{ensureArray(
t('terms.articles.article5.sections.section1.capabilities', {
returnObjects: true,
})
).map((capability, index) => (
<li key={index}>{capability}</li>
))}
</Ul>
<P
style={{
marginTop: '1.5rem',
}}
>
{t('terms.articles.article5.sections.section1.paragraph3')}
</P>
{/* Section 5.2 */}
<H lvl={3} bold>
{t('terms.articles.article5.sections.section2.title')}
</H>
<P>{t('terms.articles.article5.sections.section2.content')}</P>
<P>{t('terms.articles.article5.sections.section2.paragraph')}</P>
<Ul>
{ensureArray(
t('terms.articles.article5.sections.section2.capabilities', {
returnObjects: true,
})
).map((capability, index) => (
<li key={index}>{capability}</li>
))}
</Ul>
{/* Article 6 */}
<H lvl={2}>{t('terms.articles.article6.title')}</H>
{/* Section 6.1 */}
<H lvl={3} bold>
{t('terms.articles.article6.sections.section1.title')}
</H>
{ensureArray(
t('terms.articles.article6.sections.section1.paragraphs', {
returnObjects: true,
})
).map((paragraph, index) => (
<P key={index}>{paragraph}</P>
))}
{/* Section 6.2 */}
<H lvl={3} bold>
{t('terms.articles.article6.sections.section2.title')}
</H>
{ensureArray(
t('terms.articles.article6.sections.section2.paragraphs', {
returnObjects: true,
})
).map((paragraph, index) => (
<P key={index}>{paragraph}</P>
))}
{/* Article 7 */}
<H lvl={2}>{t('terms.articles.article7.title')}</H>
{/* Section 7.1 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section1.title')}
</H>
<P>{t('terms.articles.article7.sections.section1.content')}</P>
{/* Section 7.2 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section2.title')}
</H>
<P>{t('terms.articles.article7.sections.section2.content')}</P>
{ensureArray(
t('terms.articles.article7.sections.section2.dataCategories', {
returnObjects: true,
})
).map((category, catIndex) => (
<div key={catIndex}>
<P>
<Bold>{category.category}</Bold>
</P>
{category.items && (
<Ul>
{ensureArray(category.items).map((item, itemIndex) => (
<li key={itemIndex}>{item}</li>
))}
</Ul>
)}
</div>
))}
{/* Section 7.3 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section3.title')}
</H>
<P>{t('terms.articles.article7.sections.section3.content')}</P>
<Ul>
{ensureArray(
t('terms.articles.article7.sections.section3.purposes', {
returnObjects: true,
})
).map((purpose, index) => (
<li key={index}>{purpose}</li>
))}
</Ul>
{/* Section 7.4 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section4.title')}
</H>
<P>{t('terms.articles.article7.sections.section4.content')}</P>
<Ul>
{ensureArray(
t('terms.articles.article7.sections.section4.bases', {
returnObjects: true,
})
).map((basis, index) => (
<li key={index}>{basis}</li>
))}
</Ul>
{ensureArray(
t('terms.articles.article7.sections.section4.details', {
returnObjects: true,
})
).map((detail, detailIndex) => (
<div key={detailIndex}>
<P>
<Bold>{detail.title}</Bold>
</P>
<P>{detail.content}</P>
<P>{detail.legalReference}</P>
{detail.legalReferences && (
<Ul>
{ensureArray(detail.legalReferences).map((ref, refIndex) => (
<li key={refIndex}>{ref}</li>
))}
</Ul>
)}
</div>
))}
{/* Section 7.5 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section5.title')}
</H>
<P>{t('terms.articles.article7.sections.section5.content')}</P>
<table
className={css({
width: '100%',
borderCollapse: 'collapse',
border: '1px solid #ddd',
marginBottom: '1rem',
})}
>
<thead>
<tr>
<th
className={css({
padding: '0.5rem',
border: '1px solid #ddd',
textAlign: 'left',
})}
>
{t('terms.articles.article7.sections.section5.dataType')}
</th>
<th
className={css({
padding: '0.5rem',
border: '1px solid #ddd',
textAlign: 'left',
})}
>
{t('terms.articles.article7.sections.section5.retentionPeriod')}
</th>
</tr>
</thead>
<tbody>
{ensureArray(
t('terms.articles.article7.sections.section5.retentionTable', {
returnObjects: true,
})
).map((row, rowIndex) => (
<tr key={rowIndex}>
<td
className={css({
padding: '0.5rem',
border: '1px solid #ddd',
})}
>
{row.dataType}
</td>
<td
className={css({
padding: '0.5rem',
border: '1px solid #ddd',
})}
>
{row.retention}
</td>
</tr>
))}
</tbody>
</table>
<P>{t('terms.articles.article7.sections.section5.additionalInfo')}</P>
{/* Section 7.6 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section6.title')}
</H>
<P>{t('terms.articles.article7.sections.section6.content')}</P>
{/* Section 7.7 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section7.title')}
</H>
<P>{t('terms.articles.article7.sections.section7.content')}</P>
<Ul
style={{
marginBottom: '1rem',
}}
>
{ensureArray(
t('terms.articles.article7.sections.section7.rights', {
returnObjects: true,
})
).map((right, index) => (
<li key={index}>{right}</li>
))}
</Ul>
<P>
{t(
'terms.articles.article7.sections.section7.exerciseRights.content'
)}
</P>
<Ul
style={{
marginBottom: '1rem',
}}
>
{ensureArray(
t(
'terms.articles.article7.sections.section7.exerciseRights.methods',
{ returnObjects: true }
)
).map((method, index) => {
if (
typeof method === 'string' &&
method.includes('visio@numerique.gouv.fr')
) {
const parts = method.split('visio@numerique.gouv.fr')
return (
<li key={index}>
{parts[0]}
<A href="mailto:visio@numerique.gouv.fr" color="primary">
visio@numerique.gouv.fr
</A>
{parts[1]}
</li>
)
}
return <li key={index}>{method}</li>
})}
</Ul>
{ensureArray(
t('terms.articles.article7.sections.section7.additionalInfo', {
returnObjects: true,
})
).map((info, index) => {
if (typeof info === 'string' && info.includes('Cnil')) {
const parts = info.split('Cnil')
return (
<P key={index}>
{parts[0]}
<A
href="https://www.cnil.fr/fr/modele/courrier/sopposer-au-traitement-de-donnees"
color="primary"
>
Cnil
</A>
{parts[1]}
</P>
)
}
return <P key={index}>{info}</P>
})}
{/* Section 7.8 */}
<H lvl={3} bold>
{t('terms.articles.article7.sections.section8.title')}
</H>
{ensureArray(
t('terms.articles.article7.sections.section8.paragraphs', {
returnObjects: true,
})
).map((paragraph, index) => (
<P key={index}>{paragraph}</P>
))}
</HStack>
</Screen>
)
}

View File

@@ -230,6 +230,16 @@ export const Footer = () => {
{t('links.legalsTerms')}
</Link>
</StyledLi>
<StyledLi divider>
<Link
underline={false}
footer="minor"
to="/conditions-utilisation"
aria-label={t('links.termsOfService')}
>
{t('links.termsOfService')}
</Link>
</StyledLi>
<StyledLi divider>
<A
externalIcon

View File

@@ -155,6 +155,7 @@ export const Header = () => {
const isHome = useMatchesRoute('home')
const isLegalTerms = useMatchesRoute('legalTerms')
const isAccessibility = useMatchesRoute('accessibility')
const isTermsOfService = useMatchesRoute('termsOfService')
const isRoom = useMatchesRoute('room')
const { user, isLoggedIn, logout } = useUser()
@@ -207,7 +208,8 @@ export const Header = () => {
{isLoggedIn === false &&
!isHome &&
!isLegalTerms &&
!isAccessibility && (
!isAccessibility &&
!isTermsOfService && (
<>
<ProConnectButton hint={false} />
<LoginHint />

View File

@@ -37,7 +37,8 @@
"accessibility": "",
"ariaLabel": "",
"code": "",
"technicalDetails": ""
"technicalDetails": "",
"termsOfService": ""
},
"mentions": "",
"license": ""

View File

@@ -0,0 +1,108 @@
{
"terms": {
"title": "",
"introduction": "",
"articles": {
"article1": {
"title": "",
"content": ""
},
"article2": {
"title": "",
"content": "",
"purposes": []
},
"article3": {
"title": "",
"definitions": []
},
"article4": {
"title": "",
"content": ""
},
"article5": {
"title": "",
"sections": {
"section1": {
"title": "",
"content": "",
"paragraph1": "",
"paragraph2": "",
"capabilities": [],
"paragraph3": ""
},
"section2": {
"title": "",
"content": "",
"paragraph": "",
"capabilities": []
}
}
},
"article6": {
"title": "",
"sections": {
"section1": {
"title": "",
"paragraphs": []
},
"section2": {
"title": "",
"paragraphs": []
}
}
},
"article7": {
"title": "",
"sections": {
"section1": {
"title": "",
"content": ""
},
"section2": {
"title": "",
"content": "",
"dataCategories": []
},
"section3": {
"title": "",
"content": "",
"purposes": []
},
"section4": {
"title": "",
"content": "",
"bases": [],
"details": []
},
"section5": {
"title": "",
"content": "",
"dataType": "",
"retentionPeriod": "",
"retentionTable": [],
"additionalInfo": ""
},
"section6": {
"title": "",
"content": ""
},
"section7": {
"title": "",
"content": "",
"rights": [],
"exerciseRights": {
"content": "",
"methods": []
},
"additionalInfo": []
},
"section8": {
"title": "",
"paragraphs": []
}
}
}
}
}
}

View File

@@ -37,7 +37,8 @@
"accessibility": "Accessibility: non-compliant",
"ariaLabel": "new window",
"code": "Open Source Code Repository",
"technicalDetails": "Technical Notice"
"technicalDetails": "Technical Notice",
"termsOfService": "Terms of service"
},
"mentions": "Unless otherwise stated, the contents of this site are available under",
"license": "etalab 2.0 license"

View File

@@ -0,0 +1,221 @@
{
"terms": {
"title": "Terms of Service",
"introduction": "These terms of service (referred to as \"ToS\") establish the legal framework of the \"Visio\" Platform and define the conditions of access and use of services by the user.",
"articles": {
"article1": {
"title": "Article 1 - Scope",
"content": "The platform \"visio.numerique.gouv.fr\" is an initiative of the interministerial operator of the Interministerial Digital Direction, which is responsible for processing and the operational carrier of the solution."
},
"article2": {
"title": "Article 2 - Purpose",
"content": "The platform may collect personal data for the following purposes:",
"purposes": [
"Promote team cooperation and remote work.",
"Facilitate the organization of meetings, conferences or training sessions.",
"Improve the Visio platform."
]
},
"article3": {
"title": "Article 3 - Definitions",
"definitions": [
{
"term": "User",
"definition": "Any public agent or interlocutor of a public agent, using the platform."
},
{
"term": "Services",
"definition": "The functionalities offered by the platform to meet its purposes."
},
{
"term": "Data controller",
"definition": "The person who, within the meaning of Article 4 of Regulation (EU) No. 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, determines the purposes and means of processing personal data."
}
]
},
"article4": {
"title": "Article 4 - Framework and usage restrictions",
"content": "Visio is in the process of certification for a non-sensitive data usage framework, which excludes the processing of so-called \"sensitive\" personal data under Articles 9 and 10 of the GDPR and information bearing the mention \"Restricted Distribution\" within the meaning of interministerial instruction 901/SGDSN/ANSSI."
},
"article5": {
"title": "Article 5 - Features",
"sections": {
"section1": {
"title": "5.1 - Features open to public agents",
"content": "Visio offers any public agent the possibility to create a videoconference room from a standard workstation, linked to their ProConnect account.",
"paragraph1": "Any State agent, whose activities are compatible with the use of Visio or who is not subject to particular confidentiality obligations or professional secrecy, can create a videoconference freely. They can then share the meeting link with other participants, whether they are part of the administration or not.",
"paragraph2": "For this purpose, each room organizer can:",
"capabilities": [
"Protect access to the room with a waiting room;",
"Authorize the entry of each participant in the room;",
"Mute participants' microphones and cameras;",
"Exclude a participant from the room."
],
"paragraph3": "Only agents whose field of activity is authorized to use Visio or who are not subject to a particular confidentiality obligation or professional secrecy can use or control this service and its functionalities."
},
"section2": {
"title": "5.2 - Features open to all Users",
"content": "Visio allows any user, public agent or not, to participate in any Visio room to which they are invited by a State agent and to benefit from all its features.",
"paragraph": "For this purpose, each participant can:",
"capabilities": [
"Decline their identity or indicate it when entering the room;",
"Exchange remotely in audio and/or video;",
"Share their screen;",
"Exchange messages during the room publicly with everyone;",
"See information about the conference;",
"Exercise their right to their image by choosing never to activate their camera and/or microphone or to deactivate one, the other or both at any time;",
"Protect the privacy of the place from which they access the room by selecting and then activating a screen background before entering the room or even during the videoconference."
]
}
}
},
"article6": {
"title": "Article 6 - Responsibility",
"sections": {
"section1": {
"title": "6.1 - The Platform Editor",
"paragraphs": [
"The editor reserves the right to suspend or revoke access to the service if it considers that the use of the service is detrimental to its image or does not correspond to security requirements.",
"The editor is committed to securing the Platform, particularly by taking all necessary measures to guarantee the security and confidentiality of the information provided.",
"The editor provides the necessary and reasonable means to ensure continuous access, without financial counterpart for users, to the Platform. It reserves the freedom to evolve, modify or suspend, without notice, the platform for maintenance reasons or for any other reason deemed necessary."
]
},
"section2": {
"title": "6.2 - The Platform User",
"paragraphs": [
"Any information transmitted by the User is their sole responsibility. It is reminded that any person making a false declaration for themselves or for others is exposed, in particular, to the sanctions provided for in Article 441-1 of the Penal Code, providing for penalties of up to three years' imprisonment and a fine of 45,000 euros.",
"It is up to the User to ensure beforehand that they are authorized to use Visio or not to be subject to a particular confidentiality obligation or professional secrecy."
]
}
}
},
"article7": {
"title": "Article 7 - Protection of personal data",
"sections": {
"section1": {
"title": "7.1 - Data controller",
"content": "The data controller is the Interministerial Digital Direction, whose director is Ms. Stéphanie Schaer."
},
"section2": {
"title": "7.2 - Personal data processed",
"content": "The platform may process the following personal data:",
"dataCategories": [
{
"category": "Data relating to the organizing public agent:",
"items": [
"Email address of the organizing public agent and participants;",
"Organization;",
"First and last name;",
"Public IP address;"
]
},
{
"category": "Data relating to videoconferences;"
},
{
"category": "Data collected by the host:",
"items": [
"The public IP address of the client (terminal associated with the browser used)",
"The IP address of the server",
"Technical connection data relating to",
"the Browser (type, version no.)",
"the Client workstation operating system",
"the flows (bandwidth, throughput, packet loss, latency)",
"the image quality (resolution, number of frames/s) in sending and receiving."
]
}
]
},
"section3": {
"title": "7.3 - Purposes of processing",
"content": "The platform may process personal data for the following purposes:",
"purposes": [
"Promote team cooperation and remote work;",
"Facilitate the organization of meetings, conferences or training sessions;",
"Facilitate assistance to each user of the service.",
"Improve the Visio platform;"
]
},
"section4": {
"title": "7.4 - Legal basis for data processing",
"content": "The data processed on the occasion of this processing have several legal bases:",
"bases": [
"the legal obligation to which the data controller is subject within the meaning of Article 6-c of the GDPR;",
"the public interest mission to which the data controller is subject within the meaning of Article 6-e of the GDPR."
],
"details": [
{
"title": "a) Data relating to the organizing public agent",
"content": "This data processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller within the meaning of Article 6-e of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReference": "The public interest mission is notably established by: Article 6 of Decree No. 2019-1088 of October 25, 2019 relating to the State's information and communication system and to the interministerial digital direction"
},
{
"title": "b) Data relating to the web conference",
"content": "This data processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller within the meaning of Article 6-e of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReference": "The public interest mission is notably established by: Article 6 of Decree No. 2019-1088 of October 25, 2019 relating to the State's information and communication system and to the interministerial digital direction"
},
{
"title": "c) Connection data",
"content": "This data processing is necessary for compliance with a legal obligation to which the controller is subject within the meaning of Article 6-c of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReferences": [
"The LCEN Law No. 2004-575 of June 21, 2004 for confidence in the digital economy",
"Articles 1 and 3 of Decree No. 2011-219 of February 25, 2011"
]
}
]
},
"section5": {
"title": "7.5 - Retention period of processed data",
"content": "Personal data are kept for the purposes of possible requests for assistance or traceability for a conference, for the development of statistics:",
"dataType": "Data Type",
"retentionPeriod": "Retention Period",
"retentionTable": [
{
"dataType": "Data relating to the organizing agent",
"retention": "The data kept are anonymized and are deleted at the latest 12 months after the expiry date of the videoconference"
},
{
"dataType": "Data relating to the videoconference",
"retention": "The data are deleted at the latest 12 months after the expiry date of the videoconference"
}
],
"additionalInfo": "At the end of the retention period, the data relating to the organizing agent and the data relating to the videoconference can no longer be used by the data controller within the framework of the platform. They are destroyed at the latest 12 months after the expiry date of the videoconference."
},
"section6": {
"title": "7.6 - Security and confidentiality",
"content": "The data controller undertakes to take the necessary technical and organizational security measures to ensure confidentiality, integrity and protect data access."
},
"section7": {
"title": "7.7 - Rights of data subjects",
"content": "Pursuant to Article 13 of Regulation (EU) No. 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, each user whose data is collected in the context of the use or connection to the Visio platform is reminded that they have the following rights regarding their personal data:",
"rights": [
"Right to information;",
"Right of access to data;",
"Right of rectification and right of erasure of data;",
"Right to restriction of data"
],
"exerciseRights": {
"content": "You can exercise these rights by contacting by:",
"methods": [
"Electronic means: visio@numerique.gouv.fr",
"Postal means: Direction interministérielle du Numérique, 20 avenue de Ségur, 75007 Paris."
]
},
"additionalInfo": [
"Due to the obligation of security and confidentiality in the processing of personal data incumbent on the data controller, your request will only be processed if you provide proof of your identity. To help you in your approach, you will find here a model letter developed by the Cnil.",
"You have the possibility to object to the processing of your personal data. To help you in your approach, you will find here a model letter developed by the Cnil.",
"Response times: The data controller undertakes to respond to your request for access, rectification or objection or any other request for additional information within a reasonable time that should not exceed 1 month from the receipt of your request."
]
},
"section8": {
"title": "7.8 - Recipients",
"paragraphs": [
"The collected data are processed only by persons legally authorized to know the processed information.",
"These are agents, employees or other persons who may represent the legal entity holding a public service mission that uses the platform service."
]
}
}
}
}
}
}

View File

@@ -37,7 +37,8 @@
"accessibility": "Accessibilités : non conforme",
"ariaLabel": "nouvelle fenêtre",
"code": "Dépôt de code Open Source",
"technicalDetails": "Fiche Technique"
"technicalDetails": "Fiche Technique",
"termsOfService": "Conditions d'utilisation"
},
"mentions": "Sauf mention contraire, les contenus de ce site sont disponibles sous",
"license": "licence etalab 2.0"

View File

@@ -0,0 +1,221 @@
{
"terms": {
"title": "Conditions Générales d'Utilisation",
"introduction": "Les présentes conditions générales d'utilisation (dites \"CGU\") fixent le cadre juridique de la Plateforme \"Visio\" et définissent les conditions d'accès et d'utilisation des services par l'utilisateur.",
"articles": {
"article1": {
"title": "Article 1 - Champ d'application",
"content": "La plateforme \"visio.numerique.gouv.fr\" est à l'initiative de l'opérateur interministériel de la Direction Interministérielle du NUMérique qui en est le responsable de traitements et le porteur opérationnel de la solution."
},
"article2": {
"title": "Article 2 - Objet",
"content": "La plateforme peut collecter des données à caractère personnel pour les finalités suivantes :",
"purposes": [
"Favoriser la coopération des équipes et le travail à distance.",
"Faciliter l'organisation de réunions, conférences ou formations.",
"Améliorer la plateforme Visio."
]
},
"article3": {
"title": "Article 3 - Définitions",
"definitions": [
{
"term": "L'Utilisateur",
"definition": "est tout agent public ou interlocuteur d'agent public, utilisant la plateforme."
},
{
"term": "Les Services",
"definition": "sont les fonctionnalités offertes par la plateforme pour répondre à ses finalités."
},
{
"term": "Le responsable de traitement",
"definition": "est la personne qui, au sens de l'article 4 du règlement UE) n°2016/679 du Parlement européen et du Conseil du 27 avril 2016 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données détermine les finalités et les moyens des traitements de données à caractère personnel."
}
]
},
"article4": {
"title": "Article 4 - Cadre et restrictions d'usage",
"content": "Visio est en cours d'homologuation pour un cadre d'usage de données non sensibles, qui exclut le traitement des données personnelles dites « sensibles » relevant des articles 9 et 10 du RGPD et des informations portant la mention \"Diffusion Restreinte\" au sens de l'instruction interministérielle 901/SGDSN/ANSSI."
},
"article5": {
"title": "Article 5 - Fonctionnalités",
"sections": {
"section1": {
"title": "5.1 - Fonctionnalités ouvertes aux agents publics",
"content": "Visio offre à tout agent public la possibilité de créer un salon de visioconférence depuis un poste de travail standard, lié à son compte ProConnect.",
"paragraph1": "Tout agent de l'État, dont les activités sont compatibles avec l'utilisation de Visio ou qui n'est pas soumis à des obligations particulières de confidentialité ou de secret professionnel, peut créer une visioconférence en toute liberté. Il peut ensuite partager le lien de la réunion avec d'autres participants, qu'ils fassent partie de l'administration ou non.",
"paragraph2": "A cet effet, chaque organisateur de salon peut :",
"capabilities": [
"Protéger l'accès au salon par une salle d'attente ;",
"Autoriser l'entrée de chaque participant dans le salon ;",
"Couper les micros et caméras des participants ;",
"Exclure un participant du salon."
],
"paragraph3": "Seuls les agents, dont le domaine d'activité est autorisé à utiliser Visio ou qui ne sont pas soumis à une obligation de confidentialité particulière ou de secret professionnel, peuvent utiliser ou avoir la maîtrise de ce service et de ses fonctionnalités."
},
"section2": {
"title": "5.2 - Fonctionnalités ouvertes à tous les Utilisateurs",
"content": "Visio permet à tout utilisateur, agent public ou non de participer à tout salon de Visio auquel il est convié par un agent de l'Etat et de profiter de toutes ses fonctionnalités.",
"paragraph": "A cet effet, chaque participant peut :",
"capabilities": [
"décliner son identité ou indiquer en entrant dans le salon ;",
"échanger à distance en audio et/ou en vidéo ;",
"partager son écran ;",
"échanger des messages durant le salon de manière publique avec tous ;",
"voir des informations sur la conférence ;",
"exercer son droit à l'image en choisissant de ne jamais activer sa caméra et/ou son micro ou de désactiver l'un, l'autre ou les deux à tout instant ;",
"protéger l'intimité du lieu duquel il accède au salon en sélectionnant puis en activant un fond d'écran avant d'entrer dans le salon ou même durant la visioconférence."
]
}
}
},
"article6": {
"title": "Article 6 - Responsabilité",
"sections": {
"section1": {
"title": "6.1 - L'Editeur de la plateforme",
"paragraphs": [
"L'éditeur s'autorise à suspendre ou révoquer l'accès au service, s'il estime que l'usage réalisé du service porte préjudice à son image ou ne correspond pas aux exigences de sécurité.",
"L'éditeur s'engage à la sécurisation de la Plateforme, notamment en prenant toutes les mesures nécessaires permettant de garantir la sécurité et la confidentialité des informations fournies.",
"L'éditeur fournit les moyens nécessaires et raisonnables pour assurer un accès continu, sans contrepartie financière pour les utilisateurs, à la Plateforme. Il se réserve la liberté de faire évoluer, de modifier ou de suspendre, sans préavis, la plateforme pour des raisons de maintenance ou pour tout autre motif jugé nécessaire."
]
},
"section2": {
"title": "6.2 - L'Utilisateur de la plateforme",
"paragraphs": [
"Toute information transmise par l'Utilisateur est de sa seule responsabilité. Il est rappelé que toute personne procédant à une fausse déclaration pour elle-même ou pour autrui s'expose, notamment, aux sanctions prévues à l'article 441-1 du code pénal, prévoyant des peines pouvant aller jusqu'à trois ans d'emprisonnement et 45 000 euros d'amende.",
"Il revient à l'Utilisateur de s'assurer préalablement d'être autorisé à utiliser Visio ou à ne pas être soumis à une obligation de confidentialité particulière ou secret professionnel."
]
}
}
},
"article7": {
"title": "Article 7 - Protection des données à caractère personnel",
"sections": {
"section1": {
"title": "7.1 - Responsable de traitement",
"content": "Le responsable de traitement est la Direction interministérielle du Numérique, dont la directrice est Madame Stéphanie Schaer."
},
"section2": {
"title": "7.2 - Données personnelles traitées",
"content": "La plateforme peut traiter les données à caractère personnel suivantes :",
"dataCategories": [
{
"category": "Données relatives à l'agent public organisateur :",
"items": [
"adresse e-mail de l'agent public organisateur et des participants ;",
"Organisation ;",
"Nom Prénom ;",
"Adresse IP publique ;"
]
},
{
"category": "Données relatives aux visioconférences ;"
},
{
"category": "Données collectées par l'hébergeur :",
"items": [
"L'adresse IP publique du client (terminal associé au navigateur utilisé)",
"L'adresse IP du serveur",
"Données techniques de la connexion portant sur",
"le Navigateur (type, n° de version)",
"le Système d'exploitation du poste client",
"les flux (bande passante, débit, perte de paquets, latence)",
"la qualité de l'image (résolution, nombre d'images/s) en envoi et en réception."
]
}
]
},
"section3": {
"title": "7.3 - Finalités des traitements",
"content": "La plateforme peut traiter des données à caractère personnel pour les finalités suivantes :",
"purposes": [
"Favoriser la coopération des équipes et le travail à distance ;",
"Faciliter l'organisation de réunions, conférences ou formations ;",
"Faciliter l'assistance à chaque utilisateur du service.",
"Améliorer la plateforme Visio ;"
]
},
"section4": {
"title": "7.4 - Base juridique des traitements de données",
"content": "Les données traitées à l'occasion de ce traitement ont plusieurs fondements juridiques :",
"bases": [
"l'obligation légale à laquelle est soumis le responsable de traitements au sens de l'article 6-c du RGPD ;",
"la mission d'intérêt public à laquelle le responsable du traitement est soumis au sens de l'article 6-e du RGPD."
],
"details": [
{
"title": "a) Les données relatives à l'agent public organisateur",
"content": "Ce traitement de données est nécessaire à l'exercice d'une mission d'intérêt public ou relevant de l'exercice de l'autorité publique dont est investi le responsable de traitement au sens de l'article 6-e du règlement (UE) 2016/679 du Parlement européen et du Conseil du 27 avril 2016 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données.",
"legalReference": "La mission d'intérêt public est notamment posée par : L'article 6 du décret n°2019-1088 du 25 octobre 2019 relatif au système d'information et de communication de l'Etat et à la direction interministérielle du numérique"
},
{
"title": "b) Les données relatives à la visioconférence",
"content": "Ce traitement de données est nécessaire à l'exercice d'une mission d'intérêt public ou relevant de l'exercice de l'autorité publique dont est investi le responsable de traitement au sens de l'article 6-e du Règlement (UE) 2016/679 du Parlement européen et du Conseil du 27 avril 2016 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données.",
"legalReference": "La mission d'intérêt public est notamment posée par : L'article 6 du décret n°2019-1088 du 25 octobre 2019 relatif au système d'information et de communication de l'Etat et à la direction interministérielle du numérique"
},
{
"title": "c) Les données de connexion",
"content": "Ce traitement de données est nécessaire au respect d'une obligation légale à laquelle le responsable du traitement est soumis au sens de l'article 6-c du règlement (UE) 2016/679 du Parlement européen et du Conseil du 27 avril 2016 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données.",
"legalReferences": [
"La loi LCEN n°2004-575 du 21 juin 2004 pour la confiance dans l'économie numérique",
"Les articles 1 et 3 du décret n°2011-219 du 25 février 2011"
]
}
]
},
"section5": {
"title": "7.5 - Durée de conservation des données traitées",
"content": "Les données à caractère personnel sont conservées aux fins d'éventuelles demandes d'assistance ou de traçabilité pour une conférence, d'élaboration de statistiques :",
"dataType": "Type de données",
"retentionPeriod": "Période de rétention",
"retentionTable": [
{
"dataType": "Données relatives à l'agent organisateur",
"retention": "Les données conservées sont anonymisées et sont supprimées au plus tard 12 mois après la date d'expiration de la visioconférence"
},
{
"dataType": "Données relatives à la visioconference",
"retention": "Les données sont supprimées au plus tard 12 mois après la date d'expiration de la visioconference"
}
],
"additionalInfo": "A l'issue de la durée de conservation, les données relatives à l'agent organisateur et les données relatives à la visioconference ne peuvent plus être utilisées par le responsable de traitements dans le cadre de la plateforme. Elles sont détruites au plus tard 12 mois après la date d'expiration de la visioconference."
},
"section6": {
"title": "7.6 - Sécurité et confidentialité",
"content": "Le responsable de traitement s'engage à prendre les mesures techniques et organisationnelles de sécurité nécessaires pour assurer la confidentialité, l'intégrité et protéger l'accès des données."
},
"section7": {
"title": "7.7 - Droits des personnes concernées",
"content": "En vertu de l'article 13 du règlement (UE) n°2016/679 du Parlement européen et du Conseil du 27 avril 2016 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données, il est rappelé à chaque utilisateur dont les données sont collectées dans le cadre de l'utilisation ou de la connexion à la plateforme Visio qu'il dispose des droits suivants concernant ses données à caractère personnel :",
"rights": [
"Droit d'information ;",
"Droit d'accès aux données ;",
"Droit de rectification et droit d'effacement des données ;",
"Droit de limitation des données"
],
"exerciseRights": {
"content": "Vous pouvez exercer ces droits en contactant par :",
"methods": [
"voie électronique : visio@numerique.gouv.fr",
"voie postale : Direction interministérielle du Numérique, 20 avenue de Ségur, 75007 Paris."
]
},
"additionalInfo": [
"En raison de l'obligation de sécurité et de confidentialité dans le traitement des données à caractère personnel qui incombe au responsable de traitement, votre demande ne sera traitée que si vous rapportez la preuve de votre identité. Pour vous aider dans votre démarche, vous trouverez ici un modèle de courrier élaboré par la Cnil.",
"Vous avez la possibilité de vous opposer à un traitement de vos données personnelles. Pour vous aider dans votre démarche, vous trouverez ici un modèle de courrier élaboré par la Cnil.",
"Délais de réponse : La responsable de traitement s'engage à répondre à votre demande d'accès, de rectification ou d'opposition ou toute autre demande complémentaire d'informations dans un délai raisonnable qui ne saurait dépasser 1 mois à compter de la réception de votre demande."
]
},
"section8": {
"title": "7.8 - Destinataires",
"paragraphs": [
"Les données collectées sont traitées par les seules personnes juridiquement habilitées à connaître des informations traitées.",
"Il s'agit des agents, salariés ou autre personne pouvant représenter la personne morale titulaire d'une mission de service public qui utilise le service de la plateforme."
]
}
}
}
}
}
}

View File

@@ -35,7 +35,9 @@
"data": "Persoonlijke gegevens en cookies",
"accessibility": "Toegankelijkheid: audit in uitvoering",
"ariaLabel": "nieuw venster",
"code": "Open Source Code Repository"
"code": "Open Source Code Repository",
"technicalDetails": "Technische fiche",
"termsOfService": "Gebruiksvoorwaarden"
},
"mentions": "Tenzij anders vermeld, is de inhoud van deze site beschikbaar onder",
"license": "etalab 2.0 licentie"

View File

@@ -0,0 +1,221 @@
{
"terms": {
"title": "Terms of Service",
"introduction": "These terms of service (referred to as \"ToS\") establish the legal framework of the \"Visio\" Platform and define the conditions of access and use of services by the user.",
"articles": {
"article1": {
"title": "Article 1 - Scope",
"content": "The platform \"visio.numerique.gouv.fr\" is an initiative of the interministerial operator of the Interministerial Digital Direction, which is responsible for processing and the operational carrier of the solution."
},
"article2": {
"title": "Article 2 - Purpose",
"content": "The platform may collect personal data for the following purposes:",
"purposes": [
"Promote team cooperation and remote work.",
"Facilitate the organization of meetings, conferences or training sessions.",
"Improve the Visio platform."
]
},
"article3": {
"title": "Article 3 - Definitions",
"definitions": [
{
"term": "User",
"definition": "Any public agent or interlocutor of a public agent, using the platform."
},
{
"term": "Services",
"definition": "The functionalities offered by the platform to meet its purposes."
},
{
"term": "Data controller",
"definition": "The person who, within the meaning of Article 4 of Regulation (EU) No. 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, determines the purposes and means of processing personal data."
}
]
},
"article4": {
"title": "Article 4 - Framework and usage restrictions",
"content": "Visio is in the process of certification for a non-sensitive data usage framework, which excludes the processing of so-called \"sensitive\" personal data under Articles 9 and 10 of the GDPR and information bearing the mention \"Restricted Distribution\" within the meaning of interministerial instruction 901/SGDSN/ANSSI."
},
"article5": {
"title": "Article 5 - Features",
"sections": {
"section1": {
"title": "5.1 - Features open to public agents",
"content": "Visio offers any public agent the possibility to create a videoconference room from a standard workstation, linked to their ProConnect account.",
"paragraph1": "Any State agent, whose activities are compatible with the use of Visio or who is not subject to particular confidentiality obligations or professional secrecy, can create a videoconference freely. They can then share the meeting link with other participants, whether they are part of the administration or not.",
"paragraph2": "For this purpose, each room organizer can:",
"capabilities": [
"Protect access to the room with a waiting room;",
"Authorize the entry of each participant in the room;",
"Mute participants' microphones and cameras;",
"Exclude a participant from the room."
],
"paragraph3": "Only agents whose field of activity is authorized to use Visio or who are not subject to a particular confidentiality obligation or professional secrecy can use or control this service and its functionalities."
},
"section2": {
"title": "5.2 - Features open to all Users",
"content": "Visio allows any user, public agent or not, to participate in any Visio room to which they are invited by a State agent and to benefit from all its features.",
"paragraph": "For this purpose, each participant can:",
"capabilities": [
"Decline their identity or indicate it when entering the room;",
"Exchange remotely in audio and/or video;",
"Share their screen;",
"Exchange messages during the room publicly with everyone;",
"See information about the conference;",
"Exercise their right to their image by choosing never to activate their camera and/or microphone or to deactivate one, the other or both at any time;",
"Protect the privacy of the place from which they access the room by selecting and then activating a screen background before entering the room or even during the videoconference."
]
}
}
},
"article6": {
"title": "Article 6 - Responsibility",
"sections": {
"section1": {
"title": "6.1 - The Platform Editor",
"paragraphs": [
"The editor reserves the right to suspend or revoke access to the service if it considers that the use of the service is detrimental to its image or does not correspond to security requirements.",
"The editor is committed to securing the Platform, particularly by taking all necessary measures to guarantee the security and confidentiality of the information provided.",
"The editor provides the necessary and reasonable means to ensure continuous access, without financial counterpart for users, to the Platform. It reserves the freedom to evolve, modify or suspend, without notice, the platform for maintenance reasons or for any other reason deemed necessary."
]
},
"section2": {
"title": "6.2 - The Platform User",
"paragraphs": [
"Any information transmitted by the User is their sole responsibility. It is reminded that any person making a false declaration for themselves or for others is exposed, in particular, to the sanctions provided for in Article 441-1 of the Penal Code, providing for penalties of up to three years' imprisonment and a fine of 45,000 euros.",
"It is up to the User to ensure beforehand that they are authorized to use Visio or not to be subject to a particular confidentiality obligation or professional secrecy."
]
}
}
},
"article7": {
"title": "Article 7 - Protection of personal data",
"sections": {
"section1": {
"title": "7.1 - Data controller",
"content": "The data controller is the Interministerial Digital Direction, whose director is Ms. Stéphanie Schaer."
},
"section2": {
"title": "7.2 - Personal data processed",
"content": "The platform may process the following personal data:",
"dataCategories": [
{
"category": "Data relating to the organizing public agent:",
"items": [
"Email address of the organizing public agent and participants;",
"Organization;",
"First and last name;",
"Public IP address;"
]
},
{
"category": "Data relating to videoconferences;"
},
{
"category": "Data collected by the host:",
"items": [
"The public IP address of the client (terminal associated with the browser used)",
"The IP address of the server",
"Technical connection data relating to",
"the Browser (type, version no.)",
"the Client workstation operating system",
"the flows (bandwidth, throughput, packet loss, latency)",
"the image quality (resolution, number of frames/s) in sending and receiving."
]
}
]
},
"section3": {
"title": "7.3 - Purposes of processing",
"content": "The platform may process personal data for the following purposes:",
"purposes": [
"Promote team cooperation and remote work;",
"Facilitate the organization of meetings, conferences or training sessions;",
"Facilitate assistance to each user of the service.",
"Improve the Visio platform;"
]
},
"section4": {
"title": "7.4 - Legal basis for data processing",
"content": "The data processed on the occasion of this processing have several legal bases:",
"bases": [
"the legal obligation to which the data controller is subject within the meaning of Article 6-c of the GDPR;",
"the public interest mission to which the data controller is subject within the meaning of Article 6-e of the GDPR."
],
"details": [
{
"title": "a) Data relating to the organizing public agent",
"content": "This data processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller within the meaning of Article 6-e of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReference": "The public interest mission is notably established by: Article 6 of Decree No. 2019-1088 of October 25, 2019 relating to the State's information and communication system and to the interministerial digital direction"
},
{
"title": "b) Data relating to the web conference",
"content": "This data processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller within the meaning of Article 6-e of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReference": "The public interest mission is notably established by: Article 6 of Decree No. 2019-1088 of October 25, 2019 relating to the State's information and communication system and to the interministerial digital direction"
},
{
"title": "c) Connection data",
"content": "This data processing is necessary for compliance with a legal obligation to which the controller is subject within the meaning of Article 6-c of Regulation (EU) 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data.",
"legalReferences": [
"The LCEN Law No. 2004-575 of June 21, 2004 for confidence in the digital economy",
"Articles 1 and 3 of Decree No. 2011-219 of February 25, 2011"
]
}
]
},
"section5": {
"title": "7.5 - Retention period of processed data",
"content": "Personal data are kept for the purposes of possible requests for assistance or traceability for a conference, for the development of statistics:",
"dataType": "Data Type",
"retentionPeriod": "Retention Period",
"retentionTable": [
{
"dataType": "Data relating to the organizing agent",
"retention": "The data kept are anonymized and are deleted at the latest 12 months after the expiry date of the videoconference"
},
{
"dataType": "Data relating to the videoconference",
"retention": "The data are deleted at the latest 12 months after the expiry date of the videoconference"
}
],
"additionalInfo": "At the end of the retention period, the data relating to the organizing agent and the data relating to the videoconference can no longer be used by the data controller within the framework of the platform. They are destroyed at the latest 12 months after the expiry date of the videoconference."
},
"section6": {
"title": "7.6 - Security and confidentiality",
"content": "The data controller undertakes to take the necessary technical and organizational security measures to ensure confidentiality, integrity and protect data access."
},
"section7": {
"title": "7.7 - Rights of data subjects",
"content": "Pursuant to Article 13 of Regulation (EU) No. 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, each user whose data is collected in the context of the use or connection to the Visio platform is reminded that they have the following rights regarding their personal data:",
"rights": [
"Right to information;",
"Right of access to data;",
"Right of rectification and right of erasure of data;",
"Right to restriction of data"
],
"exerciseRights": {
"content": "You can exercise these rights by contacting by:",
"methods": [
"Electronic means: visio@numerique.gouv.fr",
"Postal means: Direction interministérielle du Numérique, 20 avenue de Ségur, 75007 Paris."
]
},
"additionalInfo": [
"Due to the obligation of security and confidentiality in the processing of personal data incumbent on the data controller, your request will only be processed if you provide proof of your identity. To help you in your approach, you will find here a model letter developed by the Cnil.",
"You have the possibility to object to the processing of your personal data. To help you in your approach, you will find here a model letter developed by the Cnil.",
"Response times: The data controller undertakes to respond to your request for access, rectification or objection or any other request for additional information within a reasonable time that should not exceed 1 month from the receipt of your request."
]
},
"section8": {
"title": "7.8 - Recipients",
"paragraphs": [
"The collected data are processed only by persons legally authorized to know the processed information.",
"These are agents, employees or other persons who may represent the legal entity holding a public service mission that uses the platform service."
]
}
}
}
}
}
}

View File

@@ -2,9 +2,15 @@ import { FeedbackRoute, RoomRoute, roomIdPattern } from '@/features/rooms'
import { HomeRoute } from '@/features/home'
import { LegalTermsRoute } from '@/features/legalsTerms/LegalTermsRoute'
import { AccessibilityRoute } from '@/features/legalsTerms/Accessibility'
import { TermsOfServiceRoute } from '@/features/legalsTerms/TermsOfService'
export const routes: Record<
'home' | 'room' | 'feedback' | 'legalTerms' | 'accessibility',
| 'home'
| 'room'
| 'feedback'
| 'legalTerms'
| 'accessibility'
| 'termsOfService',
{
name: RouteName
path: RegExp | string
@@ -39,6 +45,11 @@ export const routes: Record<
path: '/accessibilite',
Component: AccessibilityRoute,
},
termsOfService: {
name: 'termsOfService',
path: '/conditions-utilisation',
Component: TermsOfServiceRoute,
},
}
export type RouteName = keyof typeof routes