Open jpm-cbna opened 4 years ago
Merci pour ces précisions.
Y a juste le paramètre SENSITIVE_DATA_ACCESS_RULES_LINK
qui me semble assez spécifique comme approche.
On n'a pas forcément un lien vers des éléments liés à la sensibilité dans un formulaire de demande d'accès aux données.
Ca peut plus général ou sur un autre sujet. Renommer le paramètre de manière plus générique pour un lien vers un document qui peut être sur autre chose que la sensibilité ?
Le paramètre SENSITIVE_DATA_ACCESS_RULES_LINK
permet de rajouter le texte et donc le lien dessus "(Merci de consulter au préalable les règles d’accès aux données sensibles)" à droite de la case à cocher "Je souhaite accéder aux observations sensibles".
Si le paramètre n'est pas défini dans le fichier de config alors le texte et le lien n'apparaissent pas.
C'est effectivement assez spécifique. Mais ces règles sont présentes à tous les niveaux même au niveau national avec la licence Ferme.
OK, j'aurai privilégié un paramètre plus générique pour pouvoir l'utiliser pour une validation des règles de sensibilité, mais aussi d'autres choses plus larges ou différentes. Mais si le message est pré-défini et en dur, alors c'est plus galère en effet.
Si pour commencer, le fonctionnement est spécifique "sensibilité", mais qu'on veut se garder la possibilité d'en élargir ou modifier le sujet plus tard, je propose de garder ce fonctionnement spécifique pour le moment, mais d'au moins renommer le paramètre en DATA_ACCESS_RULES_LINK
.
Si pour commencer, le fonctionnement est spécifique "sensibilité", mais qu'on veut se garder la possibilité d'en élargir ou modifier le sujet plus tard, je propose de garder ce fonctionnement spécifique pour le moment, mais d'au moins renommer le paramètre en
DATA_ACCESS_RULES_LINK
.
Ok, ça marche.
Le formulaire de demande d'accès est en cours de finalisation.
L'accès au formulaire via le menu sous le profil de l'utilisateur, le formulaire avec la section standard "Permissions demandées" et la partie personnalisable (optionnelle) ici nommée "Motivations de la demande" :
Le formulaire prêt à être validé avec le nouveau composant "pnx-taxa
" utilisé pour le champ "Groupes taxonomiques":
La validation (optionnelle) d'une convention reprenant des éléments de la demande (via un composant de type "custom"):
Zoom sur l'intégration des éléments de la demande:
Présentation du contenu de la base de données correspondant à des demandes.
Exemple de contenu de la table gn_permissions.t_requests
:
id_request|id_role|end_date |accepted|accepted_date|additional_data |meta_create_date |meta_update_date |
----------|-------|----------|--------|-------------|----------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
1| 1|2021-01-11| | |{"projectType": "Étude trame verte et bleue", "projectSponsor": "Test", "projectDescription": null} |2020-10-13 17:17:14|2020-10-13 17:17:14|
2| 1|2021-01-11| | |{"projectType": "Inventaire scientifique", "projectSponsor": "Test", "projectDescription": null} |2020-10-13 17:34:11|2020-10-13 17:34:11|
3| 1|2021-01-11| | |{"projectType": "Expertise écologique réglementaire", "projectSponsor": "Test", "projectDescription": null} |2020-10-13 17:36:53|2020-10-13 17:36:53|
4| 1|2021-01-11| | |{"projectType": "Inventaire scientifique", "projectSponsor": "Test", "projectDescription": null} |2020-10-13 17:37:43|2020-10-13 17:37:43|
5| 1| | | |{"projectType": "Plan de gestion", "projectSponsor": "COMMANDITAIRE", "projectDescription": "DESCRIPTION"} |2020-10-14 14:59:55|2020-10-14 14:59:55|
6| 1|2021-01-03| | |{"projectType": "DOCOB Natura 2000", "projectSponsor": "Un commanditaire.", "projectDescription": "La description de mon projet."}|2020-10-14 15:34:38|2020-10-14 15:34:38|
7| 1|2021-01-12| | |{"projectType": "Plan de gestion", "projectSponsor": "Commanditaire", "projectDescription": null} |2020-10-14 16:13:08|2020-10-14 16:13:08|
8| 1|2021-01-12| | |{"projectType": "Étude trame verte et bleue", "projectSponsor": "Test", "projectDescription": null} |2020-10-14 16:13:47|2020-10-14 16:13:47|
Exemple de permissions liées aux demandes (table gn_permissions.cor_requests_permissions
) (affichage des codes à la place des id pour mieux comprendre):
id_request_permission|id_request|id_module|id_action|id_object |id_filter_type|value_filter |
---------------------|----------|---------|---------|---------------------|--------------|---------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abreschviller |
3| 1| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus |
4| 1| SYNTHESE| R| PRIVATE_OBSERVATION| SENSITIVITY|true |
5| 2| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Saint-Laurent-du-Cros|
6| 2| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Juniperus |
7| 2| SYNTHESE| R| PRIVATE_OBSERVATION| SENSITIVITY|true |
8| 3| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abbévillers |
9| 3| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus |
10| 3| SYNTHESE| R|SENSITIVE_OBSERVATION| SENSITIVITY|true |
11| 4| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt |
12| 4| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Papyridea |
13| 4| SYNTHESE| R|SENSITIVE_OBSERVATION| SENSITIVITY|true |
14| 5| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abaucourt |
15| 6| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt |
16| 6| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Aceria |
17| 6| SYNTHESE| R|SENSITIVE_OBSERVATION| SENSITIVITY|true |
18| 7| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abainville |
19| 8| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt |
Requête permettant d'afficher le tableau précédent:
SELECT
id_request_permission,
id_request,
tm.module_code AS id_module,
ta.code_action AS id_action,
tob.code_object AS id_object,
bft.code_filter_type AS id_filter_type,
CASE bft.code_filter_type
WHEN 'GEOGRAPHIC' THEN (SELECT area_name FROM ref_geo.l_areas la WHERE la.id_area = crp.value_filter::INTEGER)
WHEN 'TAXONOMIC' THEN (SELECT lb_nom FROM taxonomie.taxref t WHERE t.cd_nom = crp.value_filter::INTEGER)
ELSE value_filter
END AS value_filter
FROM gn_permissions.cor_requests_permissions crp
JOIN gn_commons.t_modules tm ON (crp.id_module = tm.id_module)
JOIN gn_permissions.t_actions ta ON (crp.id_action = ta.id_action)
JOIN gn_permissions.t_objects tob ON (crp.id_object = tob.id_object)
JOIN gn_permissions.bib_filters_type bft ON (crp.id_filter_type = bft.id_filter_type)
ORDER BY id_request_permission ;
Une question concernant, par exemple, la dernière demande d'accès id_request=8
, elle est sensée donner l'accès à la géolocalisation précise des observations privées (=PRIVATE_OBSERVATION
) sur la commune Abancourt
pour tout les taxons. Actuellement, je ne stocke pas d'entrée pour le filtre de type TAXONOMIC
. Mais si je parts de ton principe @TheoLechemia, il faudrait que stocke aussi une entrée pour le filtre TAXONOMIC
avec la valeur du filtre (=value_filter
) valant ALL
par exemple. Ou alors dans ce cas là, j'indique le cd_nom (349 525
) correspondant à "Biota", c'est à dire le taxon mère dans TaxRef.
Est ce que vous avez des préférences pour l'une ou l'autre de ces solutions ? Vous avez d'autres idées ?
Les modules concernés par les permissions d'accès aux données géo-confidentielles sont : Synthese
et Validation
. Le module Export n'est pas concerné car les vues sont crées par l'administrateur.
Les actions concernées sont pour Synthese
R
+E
(= Lecture + Export), pour Validation
R
+ (= Lecture V
+ Validation).
Le seul objet existant par défaut pour ces 2 modules est ALL
que l'on peut considérer comme correspondant aux observations présentes dans la table gn_synthese.synthese
.
Les filtres
actuels qui peuvent s'appliquer sur l'objet ALL
pour les modules et actions indiquées ci-dessus sont :
SCOPE
: contient une valeur parmi: 0 (=aucune observation), 1 (=Mes observations), 2 (=Observation de mon organisme) ou 3 (=Toutes les observations).GEOGRAPHIC
: contient un ou plusieurs cd_nom
séparés par des virgules.TAXONOMIC
: contient un ou plusieurs id_area
(table ref_geo.l_areas
) séparés par des virgules.SENSITIVITY
: contient soit DONNEES_DEGRADEES
soit DONNEES_PRECISES
. Il permet d'indiquer si l'observation doit être affichée de manière précise ou floutée.Fonctionnement par défaut de ces modules vis à vis des permissions:
ALL
qui correspond à "Toutes les observations"Les permissions héritées de GeoNature pour les 2 modules qui nous concernent et le groupe par défaut Grp_en_poste
sont les suivantes:
R
(=Lecture), accès à l'objet ALL
(=Toutes les observations) limité par le filtre de type SCOPE
(=Portée) avec la valeur 2 (=Observation de mon organisme).E
(=Exporter), accès à l'objet ALL
(=Toutes les observations) limité par le filtre de type SCOPE
(=Portée) avec la valeur 2 (=Observation de mon organisme).V
(=Valider), accès à l'objet ALL
(=Toutes les observations) limité par le filtre de type SCOPE
(=Portée) avec la valeur 0 (=Aucune observation).Cela signifie que par défaut un utilisateur qui vient juste de s'inscrire à GeoNature aura seulement accès aux données sensibles et privées de son organisme ou lui appartenant. L'utilisateur lorsqu'il s'inscrit via le formulaire d'inscription n'étant par défaut associé à aucun organisme, il n'aura bien aucune possibilité pour visualiser/exporter les observations privées ou sensibles dans le module Synthese
, ni les visualiser/valider dans le module Validation
(le filtre portée ayant une valeur indiquant "aucune observation" pour ce dernier module).
L'objet principal correspond à ALL
et concerne toutes les observations présentes dans la table gn_synthese.synthese
. Nous pourrions distinguer 3 sous-type d'observation:
PRIVATE_OBSERVATION
)PUBLIC_OBSERVATION
)SENSITIVE_OBSERVATION
)
Cela correspond à ce schéma:
Ces 3 types d'observations devraient correspondre à 3 objets distincts sur lesquels appliquer des permissions pour les modules Synthese
et Validation
.Le filtre SENSITIVITY
devrait être renommé pour indiquer plutôt le type de précision à utiliser. Les valeurs du filtre pourraient aussi être remplacé par un booléen. Ces modifications permettraient de le réutiliser pour les observations privées qui sont aussi concernées par la notion de géo-confidentialité. Il ne s'applique donc qu'aux objets de types observations privées et observations sensibles.
Propositions de nouveau nom de type et de nouvelles valeurs:
PRECISION
: avec les valeurs fuzzy
ou exact
.BLURRING
(=floutage) : avec les valeurs true
ou false
GEOCONFIDENTIALITY
: avec les valeurs enable
et disable
.Si l'utilisateur n'a aucune permission indiquant une valeur pour le filtre "" SENSITIVITY
PRECISION
devons nous afficher ou pas les observations privées et sensible de manière précises ?
Il me semble que le comportement des modules étant de ne rien afficher en l'absence de permission, nous devrions afficher ces données de manière floutée dans ce cas là. Cela va dans le sens des recommandations du SINP.
Si le comportement par défaut des modules est de flouter les observations privées et sensible, la valeur du filtre SENSITIVITY indiquant un floutage (= true
ou fuzzy
) peut sembler inutile. Toutefois, elle pourrait être utilisé pour forcer à nouveau le floutage d'un sous-ensemble d'observations préalablement rendues précises par une permission plus large. Elle est donc bien nécessaire.
Voici des exemples de contenu de la table cor_requests_permissions
en fonction de différents types de demande d'accès (cf. formulaire de demande) si nous appliquons les modifications précédentes.
Dans les tableaux ci-dessous, les identifiant sont remplacés par les codes correspondants afin de faciliter la compréhension.
Accès aux observations privées précises pour tous les groupes taxonomiques limité par zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
5| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
6| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
7| 1| VALIDATION| V| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| V| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
Accès aux observations privées précises limité à certains groupes taxonomiques sur certaines zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
5| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
6| 1| SYNTHESE| E| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
7| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| VALIDATION| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
10| 1| VALIDATION| V| PRIVATE_OBSERVATION| PRECISION|exact |
11| 1| VALIDATION| V| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
12| 1| VALIDATION| V| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
Accès aux observations privées et sensibles précises pour tous les groupes taxonomiques limité par zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
5| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
6| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
7| 1| VALIDATION| V| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| V| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| PRECISION|exact |
10| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
11| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| PRECISION|exact |
12| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
13| 1| VALIDATION| R|SENSITIVE_OBSERVATION| PRECISION|exact |
14| 1| VALIDATION| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
15| 1| VALIDATION| V|SENSITIVE_OBSERVATION| PRECISION|exact |
16| 1| VALIDATION| V|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
Accès aux observations privées et sensibles précises limité à certains groupes taxonomiques sur certaines zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
5| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
6| 1| SYNTHESE| E| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
7| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| VALIDATION| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
10| 1| VALIDATION| V| PRIVATE_OBSERVATION| PRECISION|exact |
11| 1| VALIDATION| V| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
12| 1| VALIDATION| V| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
13| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| PRECISION|exact |
14| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
15| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
16| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| PRECISION|exact |
17| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
18| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
19| 1| VALIDATION| R|SENSITIVE_OBSERVATION| PRECISION|exact |
20| 1| VALIDATION| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
21| 1| VALIDATION| R|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
22| 1| VALIDATION| V|SENSITIVE_OBSERVATION| PRECISION|exact |
23| 1| VALIDATION| V|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
24| 1| VALIDATION| V|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
Après réflexion, je ne suis pas certain qu'une demande de permission doive donner des permissions par défaut pour le module "Validation". À la limite, une demande pourrait donner des permissions pour l'action "Lire (R)" mais pas pour "Valider (V)". Qu'en pensez vous ?
Cela donnerait les permissions suivantes:
Accès aux observations privées précises limité à certains groupes taxonomiques sur certaines zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
5| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
6| 1| SYNTHESE| E| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
7| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| VALIDATION| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
Accès aux observations privées et sensibles précises pour tous les groupes taxonomiques limité par zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
5| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
6| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
7| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| PRECISION|exact |
8| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| PRECISION|exact |
10| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
11| 1| VALIDATION| R|SENSITIVE_OBSERVATION| PRECISION|exact |
12| 1| VALIDATION| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
Accès aux observations privées et sensibles précises limité à certains groupes taxonomiques sur certaines zones géographiques:
id_request_permission|id_request|id_module |id_action|id_object |id_filter_type|value_filter |
---------------------|----------|-----------|---------|---------------------|--------------|------------------------|
1| 1| SYNTHESE| R| PRIVATE_OBSERVATION| PRECISION|exact |
2| 1| SYNTHESE| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
3| 1| SYNTHESE| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
4| 1| SYNTHESE| E| PRIVATE_OBSERVATION| PRECISION|exact |
5| 1| SYNTHESE| E| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
6| 1| SYNTHESE| E| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
7| 1| VALIDATION| R| PRIVATE_OBSERVATION| PRECISION|exact |
8| 1| VALIDATION| R| PRIVATE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
9| 1| VALIDATION| R| PRIVATE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
10| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| PRECISION|exact |
11| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
12| 1| SYNTHESE| R|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
13| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| PRECISION|exact |
14| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
15| 1| SYNTHESE| E|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
16| 1| VALIDATION| R|SENSITIVE_OBSERVATION| PRECISION|exact |
17| 1| VALIDATION| R|SENSITIVE_OBSERVATION| GEOGRAPHIC|Abancourt,Abreschviller |
18| 1| VALIDATION| R|SENSITIVE_OBSERVATION| TAXONOMIC|Quercus,Juniperus |
Au final, une première version a été implémentée avec l'utilisation de 2 objets (PRIVATE_OBSERVATION
et SENSITIVE_OBSERVATION
) et d'un filtre PRECISION
possédant 2 valeurs "fuzzy
" et "exact
".
Ces notions permettent de gérer le floutage ou l'affichage précis des observations du module Synthèse en fonction de :
Le floutage des observations affichées et exportées via la Synthèse est réalisé au niveau de l'API Python. Il vient s'intercaler dans le web service renvoyant le geojson à la Synthèse après la requête des observations filtrées et avant de renvoyer le geojson.
Si activé, il se charge de rechercher pour chaque observation renvoyée par la requête de filtrage l'entité géographique de floutage correspondant au niveau de diffusion (priorité 1) ou de sensibilité (priorité 2) à l'aide d'une requête UNION
. Dans le fichier de config de GeoNature, nous avons les paramètres suivant qui établissent la correspondance entre les niveaux de floutage et le type de zone géographique à utiliser :
[DATA_BLURRING]
# Activer (=true) l'affichage du floutage des données.
ENABLE_DATA_BLURRING = true
# Correspondance entre les niveau de diffusion (nomenclaure NIV_PRECIS)
# et un type de zone géographique utilisée pour le rendu sur les cartes.
AREA_TYPE_FOR_DIFFUSION_LEVELS = [
{level = "0", area = "M5"},# Standard
{level = "1", area = "M5"},# Commune
{level = "2", area = "M5"},# Maille
{level = "3", area = "M10"},# Département
]
# Correspondance entre les niveau de sensibilité (nomenclaure SENSIBILITE)
# et un type de zone géographique utilisée pour le rendu sur les cartes.
AREA_TYPE_FOR_SENSITIVITY_LEVELS = [
{level = "1", area = "M5"},# Commune
{level = "2", area = "M5"},# Maille
{level = "3", area = "M10"},# Département
]
La présence de permissions autorisant l'affichage précis des données privées ou sensibles va tout simplement retirée (anti-join) pour chaque partie (niveau de diffusion et sensibilité) de la requête de floutage les observations correspondants aux filtres des permissions de l'utilisateur.
Tout ceci est actuellement fonctionnel et mis en production sur les SINP PACA et AURA.
OK c'est un sujet dense et complexe, et je n'ai pas tout en tête.
Mais j'avais souvenir que pour le calcul du floutage, on ne s'appuierait que sur le champs diffusion_level, lui-même s'appuyant sur la valeur de sensibilité éventuellement surcouché.
Sinon je me demande pourquoi il est utile de paramétrer les correspondances des niveaux de diffusion avec des types de zonages, car j'avais en tête que c'était défini au niveau des nomenclatures du SINP des différents niveaux de diffusion ?
Non, les champs "diffusion_level" et "sensibilité" sont bien 2 valeurs distinctes. Une personne qui a accès aux données privées n'a pas forcément accès aux données sensibles. Du coup, il faut bien gérer séparément ces deux notions. Il y a d'ailleurs des permissions pour gérer ces 2 types d'information. Cependant rien n’empêche d'ajouter un trigger qui peut se charger d'adapter le niveau de diffusion en fonction du niveau de sensibilité...
La correspondance entre niveau de diffusion ou sensibilité et les zonages a été proposée par @amandine-sahl . C'est une fonctionnalité vraiment intéressante pour :
Voir le ticket #770 pour le contexte générale de ce ticket. Pour rappel, le cahier des charges / suivi du développement est disponible sur ce lien.
En bref:
ENABLE_ACCESS_REQUEST
).access-request
dans le nouveau modulepermission
permettant de fournir un formulaire de demande de permissions d'accès.ENABLE_CONVENTION
) pour rappeler le texte d'une convention entre l'utilisateur et la structure hébergeant l'instance de GeoNature. Texte personnalisable par l'intermédiaire d'un composant et des paramètresCONVENTION_TITLE
etCONVENTION_VALIDATE
.Ajout des paramètres de configuration suivant: