Filtrer les données par utilisateur

Principe

The filtering feature presented allows you to filter the data displayed on the map based on the logged in user. It is possible to filter only vector layers because Lizmap uses a column in the attribute table.

Filtering currently uses the ID of the user group connected. It’s active for all requests to QGIS server, and thus concerns:

  • 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
  • drop-down lists of Editing forms from Value relation. See Édition
  • the attribute table display etc

Il y a deux sortes de filtrage :

  • sur les attributs
  • sur une relation spatiale

Filtrage par relation spatiale

Principe

Dans ce panneau, vous pouvez :

  • configurer une couche polygonale comme une couche filtrante
  • configurer des couches qui doivent être filtrées par la couche filtrante
../../_images/filter-polygon.gif

Pré-requis

C’est une fonctionnalité dans Lizmap 3.5.

The Lizmap plugin in QGIS Server must be installed with at least Lizmap QGIS plugin 3.6. Otherwise, the filter won’t work and all data will be visible. See Lizmap QGIS Server plugin.

Configurer l’outil

../../_images/interface-filter-by-polygon.jpg
  1. Choisir la couche polygonale à utiliser pour filtrer

  2. Choisir le champ dans cette couche qui possède les groupes Lizmap, séparés par virgule.

  3. Pour ajouter une couche filtrée à cet outil :

    1. Cliquer sur le bouton add_layer_svg.
    2. Choisir la couche qu’il faut filtrer
    3. Choisir la clé primaire de la couche
    4. Choisir si le filtrage s’effectue sur l’affichage et l’édition ou alors seulement sur l’édition
    5. Choisir la relation spatiale soit intersection ou contient
  • 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.

Pour votre information, les performances sont meilleures avec des couches PostgreSQL : soit filtrante ou filtrée ou alors même les deux.

Filtrage par attribut

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 :

  • 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 :

    • To know group ID, you must go to the administration interface SYSTEM ‣ Groups of users for rights: ID appears in parentheses after the name of each group (under the title Groups of new users)
    • Ou pour connaître l’identifiant de l’utilisateur, il suffit d’utiliser son login.
  • For all vector layers which is desired filter data, just add a text column that will hold the ID for each line who has the right to display this feature.

    • Fill this column for each line of the attribute table with the ID (using the calculator, for example).
    • 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
  • Add the layer in the table Filter Data by User panel:

    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