diff --git a/doc/source/_static/css/custom.css b/doc/source/_static/css/custom.css index ea94ab7d99b29c2e5b2a75efe0db67826b29b28d..97cd3922b8f3de7e73fae1f5e675abadd14ea8f9 100644 --- a/doc/source/_static/css/custom.css +++ b/doc/source/_static/css/custom.css @@ -43,3 +43,21 @@ content : ''!important; visibility: hidden; } + +/** bouton dropdown amonition */ +button.toggle-button { + font-family: inherit; + font-size: 18px; + color: white; + font-weight: 700; + top: 2px !important; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +svg.tb-icon { + margin-top: 0px; + padding: 0px; +} \ No newline at end of file diff --git a/doc/source/_static/js/custom.js b/doc/source/_static/js/custom.js new file mode 100644 index 0000000000000000000000000000000000000000..0b955f4033386320886e010c59b7b83bf67bc2db --- /dev/null +++ b/doc/source/_static/js/custom.js @@ -0,0 +1,26 @@ +document.addEventListener('DOMContentLoaded', () => { + // fonction pour ouvrir les liens externes dans un nouvel onglet + document.querySelectorAll('a.reference.external').forEach(function(link) { + link.target = '_blank'; + }); + // renplacement du data-toggle-hint pour que le texte des dropdowns soit en Français, sans toucher à la librairie + document.querySelectorAll('p.admonition-title > button.toggle-button.toggle-button-hidden').forEach((elem) => { + // il y a un bug lors de la première ouverture du dropdown, donc je simule une ouverture pour l'éviter + // un seul click : ouvert, deux clicks : fermé + elem.click(); + // elem.click(); + elem.setAttribute('data-toggle-hint', 'Cliquez pour dévoiller') + }) + + // Permet de rajouter l'ouverture d'image dans un nouvel onglet au click, permet de voir l'image plus zoomée + const imgs = document.querySelectorAll("img"); + for (const img of imgs) { + // Prepare link + const link = document.createElement("a"); + link.href = img.src; + link.target = "_blank"; + // Reparent img tag + img.replaceWith(link); + link.append(img); + } + }); \ No newline at end of file diff --git a/doc/source/administrator/index.rst b/doc/source/administrator/index.rst index 441baea252f2071ebff8ae912d1d21abd088df56..4807371844fac6387de149fd80dacb7609bd44bd 100644 --- a/doc/source/administrator/index.rst +++ b/doc/source/administrator/index.rst @@ -11,6 +11,7 @@ Il est conseillé aux administrateurs de consulter en premier la `Documentation :maxdepth: 2 authentification/index.rst + rights/index.rst users.md configuration/index.rst api/api.rst diff --git a/doc/source/administrator/rights/auth_token.md b/doc/source/administrator/rights/auth_token.md new file mode 100644 index 0000000000000000000000000000000000000000..9ac4e1b158ae5945e70b4c6f991ddb01122b069a --- /dev/null +++ b/doc/source/administrator/rights/auth_token.md @@ -0,0 +1 @@ +# Gestion des jetons de connexion \ No newline at end of file diff --git a/doc/source/administrator/rights/data.md b/doc/source/administrator/rights/data.md new file mode 100644 index 0000000000000000000000000000000000000000..0a0520142cf1737c37697446c4d9a21aae2bd9cd --- /dev/null +++ b/doc/source/administrator/rights/data.md @@ -0,0 +1,65 @@ +# Les droits portant sur les données + +La gestion des droits sur la données est une responsabilité administrateur, sa gestion revient donc à ceux-ci. + +## Introduction + +Bien que les privilèges permettent l'accès à certaines fonctionalités de l'application, et les groupes à certaines cartes et modèles d'impression, une autre notion importante à considérer quand à la gestion des droits, est la gestion des droits PostgreSQL. + +En effet, les droits PostgreSQL permettent à l'administrateur de définir quels sont les droits dont les utilisateurs disposent sur une donnée (une table / vue). + +Rajouter des droits à ces éléments permet notamment à l’utilisateur final de pouvoir réaliser des actions différentes sur une donnée visualisée dans vMap2 (consultation, saisie, édition ou suppression d’une donnée géographique et attributaire). + +Une mauvaise gestion, ou un oubli de ceux-ci pourraient entraîner l'impossibilité pour un utilisateur d'exploiter certaines données dans vMap2. + +## Fonctionnement + +```{info} +Le tutoriel suivant est illustré avec le client SQL pgadmin. +Le fonctionnement peut différer légerement pour d'autres clients (DBeaver, phpMyAdmin, ...). +Le principe est que le code SQL reste cependant le même. +``` + +Pour cet exemple, j'aimerais rajouter le privilège `exploitant_ville` sur ma table `data_demo_vmap`.`f_villes_l93`, afin qu'un utilisateur ayant ce privilège puisse utiliser/mettre à jour/supprimer les données de ma couche `ville` utilisant cette table. + +```{note} +Le fonctionnement et la création d'un privilège est expliqué dans la [section suivante](./privilege.md). +``` + + + +Pour ajouter des droits sur une table, il faut tout d'abbord ouvrir un client SQL. + +Il faut ensuite effectuer une connexion à la base de données contenant la structure de vMap. + + + +Une fois connecté, je navigue dans ma base via le menu latéral jusqu'à trouver la table concernée : + + + +Une fois la table trouvée, il faut faire un clique droit dessus, option "properties...", dans la nouvelle fenêtre qui s'ouvre, cliquer sur l'onglet "Security". + + + +En cliquant sur le signe "+" de la ligne "Privileges", il m'est possible d'ajouter un nouvel utilisateur/groupe à ma table, je vais donc rajouter mon privilège `exploitant_ville`, avec les droits `SELECT`, `INSERT`, `UPDATE`, `DELETE` afin qu'il puisse gérer les données de la table. + + + +Une fois ceci fait, il me suffit de sauvegarder, et l'utilisateur ayant le privilège `exploitant_ville` pourra maintenant consulter, ajouter, mettre à jour et supprimer des données dans cette table. + +:::{admonition} **Gérer les droits en SQL** +:class: dropdown important +Il est également possible d'atteindre le même résultat en pur SQL. + +En utilisant l'éditeur de requêtes, par exemple via ce bouton sur pgadmin: + + +Il est possible de rajouter les droits `SELECT`, `INSERT`, `UPDATE`, `DELETE` à la table `data_demo_vmap`.`f_villes_l93` pour le groupe `exploitant_ville` avec la requête suivante : + +```sql +GRANT SELECT, INSERT, UPDATE, DELETE ON data_demo_vmap.f_villes_l93 TO exploitant_ville; +``` + +Cette requête aboutit au même résultat que les étapes au-dessus. +::: \ No newline at end of file diff --git a/doc/source/administrator/rights/group.md b/doc/source/administrator/rights/group.md new file mode 100644 index 0000000000000000000000000000000000000000..5e3ff3e1c38c2e0b1a6bf76b66561edb581c2469 --- /dev/null +++ b/doc/source/administrator/rights/group.md @@ -0,0 +1,78 @@ +# Les groupes + +Les groupes de vMap sont une fonctionnalité administrateur, la charge de leur gestion revient donc à ceux-ci. + +## Principe + +Un groupe sur vMap est une manière de grouper des utilisateurs, afin de faciliter leur gestion sur beaucoup d'aspects. + +## Utilité + +Un groupe dans vMap peut-être, et sont dans certains cas, de manière obligatoire, utilisés dans différentes parties de l'application afin de permettre un accès à certaines ressources de l'application à l'ensemble des membres du groupe. + +:::{admonition} **Détail de l'utilité des groupes** +:class: dropdown important + +Les groupes de vMap sont utilisés aux emplacements suivants : + +Au niveau des "informations générales" à l'édition d'une carte, afin de permettre l'accès aux cartes + + +Au niveau des "informations générales" des modèles d'impression, afin de permettre aux utilisateurs du groupe d'utiliser un modèle d'impression + + +::: + +## Création + +Il existe actuellement deux manières de créer un groupe dans vMap2 : + +- Via l'interface de création des groupes +- Via l'import de groupes de l'interface AD/LDAP + +### Création de groupe via l'interface + +Il est possible d'ajouter un nouveau groupe dans l'interface "Utilisateurs" > "Groupes", puis en cliquant sur le bouton "Ajouter" en haut à droite : + + + +Il suffit ensuite de saisir un nom pour le groupe, de cliquer sur les utilisateurs à ajouter et de les déplacer dans le menu de droite pour les ajouter, puis de cliquer sur le bouton "Créer". + + + + +### Création de groupes via l'import de l'AD/LDAP + +Il est également possible de créer des groupes en important des groupes d'un AD lié à vMap2. + +Pour ce faire, il faut se rendre dans la section "Utilisateurs" > "Domaines" et cliquer sur le bouton en forme de crayon associé au domaine que l'on veut modifier. + +```{tip} +Un tutoriel sur le fonctionnement de l'ajout d'un AD ou d'un LDAP est disponible au [lien suivant](#). +``` + + + +Une fois dans ce menu, il est ensuite possible d'ajouter les groupes dans vMap2 en allant dans la sous-section "Liste des groupes", en sélectionnant plusieurs groupes en cliquant dessus, puis en cliquant sur le bouton "Importer". + + + +:::{admonition} **Synchronisation des groupes AD/LDAP avec vMap2** +:class: dropdown important + +Il est possible de synchroniser les groupes avec l'annuaire, dans ce cas un script viendra mettre à jour le lien entre les utilisateurs de ce domaine et ce groupe à interval régulier. + +La synchronisation est à configurer dans la [configuration](../configuration/active_directory.md). + +Il est ensuite possible d'activer ou désactiver la synchronisation dans le menu du groupe, à noter qu'il est également possible de la faire manuellement via le bouton "Synchroniser". + + + +::: + +```{note} +Le fonctionnement est légérement différent de ce que l'application faisait en version 2019 et antérieur. +Les groupes ne sont plus vérifiés par rapport à l'annuaire systématiquement à chaque fois, les groupes locaux sont toujours utilisés, en revanche il est possible de rafraichir le lien local régulièrement pour suivre les modification faites sur l'annuaire. +``` + +Les groupes fonctionnent par la suite comme des groupes vMap normaux \ No newline at end of file diff --git a/doc/source/administrator/rights/index.rst b/doc/source/administrator/rights/index.rst new file mode 100644 index 0000000000000000000000000000000000000000..acc0be5efddfe9b807109441b95f84d4102e3ef3 --- /dev/null +++ b/doc/source/administrator/rights/index.rst @@ -0,0 +1,17 @@ +Gestions des droits +============================================ + +-------------- + +Cette section concerne la gestion de l'intégralité des droits de l'application vMap, c'est à dire leur utilité, leur fonctionnement, leur portée, ... + +============================================ + +.. toctree:: + :maxdepth: 2 + + group.md + privilege.md + data.md + restriction.md + auth_token.md \ No newline at end of file diff --git a/doc/source/administrator/rights/privilege.md b/doc/source/administrator/rights/privilege.md new file mode 100644 index 0000000000000000000000000000000000000000..4d82bcbe18f4063931155eef15ffe5fe7e202fc1 --- /dev/null +++ b/doc/source/administrator/rights/privilege.md @@ -0,0 +1,53 @@ +# Les privilèges + +Les privilèges sont une notion administrateur, leur gestion revient donc à ceux-ci. + +## Fonctionnement + +Les privilèges sont l'essence de l'application, ce sont ceux-ci qui permettent l'accès aux différentes fonctionnalités dans l'application. + +Il existe deux types types de privilèges : + +- Les privilèges propres à l'application, ceux-ci ne doivent pas être modifiés, édités, ou supprimés, sous peine d'une impossibilité d'utiliser l'application par la suite. +- Les privilèges créés par l'administrateur de l'application, qui servent souvent à limiter l'accès aux donnés. + +## Privilèges de vMap + +vMap contient une liste de privilèges permettant d'autoriser l'accès à différentes parties de l'application : + +- `vmap_user:` Il s'agit du droit le plus basique pour utiliser vMap, il permet l'accès à la cartographie, ainsi qu'à toutes les fonctionnalités associées à celle-ci (requêteur, filtre, sélection, ...). + +- `vmap_admin:` Il permet d'accéder à la partie administration de l'application, c'est à dire l'ajout de couches/flux, la gestion de ceux-ci, la gestion des thèmes, des sources de données, des systèmes de coordonnées et des symboles et polices d'écriture. + +- `vmap_data_manager:` permet à l'utilisateur d'avoir accès au mode "tableau", et ses différentes fonctionnalités, à savoir ajouter, supprimer ou modifier de la donnée. + +En plus des privilèges vMap2, certains autres privilèges sont disponibles pour les accès aux fonctionnalités du noyau : + +- `vitis_user` : permet de se connecter à l'application et de configurer son utilisateur. + +- `vitis_admin` : permet l'accès aux modes pour gérer les utilisateurs, domaines, groupes, jetons de connexions, logs, modèles d'email, interface et configuration de l'application. Il a en charge la gestion des paramètres système et de la configuration de vMap. Il accède également dans le mode API à la documentation relative à l'API de vMap. + +- `vitis_shared` : permet de gérer l'arborescence du dossier shared, qui est un dossier partagé entre plusieurs utilisateurs pour partager des ressources. + +## Gestion des privilèges + +La gestion des privilèges est accessible via l'interface des privilèges disponible dans "Utilisateurs" > "Privilèges". +L'accès à l'interface nécessite le droit `vitis_admin` + + + +Il est ensuite possible de créer des nouveaux privilèges via le bouton "Ajouter", ou d'en modifier via le crayon : + + + +Il suffit ensuite de renseigner ou modifier les différentes informations, ainsi qu'associer les utilisateurs via la liste, puis d'appuyer sur le bouton "Créer"/"Modifier". + + + +```{tip} +Il est également possible d'ajouter des privilèges à un utilisateur via le formulaire d'ajout/modification d'un utilisateur, au chemin "Utilisateurs" > "Utilisateurs". + + + + +``` \ No newline at end of file diff --git a/doc/source/administrator/rights/restriction.md b/doc/source/administrator/rights/restriction.md new file mode 100644 index 0000000000000000000000000000000000000000..2c1f7eb5748caaa55ec58d2651f404b2fffdfbcb --- /dev/null +++ b/doc/source/administrator/rights/restriction.md @@ -0,0 +1,6 @@ +# Les restrictions (ex: restriction communales) + +Les restrictions sont un principe qui permet à un adminstrateur de restreindre l'accès à un utilisateur, à certaines données uniquement, contre un peu de configuration côté application et base de données. + +Ce principe est par exemple très utilisé au niveau des données cadastrale, afin de mettre en place des restrictions communale sur les données cadastrales, en renseignant par exemple le code INSEE d'une ou plusieurs commune, afin que l'utilisateur n'ait accès qu'aux données cadastrales nécessaires à son travail sur l'application. + diff --git a/doc/source/conf.py b/doc/source/conf.py index 176f292e239b6ac587d32c6c745fa2618e8cf95a..0ace35e10da3bed0c99b872e85756c6807a576bb 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -54,6 +54,7 @@ extensions = [ 'sphinx.ext.coverage', 'sphinx.ext.mathjax', 'sphinx.ext.autosectionlabel', + 'sphinx_togglebutton', 'myst_parser', 'sphinx.ext.viewcode', ] @@ -116,6 +117,10 @@ html_css_files = [ 'css/custom.css', ] +html_js_files = [ + 'js/custom.js', +] + # All the foremat supported source_suffix = { '.rst': 'restructuredtext', diff --git a/doc/source/images/administrator/rights/data/ajout_droit.png b/doc/source/images/administrator/rights/data/ajout_droit.png new file mode 100644 index 0000000000000000000000000000000000000000..cee1552e2cbab0de905181c3335fb0a4f40d4f77 Binary files /dev/null and b/doc/source/images/administrator/rights/data/ajout_droit.png differ diff --git a/doc/source/images/administrator/rights/data/connexion_base.png b/doc/source/images/administrator/rights/data/connexion_base.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7ef66ee6ec41fd875b5e004ced8bdf01c0b936 Binary files /dev/null and b/doc/source/images/administrator/rights/data/connexion_base.png differ diff --git a/doc/source/images/administrator/rights/data/onglet_securite.png b/doc/source/images/administrator/rights/data/onglet_securite.png new file mode 100644 index 0000000000000000000000000000000000000000..4c658999f22a6a63f1e777b267c72424948df1a9 Binary files /dev/null and b/doc/source/images/administrator/rights/data/onglet_securite.png differ diff --git a/doc/source/images/administrator/rights/data/privilege_gestion_droits.png b/doc/source/images/administrator/rights/data/privilege_gestion_droits.png new file mode 100644 index 0000000000000000000000000000000000000000..8641f6156f00b8ba8d0171cdb3530215be9886f2 Binary files /dev/null and b/doc/source/images/administrator/rights/data/privilege_gestion_droits.png differ diff --git a/doc/source/images/administrator/rights/data/query_tool.png b/doc/source/images/administrator/rights/data/query_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..44c4d08b8a7463358b24fb2e2e511cd3835c2e66 Binary files /dev/null and b/doc/source/images/administrator/rights/data/query_tool.png differ diff --git a/doc/source/images/administrator/rights/data/table_menu_lateral.png b/doc/source/images/administrator/rights/data/table_menu_lateral.png new file mode 100644 index 0000000000000000000000000000000000000000..b67637c020c5cd2efac29fb4aaaa49e1a744ead7 Binary files /dev/null and b/doc/source/images/administrator/rights/data/table_menu_lateral.png differ diff --git a/doc/source/images/administrator/rights/group/ad_ldap_sync.png b/doc/source/images/administrator/rights/group/ad_ldap_sync.png new file mode 100644 index 0000000000000000000000000000000000000000..d2387207d05724340598b518868514f762071a2a Binary files /dev/null and b/doc/source/images/administrator/rights/group/ad_ldap_sync.png differ diff --git a/doc/source/images/administrator/rights/group/add_group_vitis.png b/doc/source/images/administrator/rights/group/add_group_vitis.png new file mode 100644 index 0000000000000000000000000000000000000000..e1eb6ad67a0851db038e121e1edc7512f10af806 Binary files /dev/null and b/doc/source/images/administrator/rights/group/add_group_vitis.png differ diff --git a/doc/source/images/administrator/rights/group/edit_ad_ldap.png b/doc/source/images/administrator/rights/group/edit_ad_ldap.png new file mode 100644 index 0000000000000000000000000000000000000000..8a08a242096d83ae3f275e8cf98bb00728ba44f2 Binary files /dev/null and b/doc/source/images/administrator/rights/group/edit_ad_ldap.png differ diff --git a/doc/source/images/administrator/rights/group/groupe_carte.png b/doc/source/images/administrator/rights/group/groupe_carte.png new file mode 100644 index 0000000000000000000000000000000000000000..93b25f9b77ab10866d78277923f492151ae7e9ce Binary files /dev/null and b/doc/source/images/administrator/rights/group/groupe_carte.png differ diff --git a/doc/source/images/administrator/rights/group/groupe_modele_impression.png b/doc/source/images/administrator/rights/group/groupe_modele_impression.png new file mode 100644 index 0000000000000000000000000000000000000000..3646324b1f4c1f7035bca9aaad9c5b28d303b438 Binary files /dev/null and b/doc/source/images/administrator/rights/group/groupe_modele_impression.png differ diff --git a/doc/source/images/administrator/rights/group/import_ad_ldap.png b/doc/source/images/administrator/rights/group/import_ad_ldap.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b8e3d1bfc895b2fb65acd394ff50a72f47a675 Binary files /dev/null and b/doc/source/images/administrator/rights/group/import_ad_ldap.png differ diff --git a/doc/source/images/administrator/rights/group/insert_add_group_vitis.png b/doc/source/images/administrator/rights/group/insert_add_group_vitis.png new file mode 100644 index 0000000000000000000000000000000000000000..c39e29e0d8c63fa86a06d8a6964f569d463b7529 Binary files /dev/null and b/doc/source/images/administrator/rights/group/insert_add_group_vitis.png differ diff --git a/doc/source/images/administrator/rights/privileges/form_privileges.png b/doc/source/images/administrator/rights/privileges/form_privileges.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f94481c24bb4c3ddf521c822349438e7e6ae16 Binary files /dev/null and b/doc/source/images/administrator/rights/privileges/form_privileges.png differ diff --git a/doc/source/images/administrator/rights/privileges/form_users_privilege.png b/doc/source/images/administrator/rights/privileges/form_users_privilege.png new file mode 100644 index 0000000000000000000000000000000000000000..55a9dd0d9da73034ad4cf4e48b4c767f6a3b84a3 Binary files /dev/null and b/doc/source/images/administrator/rights/privileges/form_users_privilege.png differ diff --git a/doc/source/images/administrator/rights/privileges/interface_privileges.png b/doc/source/images/administrator/rights/privileges/interface_privileges.png new file mode 100644 index 0000000000000000000000000000000000000000..c8365bc32feba10ace6ecf25de233c96e312b619 Binary files /dev/null and b/doc/source/images/administrator/rights/privileges/interface_privileges.png differ diff --git a/doc/source/images/administrator/rights/privileges/interface_users.png b/doc/source/images/administrator/rights/privileges/interface_users.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bd7d540a4f7d4df65164e11ee17d6df8411149 Binary files /dev/null and b/doc/source/images/administrator/rights/privileges/interface_users.png differ diff --git a/doc/source/images/administrator/rights/privileges/privileges_gestion.png b/doc/source/images/administrator/rights/privileges/privileges_gestion.png new file mode 100644 index 0000000000000000000000000000000000000000..a93ed56288ec228a4ebf7f24205f41a07d14876d Binary files /dev/null and b/doc/source/images/administrator/rights/privileges/privileges_gestion.png differ