= Pourquoi des filtres de recherche ?= Les filtres permettent de trouver des objets. Ils sont utilisable également pour composer automatiquement des groupes ou des alias mails via l'attribut {{{autoMemberFilter}}}: Avec cette configuration: {{{ autoMemberFilter: active=1 autoMemberFilter: memberOf=heberges autoMemberFilter: memberOf=internes }}} le groupe contiendra automatiquement touts les comptes actifs membre des groupes internes et heberges. = Fonctionnement = == Contexte == Pour alimenter les exemples la base contient 3 utilisateurs: * Alice Kitty * Allan Kitty * Bob Kitty Ils appartiennent aux groupes comme suit: * kitty: Alice, Allan et Bob * alkitty: Alice et Allan * bokitty: Bob Les 3 groupes sont gérés par Alice == Filtres == Les filtres de recherche s'écrive sous la forme {{{AttributeOpValue}}}, par exemple {{{sn=Kitty}}}. Tout les attributs ne peuvent pas être utilisés comme filtre aussi il faut toujours tester. Il est possible d'utiliser {{{la-cli}}} pour tester tester des filtres avec la fonction {{{search}}}: {{{ LA cli=> search user sn=Kitty alice allan bob }}} === Cas simples === ==== Les utilisateurs ayant le nom de famille 'Kitty' ==== {{{ LA cli=> search user sn=Kitty alice allan bob }}} ==== Les utilisateurs ayant le prénom Bob ==== {{{ LA cli=> search user givenName=Bob bob }}} ==== Les utilisateurs étant dans le groupe alkitty ==== Evidement le plus intéressant est le travail sur les groupes. {{{ LA cli=> search user memberOf=alkitty alice allan }}} A noter que la recherche inverse est possible, ainsi pour chercher les groupes dont est membre {{{alice}}}: {{{ LA cli=> search group member=alice alkitty kitty }}} ==== Chercher les objets ayant ou pas un attributs ==== Il est possible de chercher les ayants un attribut possitionné (avec la valeur {{{*}}}) ou non positionné avec la valeur {{{NULL}}} {{{ LA cli=> search user givenName=* alice allan bob LA cli=> search user company=NULL alice allan bob }}} === Recherche sur plusieurs critères === ==== Utiliser plusieurs filtres ==== Il est possible de donner plusieurs filtres pour effectuer une recherche. Les filtres portant sur le même attribut forme ensemble un ''ou'' conditionnel, s'ils portent sur des attributs différents ils forments des conditions ''et''. Ainsi je veux les utilisateurs dans les groupes {{{alkitty}}} et {{{bokitty}}}: {{{ LA cli=> search user memberOf=alkitty memberOf=bokitty alice allan bob }}} Par contre la recherche suivante trouvera les utilisateurs du groupe {{{alkitty}}} ayant comme prénom {{{Alice}}}: {{{ LA cli=> search user memberOf=alkitty givenName=Alice alice }}} Ou encore ceux étant dans le groupe {{{alkitty}}} ou {{{bokitty}}} mais ayant le prénom {{{Alice}}}: {{{ LA cli=> search user memberOf=alkitty memberOf=bokitty givenName=Alice alice }}} ==== Les switchs {{{||}}} et {{{&&}}} ==== Ces opérateurs permettent d'appliquer un ''ou'' ou ''et'' sur les valeurs recherchées. Ainsi pour chercher les utilisateurs qui sont à la fois dans les groupes {{{alkitty}}} et {{{kitty}}}: {{{ LA cli=> search user memberOf=alkitty&&kitty alice allan }}} Pour chercher les membres de {{{alkitty}}} ou {{{bokitty}}} {{{ LA cli=> search user memberOf=alkitty||bokitty alice allan bob }}} Notez que {{{memberOf=alkitty||bokitty}}} a le même effet que {{{memberOf=alkitty memberOf=bokitty}}} === Chercher des objets faisant références à d'autres objets === Certains attributs ont pour valeur l'identifiant d'autres objets. Ainsi l'attribut {{{memberOf}}} des objets {{{user}}} référence ds {{{group}}}. Il est alors possible de chercher les utilisateurs groupe ayant le GID 815: {{{ LA cli=> search user memberOf.gidNumber=815 alice allan }}} La requête se décompose ainsi: 1. On cherche les utilisateur avec comme critère initiale l'attribut {{{memberOf}}} 1. L'attribut {{{memberOf}}} reférence des objets de type {{{group}}} 1. On cherche les groupes ayant {{{gidNumber=815}}} 1. On cherche les utilisateurs ayant comme {{{memberOf}}} n'impoorte quelle valeur trouvé précédement. Sur le même principe il est possible de trouver tout les membres des groupes gérés par Alice: {{{ LA cli=> search user memberOf.managedBy=alice alice allan bob }}} Qui sont effactivement les membres des groupes {{{*kitty}}}: {{{ LA cli=> search group managedBy=alice alkitty bokitty kitty }}} === Les opérateurs de filtre === '''A partir de la version 6.1.2''' Il est possible via des opérateurs en début des filtre d'exclure ou d'inclure des résultats à la recherche. Exemple: {{{ LA cli=> search user memberOf=kitty alice allan bob LA cli=> search user memberOf=kitty -memberOf=alkitty bob }}} ==== Opérateur "-" ==== Cette opérateur '''exclu''' du résulat les entrées correspondantes à ce filtre Exemple: {{{memberOf=kitty -memberOf=alkitty}}} * {{{memberOf=kitty}}} selectionne les membres du groupe {{{kitty}}} * {{{-memberOf=alkitty}}} retire de la selection les membres du groupe {{{alkitty}}} {{{ LA cli=> search user memberOf=kitty alice allan bob LA cli=> search user memberOf=alkitty alice allan LA cli=> search user memberOf=kitty -memberOf=alkitty bob }}} ==== Opérateur "+" ==== Cette opérateur '''inclut''' au resulats les entrées correspondantes à ce filtre Exemple: {{{memberOf=kitty +memberOf=alkitty}}} * {{{memberOf=kitty}}} selectionne les membres du groupe {{{kitty}}} * {{{+memberOf=alkitty}}} ajoute ) la selection les membres du groupe {{{alkitty}}} {{{ LA cli=> search user memberOf=kitty alice allan bob LA cli=> search user memberOf=alkitty alice allan LA cli=> search user memberOf=kitty +memberOf=alkitty alice allan bob }}} ==== Opérateur "!" ==== Les resultats se limiteront forcément sur les résultats de ce filtre. Exemple: {{{memberOf=kitty !memberOf=alkitty}}} * {{{memberOf=kitty}}} selectionne les membres du groupe {{{kitty}}} * {{{!memberOf=alkitty}}} filtre les résultats sur les membres du groupe {{{alkitty}}} {{{ LA cli=> search user memberOf=kitty alice allan bob LA cli=> search user memberOf=kitty !memberOf=alkitty alice allan }}}