Filtrer les données par utilisateur

Principe

Habituellement, la gestion des droits d’accès aux projets Lizmap se fait par répertoire. La configuration se fait dans ce cas via l’interface d’administration de Lizmap Web Client. Voir Définir les droits pour chaque groupe. Cela permet de masquer complètement certains projets en fonction des groupes d’utilisateurs, mais oblige une gestion par répertoire et projet.

Au contraire, la fonctionnalité de filtrage présentée ici permet de publier un seul projet QGIS, et de filtrer les données affichées sur la carte en fonction de l’utilisateur connecté. Il est possible de filtrer uniquement les couches vectorielles, car Lizmap se base sur une colonne de la table attributaire.

Le filtrage se base sur l’identifiant du groupe de l’utilisateur actuellement connecté à l’application Web. Il est actif pour toutes les requêtes vers le serveur QGIS, et concerne donc :

  • les images des couches vectorielles affichées sur la carte

  • les popups. Lire Popup

  • les listes de la fonction Localiser par couche. Voir La localisation par couche

  • les listes déroulantes des formulaires d’édition issues de Valeur relationnelle. Voir Édition

  • les fonctionnalités à venir (affichage de la table attributaire, fonctions de recherche, etc.)

Exemple

Un tutoriel vidéo est disponible à cette adresse : https://vimeo.com/83966790

Configurer l’outil

Pour utiliser l’outil de filtrage des données dans Lizmap Web Client, il faut :

  • Besoin de QGIS 2 sur le serveur

  • avoir accès à l’interface d’administration de Lizmap Web Client

Voici le détail des étapes pour configurer cette fonctionnalité :

Avertissement

Dans l’administration de Lizmap Web Client, dans les propriétés du répertoire, assurez-vous que anonymous et d’autres groupes pertinents ne sont pas cochés pour Toujours voir les données de couches, même si filtrées par login. Voir Définir les droits pour chaque groupe.

  • Vérifiez l’ID de groupe ou l’ID utilisateur dans l’interface d’administration :

    • Pour connaître l’ID du groupe, vous devez vous rendre dans l’interface d’administration SYSTEM ‣ Groupes d’utilisateurs pour les droits : L’ID apparaît entre parenthèses après le nom de chaque groupe (sous le titre Groupes de nouveaux utilisateurs)

    • Ou pour connaître l’identifiant de l’utilisateur, il suffit d’utiliser son login.

  • Pour toutes les couches vectorielles dont on veut filtrer les données, il suffit d’ajouter une colonne de texte qui contiendra l’ID de chaque ligne qui a le droit d’afficher cette caractéristique.

    • Remplir cette colonne pour chaque ligne de la table attributaire avec l’ID (en utilisant la calculatrice, par exemple).

    • Il est possible de définir all comme valeur pour certaines entités pour désactiver le filtre : Tous les utilisateurs verront les données de ces entités.

    • Si la valeur contenue dans cette colonne pour une ligne ne correspond pas à un des groupes d’utilisateurs, alors la donnée ne sera affichée pour aucun utilisateur.

../../_images/interface-add-filter-by-login.jpg
  • Ajoutez la couche dans le panneau Filtrer les données par utilisateur :

    1. Cliquer sur le bouton add_layer_svg.

    2. Sélectionnez la couche dans la liste déroulante

    3. Sélectionnez la champ avec l’ID

    4. Cochez la case si le champ contient un ID utilisateur, plutôt qu’un ID de groupe

  • Pour éditer une couche dans la table, sélectionner la et cliquer sur le bouton edit_layer_svg ou alors double-cliquer sur la ligne.

  • Pour supprimer une couche de la table, cliquez sur celle-ci puis sur le bouton remove_layer_svg.

Avertissement

Désactivez le cache client et serveur pour toutes les couches filtrées. Sans cela, les données affichées ne seront pas mises à jour entre chaque connexion ou déconnexion de l’utilisateur !

Édition

Si vous avez activé l’édition (voir Édition) sur la couche filtrée, le champ contenant l’ID sera éditable avec :

  • soit une liste déroulante pour un non administrateur avec soit son propre login ou all

  • ou un éditeur de texte pour écrire une valeur lors d’un utilisateur admin