GithubHelp home page GithubHelp logo

betagouv / datapass Goto Github PK

View Code? Open in Web Editor NEW
17.0 6.0 17.0 46.97 MB

L'outil de gestion des habilitations juridiques pour les données à accès restreint.

Home Page: https://docs.google.com/presentation/d/e/2PACX-1vRe6QG2eVigJMVi1sVlT7PZh4pPwFZ3tqChzrbyBYw_dHSETSWUljGzARaKDw2-QV2qb2ZOS9at2VMm/pub?start=false&loop=false&delayms=3000

License: GNU Affero General Public License v3.0

Shell 0.05% Ruby 42.76% HTML 4.79% CSS 2.48% TypeScript 49.34% JavaScript 0.55% Dockerfile 0.04%

datapass's Introduction

DataPass Frontend build Backend CI

L’outil de gestion des habilitations juridiques pour les données à accès restreint.

DataPass

Contexte

Le problème

Lorsqu’une administration expose des données à caractère personnel, elle doit pouvoir interdire leur diffusion aux organisations qui n’ont pas le droit d’y accéder. Par exemple, une agence de voyage n’a pas à connaître le revenu fiscal de référence de ses clients.

Pour cela, la plupart des administrations qui fournissent des données demandent aux entités souhaitant exploiter ces données de signer des conventions pour organiser l’échange.

Mais comment les collectivités territoriales peuvent-elles, dans ces conditions, avoir accès au fameux revenu fiscal de référence sachant qu’elles sont par ailleurs tenues de ne plus de demander ces informations à leurs administrés (cf. Article L114-8 du CRPA) ?

Doivent-elles signer des conventions avec chacune des administrations productrices de données avec potentiellement des règles et des procédures différentes chez chacun ? Il est probable que la multiplicité des conventions aboutissent purement et simplement à la non-circulation des données. Ceci implique in-fine que chaque citoyen doit continuer à fournir une photocopie de son avis d’imposition à sa mairie pour remplir ses démarches administratives annuelles.

La solution

La DINUM simplifie radicalement ce processus. Dans un premier temps, elle a travaillé sur la mise en place d’un cadre juridique commun pour harmoniser et fluidifier les relations entre fournisseurs de données et fournisseurs de service. C’est la mise en place de l’article de la section « Échange de données entre administrations » (L114-8 et suivants) du CRPA.

Dans un deuxième temps, la DINUM a mis en place un outil pour faciliter cette mise en relation entre fournisseur et consommateur : DataPass. Cet outil s’adresse aux ayants droits qui souhaiteraient exploiter des données à caractère personnel. DataPass délivre des habilitations, à travers un parcours simple, standardisé et conforme, pour accéder à l’ensemble des données protégées produites par l’État.

Le code de cet outil est ouvert.

Raccorder son service à DataPass

Déploiement du formulaire

Pour ajouter un formulaire voici la liste des fichiers à modifier :

  1. dans le frontend
    1. description de l’organisation du formulaire (création de frontend/src/pages/NameOfApi.js)
    2. label, icône, email de contact (frontend/src/config/data-provider-parameters.tsx)
    3. [optionnel] codes organisation (codes NAF) valides pour votre service (frontend/src/lib)
    4. [optionnel] une page de présentation hors connection
    5. [optionnel] une liste de démarches pré-remplies
  2. dans le backend
    1. définition des données spécifiques autorisées (création de backend/app/policies/enrollment/<name_of_api>_policy.rb)
    2. définitions de règles de validation spécifiques (création de backend/app/models/enrollment/<name_of_api>.rb)
    3. configuration du label de service et de l’adresse email pour les notifications mails émises depuis DataPass data_providers
    4. [optionnel] configuration d’un Webhook DataPass
    5. [optionnel] modèle d’email de réponse personnalisé

Interfaçage entre DataPass et un API Manager

Diagramme de flux

Les roles dans DataPass

Dans DataPass, il y a différents types d’utilisateurs :

  • les demandeurs : ils viennent déposer leur demande d’accès, ils n’ont accès qu’a leurs habilitations.
  • les instructeurs : ils peuvent valider, refuser ou demander des modifications des demandes d’habilitations qu’ils ont à charge.
  • les rapporteurs : ils voient, en plus de leurs propres habilitations, toutes les habilitations relatives à leur service.
  • les abonnés : ils reçoivent une notification par mail à chaque fois qu’un demandeur dépose une nouvelle demande d’habilitation pour leur service.

Ces types sont combinables pour débloquer plus ou moins de fonctionnalités : par exemple un utilisateur qui serait à la fois « rapporteur » et « abonné » pour une API donnée, est notifié par email d’une nouvelle demande d’habilitation pour cette API et peut consulter la demande d’habilitation en question. Pour autant, il ne peut pas la valider.

À noter que les instructeurs, rapporteurs et abonnés ont une page d’accueil différente des demandeurs. Cette page d’accueil ajoute notamment des fonctions de recherche et de filtre des habilitations qui ne sont pas disponibles aux demandeurs.

Pour devenir instructeur, rapporteur ou abonné pour un type d’habilitation il faut :

  1. se créer un compte sur https://app.moncomptepro.beta.gouv.fr/
  2. rejoindre l’organisation que l’on représente en renseignant son numéro SIRET
  3. envoyer une demande écrite à [email protected]

Tester DataPass

Si vous avez besoin de faire le parcours de validation complet pour bien comprendre le fonctionnement de DataPass, vous pouvez utiliser notre plateforme de « staging ». Cette plateforme est disponible ici : https://datapass-staging.api.gouv.fr/ (lien direct vers une demande d’habilitation API Particulier : https://datapass-staging.api.gouv.fr/api-particulier).

Vous pouvez vous créer un compte utilisateur en entrant n’importe quel numéro SIRET.

Vous pouvez également utiliser les comptes de tests suivants :

À noter que les emails reçus sur les adresses en yopmail.com sont accessibles sur : http://yopmail.com/.

Contenu de ce dépôt de code

Ce dépôt de code vous permet d’instancier un environnement de développement local pour DataPass. Pour ce faire merci de prendre connaissance de la suite du document (en anglais).

Ajouter une nouvelle source de données

Se référer à Ajout d'un nouveau fournisseur

Development

Requirements

  • ruby 3.2.2
  • node ~16
  • redis
  • postgresql 12.11

Installation

./bin/install.sh

Run

./bin/local_dev.sh

Check [frontend/README.md] and [backend/README.md] if you need to run only one of them

DataPass back & front with Docker

This installation method use a backend launched locally with docker. This method is longer and more complex than the first method, but you will be able to make development on the backend. This installation is compatible with MacbookPro M1.

Dependencies setup

Local environment

Clone the repo:

git clone [email protected]:betagouv/datapass.git
cd datapass

Ask a colleague to give you the backend secrets stored in the backend/.env.local file.

Then create and configure your backend docker containers:

docker-compose up # This can take a while, go make a loaf of bread or something

And finally, you can start the frontend:

cd frontend
npm install
npm run dev

Test your installation

Go to http://localhost:3000/. Sign in as [email protected] with the password [email protected]. Then, you should see the enrollment list. Note that test instructor emails can be found here .

Front end linter

Note that, we use the prettier linter for datapass-frontend. Please configure your IDE accordingly: https://prettier.io/docs/en/editors.html.

DataPass back & front with Vagrant (optional)

This installation method use a backend launched locally within a Vagrant virtual machine. This method is much longer and more complex than the previous ones, but it provides a development environment very close to the production environment allowing you to both work on provisioning and applications. It is configured to run with a local installation of moncomptepro in a Vagrant virtual machine.

For details on this installation follow instructions here: https://gitlab.com/etalab/api.gouv.fr/datapass-infrastructure/-/blob/master/README.md Ask a colleague to give you access to the Gitlab Infratrusture repository.

Global architecture

Functional architecture

functional architecture

Technical architecture

technical architecture

Powered by:

Deployment

Staging

./bin/deploy-staging.sh

datapass's People

Contributors

am-beta avatar anna-livia avatar arslanegharout avatar bernardstanislas avatar blageir avatar dependabot[bot] avatar dgfip-da avatar dorinelam avatar etienne0101 avatar felhix avatar guillett avatar haelle avatar isalafont avatar mehdi-farsi avatar miryad3108 avatar paulpoupett avatar pierreericgarcia avatar pknoth avatar rdubigny avatar renardpal avatar samuelfaure avatar schweisguthn avatar skelz0r avatar tmerlier avatar un3x avatar vincentv-dtnum avatar xavierjp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

datapass's Issues

Les instructions Docker ne fonctionnent pas

Sous macos.

Le problème:

[HPM] Error occurred while proxying request localhost:3000/api/users/me to http://localhost:3001/ [ECONNRESET] (https://nodejs.org/api/errors.html#errors_common_system_errors)

[API Entreprise] Pop Up d'avertissement pour les données d'effectifs

CONTEXTE :
Avertir les utilisateurs du fait que les données effectifs de l'URSSAF Caisse nationale sont en accès restreint, et nécessite de justifier des finalités. Les informer qu'une tranche de l'effectif est disponible dans les API Entreprises et etablissements de l'INSEE.

ÉVOLUTION SOUHAITÉE :
Afficher une Pop up comme nous le faisons déjà pour les API Déclaration de résulat et 3 derniers bilans.
cf : https://github.com/betagouv/datapass/blob/3dfa21d7758bb51fa47ceb426d2caea2517a8520/frontend/src/components/organisms/form-sections/DonneesSection/Scopes.js
Il faut que le contenu de la pop up soit différent.

Contenu actuel affiché pour les deux autres API sensibles :

Avez-vous vraiment besoin de cette donnée ?

Cette donnée est particulièrement sensible, elle n'est pas autorisée dans le cadre des "marchés publics" et "pré-remplissage". Elle peut être autorisée pour certaines "aides et subventions publiques". Pour que votre demande d'accès à cette donnée aboutisse, vous devez justifier dans ce formulaire d'un cadre légal adéquat et d'un contexte d'usage attestant de l'utilité de cette donnée pour votre service.

Contenu souhaité pour l'API effectifs - Urssaf caisse nationale :

Avez-vous vraiment besoin de cette donnée ?

Cette donnée est particulièrement sensible. Pour que votre demande d'accès à cette donnée aboutisse, vous devez justifier dans ce formulaire d'un cadre légal adéquat et d'un contexte d'usage attestant de l'utilité de cette donnée pour votre service.
Une donnée moins précise est disponible avec les API "Données de référence d’une entité - INSEE & Infogreffe" et "Données de référence d'un établissement - INSEE & Infogreffe" (premières API cochables dans la liste). Il s'agit des tranches d’effectifs au sens de l’INSEE . Si vous n’avez pas besoin de l’effectif exact, ces API sont suffisantes.

@Haelle J'ai créé une issue ici pour pas qu'on perde de vue la problème évoqué ici => https://gitlab.com/etalab/api-entreprise/siade/-/issues/204

Enhance / test bundle install

Si bundle install échoue (genre tu change juste le ruby-version) les tests passent

Faudrait a minima tester ça, au mieux harmoniser la version partout

Améliorer le rendu imprimé / PDF

Une description claire et concise du problème en question. Ex : Je suis toujours frustré(e) quand [...]

Le partage d'une demande d'habilitation n'est pas permis native par l'application.
Une alternative simple et peu coûteuse est de passer par un PDF (imprimer dans un fichier).

Actuellement, je vois plusieurs problèmes (du plus au moins important) via une génération depuis Firefox :

  • absence d'indication sur les sélections
    • « À quelles données souhaitez-vous avoir accès ? »
    • « Le niveau de garantie attendu par votre service »
    • « Les modalités d’utilisation »
  • Le texte qui est coupé au niveau des sauts de pages
  • La première page quasi vide
  • L'intégration du footer

Informer des scopes API Statut étudiant / statut étudiant boursier FranceConnecté

Les FS utilisant ces API doivent transmettre dans leur appels d'API à FranceConnect les scopes auxquels ils souhaitent accéder.

Il faut donc à un moment qu'on leur donne ces scopes.

Je propose donc de :

  • les mettre sur la page api.gouv.fr (betagouv/api.gouv.fr#1037)
  • les envoyer dans l'email de validation avec les scopes qu'ils ont coché <- à faire côté Datapass

J'ai vaguement regardé, on peut utiliser le moteur Datapass mais j'ai l'impression que dans la variable accessible dans le template @enrollement on a pas accès au scopes qui ont été validé. J'espère que je me trompe car ça serait le plus simple.

UX - demande d'utilisation d'adresse mail générique

Quand un utilisateur ne peut pas valider son formulaire, il a l'impression que c'est dû à l'utilisation d'une adresse mail non générique.

Propositions d'amélioration UX:

  • Passer l'alerte de Orange vers Bleu
  • Définir brièvement "adresse générique"
  • Changer le wording vers:
"Une adresse générique (exemple: contact@) est encouragée"

signup-back ne peut plus être lancé sans Docker

signup-back/.env définit des variables d'environnement, notamment PG_HOST qui fait que ça ne fonctionne plus.

J'ai pas pensé à une solution à court terme, pour le moment j'ai juste modifié les variables (la suppression fonctionne imo):

-PG_USER=back
-PG_PASSWORD=back
-PG_HOST=db
-PG_DATABASE=signup-development
+PG_USER=signup-back
+PG_PASSWORD=signup-back
+PG_HOST=localhost
+PG_DATABASE=signup-back-development

Redis backups

Votre demande d'évolution est elle liée à un problème ? Merci de le décrire.
Non

Décrivez la solution que vous aimeriez
Il y a des backups pour pg, il en faudrait pour redis


Clairement pas prio, au pire ce qui droppera en cas de fail redis ce sont les emails en attente (mais peut être amené à évoluer).

Impossible de supprimer un brouillon de demande sur Chrome

Description du bug

En tant qu'utilisateur
Lorsque je me rends sur un brouillon d'une demande
Et que je j'essaye de supprimer la demande
Alors j'obtiens un message d'erreur

La dernière étape devrait être une suppression.

Ce problème arrive sur Chrome Version 94.0.4606.71

J'ai une erreur js CORS pour info:

Access to XMLHttpRequest at 'https://back.datapass.api.gouv.fr/api/enrollments/9058' from origin 'https://datapass.api.gouv.fr' has been blocked by CORS policy: Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.

Pour reproduire le bug

Étapes pour reproduire le bug :

  1. Aller sur https://datapass.api.gouv.fr/api-entreprise/9058#Contacts
  2. Cliquer sur Supprimer la Demande
  3. Voir le bug

Capture d'écran

Screen Shot 2021-10-22 at 13 26 13

Identifiant DataPass

[email protected]

Permettre l'affichage d'une demande d'habilitation hors connexion

Les pages de la forme https://datapass.api.gouv.fr/:targetAPI devrait être accessible avec leur véritable contenu hors connexion pour faciliter la collaboration, l'embarquement, le travail de conviction des parties prenantes de la demande d'habilitation.

Par exemple, pouvoir partager cet URL https://datapass.api.gouv.fr/api-statut-demandeur-emploi#Les%20donn%C3%A9es%20n%C3%A9cessaires pour accéder à la section sans avoir à se connecter serait pratique pour expliciter de quoi on parle.

Gérer les erreurs 503 (maintenance)

Dans l'optique de pouvoir faire des maintenances applicatives et de serveurs, nous allons mettre en place une nouvelle règle qui renverra l'erreur 503 ( Service unavailable ) pendant cette maintenance.

Il faut que le front gère cette erreur en précisant qu'il s'agit d'une erreur au lieu du message d'erreur générique (cf screenshot ci-dessous):

Screenshot 2023-08-22 at 10 39 52

[Section "Données] Titres des groupes de données : bold et possibilité d'ajouter un lien

Votre demande d'évolution est elle liée à un problème ? Merci de le décrire.**

Dans Datapass on peut décider de regroupe des données à cocher dans un groupe. Deux éléments me semblent possible à améliorer :

  • Actuellement, la typographie du groupe est en regular, comme la donnée elle-même, ce qui la rend peut visible, voir la fait se confondre avec les données à cocher. Je propose de repasser la font en bold (tel que c'était avant il y a quelques mois)
  • Actuellement, il n'est pas possible d'ajouter une documentation aux catégories, ce serait très utile pour documenter le formulaire. Je propose d'ajouter la possibilité de mettre un lien, qui serait configuré à partir d'un champ about dans le .yaml

Maquette de la proposition

image

Situation actuelle

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.