LdapSaisie

Benjamin Renard


          
          
        

Version 0.3


Table des matières

1. Introduction
1. Fonctionnalités
2. Installation
1. Pré-requis
2. Téléchargement
2.1. A partir du paquet Debian
2.2. A partir de Git
2.3. A partir des snapshot
3. Arborescence du projet
4. Tutoriel d'installation
3. Configuration
1. Configuration globale
1.1. Variables globales
1.1.1. Configuration des serveurs LDAP
1.1.1.1. Profils d'utilisateurs
1.1.1.2. Sous-niveaux de connexion
1.1.1.3. Récupération de mot de passe
1.2. Variables et constantes indépendantes
1.3. Format paramétrable
1.4. Paramètres étendus des recherches dans l'annuaire
2. Configuration LSobject
2.1. Configuration des attributs
2.1.1. Configuration des attributs LDAP
2.1.1.1. LSattr_ldap_ascii
2.1.1.2. LSattr_ldap_boolean
2.1.1.3. LSattr_ldap_compositeValueToJSON
2.1.1.4. LSattr_ldap_date
2.1.1.5. LSattr_ldap_image
2.1.1.6. LSattr_ldap_numeric
2.1.1.7. LSattr_ldap_password
2.1.1.8. LSattr_ldap_postaladdress
2.1.2. Configuration des attributs HTML
2.1.2.1. LSattr_html_boolean
2.1.2.2. LSattr_html_date
2.1.2.3. LSattr_html_image
2.1.2.4. LSattr_html_jsonCompositeAttribute
2.1.2.5. LSattr_html_labeledValue
2.1.2.6. LSattr_html_mail
2.1.2.7. LSattr_html_maildir
2.1.2.8. LSattr_html_mailQuota
2.1.2.9. LSattr_html_password
2.1.2.10. LSattr_html_postaladdress
2.1.2.11. LSattr_html_pre
2.1.2.12. LSattr_html_rss
2.1.2.13. LSattr_html_select_box
2.1.2.14. LSattr_html_select_list
2.1.2.15. LSattr_html_select_object
2.1.2.16. LSattr_html_ssh_key
2.1.2.17. LSattr_html_tel
2.1.2.18. LSattr_html_text
2.1.2.19. LSattr_html_textarea
2.1.2.20. LSattr_html_url
2.1.2.21. LSattr_html_valueWithUnit
2.1.2.22. LSattr_html_wysiwyg
2.1.2.23. LSattr_html_xmpp
2.1.3. Configuration des règles de vérification syntaxique
2.1.3.1. alphanumeric
2.1.3.2. callable
2.1.3.3. date
2.1.3.4. email
2.1.3.5. filesize
2.1.3.6. imagefile
2.1.3.7. imagesize
2.1.3.8. inarray
2.1.3.9. integer
2.1.3.10. lettersonly
2.1.3.11. maxlength
2.1.3.12. minlength
2.1.3.13. mimetype
2.1.3.14. nonzero
2.1.3.15. nopunctuation
2.1.3.16. numeric
2.1.3.17. password
2.1.3.18. rangelength
2.1.3.19. regex
2.1.3.20. required
2.1.3.21. ssh_pub_key
2.1.3.22. telephonenumber
2.1.4. Configuration des règles de vérification d'intégrité
2.1.4.1. Validation par l'analyse du résultat d'une recherche dans l'annuaire
2.1.4.2. Validation par l'exécution d'une fonction
2.1.5. Déclencheurs
2.1.5.1. Configuration
2.1.5.2. Ecriture d'une fonction
2.2. Création automatique du conteneur des LSobjets dans un subDn
2.3. Déclencheurs
2.3.1. Configuration
2.3.2. Ecriture d'une fonction
2.4. customActions
2.4.1. Ecriture d'une fonction implémentant une customAction
2.5. LSrelation
2.6. LSform
2.6.1. Configuration de l'affichage
2.6.2. Configuration des masques de saisie
2.7. LSsearch
2.7.1. customActions
2.7.1.1. Ecriture d'une fonction implémentant une customAction
2.8. ioFormat
2.8.1. Pilote d'ioFormat
2.8.1.1. Pilote de fichiers CSV
3. Configuration des LSaddons
3.1. LSaddon_asterisk
3.2. LSaddon_exportSearchResultAsCSV
3.3. LSaddon_mail
3.4. LSaddon_maildir
3.5. LSaddon_phpldapadmin
4. Configuration des LSauthMethods
4.1. LSauthMethod_HTTP
4.2. LSauthMethod_CAS
4.3. LSauthMethod_anonymous

Chapitre 1. Introduction

Table des matières

1. Fonctionnalités

LdapSaisie est une application web d'administration d'annuaire LDAP développée en PHP/Javascript. Cette application a pour but d'abstraire la complexité d'un annuaire par l'intermédiraire d'une interface d'administration simple et intuitive. L'application a été concue avec pour objectif premier une modularité maximum, ce qui permet l'extention ou l'adaptation facile de l'application par l'intermédiaire de modules, d'extentions et de greffons. Cette application peut être utilisée pour administrer le système d'information basé sur l'annuaire LDAP et également en paralèlle pour permettre aux utilisateurs d'avoir accès aux données les concernants et éventuellement de les modifier.

1. Fonctionnalités

De part sa modularité, LdapSaisie est facilement extensible. Cependant, voici une liste non-exhaustive de ses fonctionnalités :

  • Gestion d'annuaire simple et multi-branches
  • Gestion d'un nombre illimité de types d'objets
  • Gestion d'un nombre illimité de populations se connectant à l'interface
  • Gestion fine des droits des utilisateurs, permettant la maitrise des droits d'accès sur les objets de l'annuaire et leurs atributs, tout en permettant la délégation de droits.
  • Gestion d'un grand nombre de types d'attributs :

    • Texte (court ou long)
    • Date (format paramétrable)
    • Booléen (valeurs paramétrables)
    • Image/Photo
    • Mot de passe (génération de mot passe avec gestion d'une politique fine)
    • Adresse mail
    • Flux RSS
    • Lien web (URL)
    • Adresse XMPP
    • Maildir
    • Quota de mails
    • Clef publique SSH
    • Liste déroulante à choix simple ou multiple
    • Relation à d'autres objets de l'annuaire/ Exemple : membres d'un groupe, parrain d'un utilisateur, ... (valeur clé paramétrable)
    [Note]Note

    Chaque type d'attribut à des fonctionnalités qui lui sont propres et qui rendent plus facile et agréable l'utilisation de l'interface (génération automatique de mot de passe, génération des valeurs d'un champ à partir d'autres, ...).

  • Gestion d'un grand nombre de règles de vérification des valeurs des attributs :

    • Alpha-numérique
    • Lettres uniquement
    • Longeur maximale/minimale d'une chaine de caractères
    • Valeur différente de zéro
    • Pas de signe de ponctuation
    • Valeur numérique
    • Comparaison de valeur
    • Date
    • Adresse mail
    • Poids d'une image
    • Taille d'une image
    • Type de fichiers images
    • Politique de mot de passe (longueur/caractères autorisés/caractères obligatoires)
  • Gestion simplifiée des relations entre les objets de l'annuaire
  • Interface facilement personnalisable grâce à l'utilisation d'un système de template.
  • Possibilité de postionner des déclencheurs permettant d'exécuter vos propres scripts, fonctions ou méthodes au moments précis ou l'utilisateur créé, modifie ou supprime un objet ou un de ses attributs. Ces déclencheurs, en fonction de leur positionnement, peuvent influencer le comportement de l'application en empêchant par exemple, la validation des données d'un formulaire.
  • Gestion fine de l'affichage des attributs en fonction de l'écran (=vue) sur lequel se trouve l'utilisateur.
  • Gestion des dépendances entre attributs, permettant par exemple de regénérer automatiquement la valeur d'un attribut caché lors de la modification d'un autre.
  • Possibilité de gérer des attributs entièrement cachés, dont les valeurs seront modifiées lors de la modification d'attribut en dépendance.

Chapitre 2. Installation

1. Pré-requis

  • PHP 5 avec magic_quotes_gpc et register_globals à off
  • Le support LDAP dans PHP (paquet php5-ldap dans Debian)
  • Le support mhash dans PHP (paquet php5-mhash dans Debian Lenny, intégré à php5-common dans Debian Squeeze)
  • Le support json dans PHP (pear install pecl/json sur RedHat, intégré au paquet php5-common dans Debian)
  • Net_LDAP2 (paquet php-net-ldap2 dans Debian ou pear install net_ldap2)
  • Smarty (paquet smarty dans Debian)
  • L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'. En cas d'installation à partir du paquet Debian, ce dossier est remplacé par un lien symbolique vers le dossier /var/cache/ldapsaisie/.
[Avertissement]Avertissement

La librairie Net_LDAP2 oblige le fait que la racine DSE de l'annuaire soit lisible en anonyme sinon la connexion à l'annuaire échouera systématiquement.

[Note]Note

Cette documentation est écrite à l'aide du langage Docbook. Les mécanismes d'exportation de celle-ci requiert un certain nombre de programmes et librairies :

  • make (paquet make dans Debian)
  • la feuille de style html XSL de Norman Walsh pour Docbook (fichier /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl fournis par le paquet docbook-xsl dans Debian)
  • xmllint (validation XML) (paquet libxml2-utils dans Debian)
  • jw (exportation PDF) (paquet docbook-utils dans Debian)
  • dbtoepub (exportation EPUB) (paquet dbtoepub dans Debian)

2. Téléchargement

2.1. A partir du paquet Debian

L'installation à partir du paquet Debian peut être réalisée soit en téléchargeant manuellement le paquet, soit en déclarant le dépôt APT suivant dans votre fichier /etc/apt/sources.list :

      deb http://ldapsaisie.easter-eggs.org/debian stable main
    

Il ne vous restera ensuite plus qu'a installer le paquet ldapsaisie avec la commande suivante :

      apt-get install ldapsaisie
    

Le fichier /etc/ldapsaisie/apache.conf est un example de configuration du serveur web Apache. La configuration du logiciel ce fera ensuite dans le dossier /etc/ldapsaisie/local/.

2.2. A partir de Git

Le dépôt Git peut être récupéré anonymement en utilisant la commande suivante :

      git clone git://git.labs.libre-entreprise.org/ldapsaisie.git
    

La racine web de l'application se trouvera alors dans le dossier /ldapsaisie/public_html/.

2.3. A partir des snapshot

Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeable au format tar.gz à l'adresse suivante : http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz

3. Arborescence du projet

Racine

doc/
Les fichiers sources de la documentation (docbook).
lsexample/
Les fichiers relatifs à l'annuaire d'exemple.
public_html/

Racine Web.

conf/

Contient les fichiers de configuration.

LSobjects/
Configuration des LSobjects.
LSaddons/
Configuration des LSaddons.
LSauth/
Configuration des LSauthMethod.
includes/

Contient les fichiers des ressources.

addons/
Les addons au projet.
class/
Les fichiers de définition des classes PHP.
js/
Les fichiers Javascript.
libs/
Les librairies utilisées.
lang/
Les fichiers d'internationalisation.
templates/
Les fichiers template de l'interface. Il y a un sous-dossier par template.
css/
Les fichiers css de l'interface. Il y a un sous-dossier par template CSS.
images/
Les images de l'interface. Il y a un sous-dossier par template d'image.
local/
Les fichiers personnalisés de l'installation.
tmp/
Les fichiers temporaires (y compris le cache des templates).

4. Tutoriel d'installation

Cette section décrit les différentes étapes de l'installation de LdapSaisie. Deux méthodes d'installation sont présentées ici, l'une à partir des sources du projet et l'autre à partir du paquet Debian.

Dans ce tutoriel, nous partirons du principe que vous avez pleinement la main sur votre serveur (installation de nouveau paquet et configuration de votre serveur web) et que l'installation à partir des sources se fera dans le dossier /var/www/ldapsaisie. Nous partons également du principe que votre annuaire LDAP est déjà en place. Nous utiliserons pour cette exemple de mise ne oeuvre l'annuaire correspondant au schéma et à la configuration présente dans les sources du projet dans le dossier lsexample.

  1. La première étape consiste à installer le locigiel en tant que tel. Pour une installation à partir du paquet Debian référez vous au chapitre Téléchargement. Une fois le paquet Debian, la configuration du logiciel se fera dans le dossier /etc/ldapsaisie/local/. Les fichiers placés dans ce dossier prévaleront toujours aux fichiers fournis par le paquet Debian, vous permettant facilement de modifier un composant existant ou dans écrire de nouveaux. Ainsi, pour modifier un fichier CSS par exemple, il vous suffira de le placer dans le dossier /etc/ldapsaisie/local/css/.

    Pour une installation à partir du code source, il vous faut cloner le repos Git. Pour cela il vous faut avoir installés les outils de Git contenu, dans Debian, dans le paquet git-core. Le dépôt Git doit ensuite être récupéré anonymement en utilisant la commande suivante :

        git clone git://git.labs.libre-entreprise.org/ldapsaisie.git
      

    [Note]Note

    Pour que cette commande se déroule correctement, vous devez avoir accès au port TCP 9418 du serveur git.labs.libre-entreprise.org. En cas de problème vérifiez votre firewalling.

    La suite des opérations se déroulera donc maintenant dans le dossier /var/www/ldapsaisie. Pour avoir plus de détails sur les élements qu'on retrouve dans ce dossier, vous pouvez consulter la section concernée. Nous allons nous instérésser plus particulièrement :

    • au script upgradeFromGit.sh permettant la mise à jour de votre repos tout en concervant les adaptations que nous ferons pour l'usage d'LdapSaisie adapté à notre annuaire ;
    • au dossier config.local dans lequel seront stockés vos fichiers et vos adaptations de l'application ;
    • au dossier public_html qui correspond à la futur racine du site web de l'application.

    Le principe de l'adaptation est ici de mettre vos fichiers personnalisés dans le dossier config.local, de les déclarer dans votre fichier config.local/local.sh contenant la liste des fichiers devant être installés. Le fichier local.sh est la source de configuration du script upgradeFromGit.sh. Il faut donc dans un premier temps créer votre fichier local.sh en copiant le fichier d'example local.sh.example. Ce fichier est un script bash déclarant les variables de configurations suivantes :

    LOCAL_FILES

    La liste des chemins des fichiers à installer dans l'arboressence du site. Cette élément doivent être séparés par des espaces ou des retour à la liste. Exemple :

    public_html/conf/config.inc.php
    public_html/lang/fr_FR.UTF8/lang.php
    LOG_FILE
    Nom du fichier de log des mises à jour.
    THEME
    Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
    BUILD_DOC
    Variable booléene définissant si la documentation doit être compiler en utilisant le script buildDocExports.sh. Ceci ne sera pas expliqué dans ce tutoriel et nous partirons donc du principe que cette variable est à 0.

    [Note]Note

    D'autres variables sont présentes dans ce fichier et concerne uniquement la compilation de la documentation. Elle peuvent être ignorée à partir du moment ou la variable BUILD_DOC vaut 0.

    [Note]Note

    Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie.

  2. La deuxième étape concerne la configuration globale de l'application : Cette partie est principalement contenue dans le fichier conf/config.inc.php (ou /etc/ldapsaisie/local/conf/config.inc.php en cas d'installation à partir du paquet Debian). En cas d'installation à partir du code source, il faut donc dans un premier temps copier ce fichier dans le dossier config.local et le déclarer dans la liste des fichiers à déployer lors des mises à jour (variable LOCAL_FILES dans le fichier local.sh). Il s'agit en particulier dans ce fichier de configurer la connexion à votre annuaire. Vous pouvez vous inspirer du fichier d'exemple fourni et pour plus de détails, reportez-vous à la section concernée.

    [Note]Note

    Notez qu'il est possible de passer l'application en mode debug ce qui peut être utile par la suite.

  3. La troisième étape concerne la configuration des types de LSobjects : Chaque type d'objet manipulé par LdapSaisie doit correspondre avec un type de LSobject.

    1. Création du fichier de classe : Ce fichier contient la déclaration de la classe PHP correspondant au type de LSobject. Cette classe étend la classe LSldapObject qui contient pour ainsi dire toute les méthodes et proprités nécessaires pour les types de LSobject simples (sans LSrelation). Les fichiers des classes sont contenus dans le dossier /includes/class/ et portent les noms composés de la manière suivante :

      class.LSobjects.[nom du type d'LSobject].php

      Le plus simple pour cette étape est de copier un des fichiers d'exemple afin de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier. Pour cela, le fichier de classe du type LSpeople est le plus simple car il ne contient que le strict minimum. Pour un fichier de classe ayant des LSrelations à gérer, le fichier de classe LSgroup contient déjà les méthodes nécéssaires pour gérer ces cas.

    2. Configurer vos LSobject : Cette partie est certainement la plus longue et consiste à déclarer l'ensemble des informations relatives aux types des objets LDAP manipulés. Les fichiers d'exemples fournis vous seront alors d'une aide précieuse. basé vous sur l'un de pour créer le votre. Pour cela le fichier de configuration du type d'LSobjet LSpeople est le plus complet et est un bon point de départ. Pour plus de détails sur les élements de configuration de ce fichier, reportez-vous à la section concernée.
    3. Configurer si nécessaire les relations entre les objets appelés LSrelations. Cette opération consiste dans un premier temps à écrire les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le fichier de classe du type LSgroup. Il faudra ensuite déclarer ces relations dans la configuration des types d'LSobjects : Pour plus de détails, reportez-vous à la section concernée.
    [Important]Important

    En cas d'installation à partir du code source, pensez à déclarer les fichiers que vous venez de créer dans la variable LOCAL_FILES du fichier local.sh. Exemple pour le type d'LSobjet portant comme nom LSexample :

    public_html/conf/LSobjects/config.LSobjects.LSexample.php
    public_html/includes/class/class.LSobjects.LSexample.php
    [Note]Note

    Vous pouvez également personnaliser l'interface : Il est possible de personnaliser à votre goût l'interface en écrivant votre template ou en modifiant simplement les fichiers CSS. Une partie de cette documentation concernera bientôt cette problématique. Patience...

  4. En cas d'installation à partir du code source, une dernière étape à ce niveau consiste à lancer le script upgradeFromGit.sh pour qu'il installe les fichiers que vous venez de créer. Ce script est conçu pour dire tout ce qu'il fait donc en cas de problème vous devriez rapidement comprendre où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la communauté sur la liste .

Chapitre 3. Configuration

Table des matières

1. Configuration globale
1.1. Variables globales
1.1.1. Configuration des serveurs LDAP
1.1.1.1. Profils d'utilisateurs
1.1.1.2. Sous-niveaux de connexion
1.1.1.3. Récupération de mot de passe
1.2. Variables et constantes indépendantes
1.3. Format paramétrable
1.4. Paramètres étendus des recherches dans l'annuaire
2. Configuration LSobject
2.1. Configuration des attributs
2.1.1. Configuration des attributs LDAP
2.1.1.1. LSattr_ldap_ascii
2.1.1.2. LSattr_ldap_boolean
2.1.1.3. LSattr_ldap_compositeValueToJSON
2.1.1.4. LSattr_ldap_date
2.1.1.5. LSattr_ldap_image
2.1.1.6. LSattr_ldap_numeric
2.1.1.7. LSattr_ldap_password
2.1.1.8. LSattr_ldap_postaladdress
2.1.2. Configuration des attributs HTML
2.1.2.1. LSattr_html_boolean
2.1.2.2. LSattr_html_date
2.1.2.3. LSattr_html_image
2.1.2.4. LSattr_html_jsonCompositeAttribute
2.1.2.5. LSattr_html_labeledValue
2.1.2.6. LSattr_html_mail
2.1.2.7. LSattr_html_maildir
2.1.2.8. LSattr_html_mailQuota
2.1.2.9. LSattr_html_password
2.1.2.10. LSattr_html_postaladdress
2.1.2.11. LSattr_html_pre
2.1.2.12. LSattr_html_rss
2.1.2.13. LSattr_html_select_box
2.1.2.14. LSattr_html_select_list
2.1.2.15. LSattr_html_select_object
2.1.2.16. LSattr_html_ssh_key
2.1.2.17. LSattr_html_tel
2.1.2.18. LSattr_html_text
2.1.2.19. LSattr_html_textarea
2.1.2.20. LSattr_html_url
2.1.2.21. LSattr_html_valueWithUnit
2.1.2.22. LSattr_html_wysiwyg
2.1.2.23. LSattr_html_xmpp
2.1.3. Configuration des règles de vérification syntaxique
2.1.3.1. alphanumeric
2.1.3.2. callable
2.1.3.3. date
2.1.3.4. email
2.1.3.5. filesize
2.1.3.6. imagefile
2.1.3.7. imagesize
2.1.3.8. inarray
2.1.3.9. integer
2.1.3.10. lettersonly
2.1.3.11. maxlength
2.1.3.12. minlength
2.1.3.13. mimetype
2.1.3.14. nonzero
2.1.3.15. nopunctuation
2.1.3.16. numeric
2.1.3.17. password
2.1.3.18. rangelength
2.1.3.19. regex
2.1.3.20. required
2.1.3.21. ssh_pub_key
2.1.3.22. telephonenumber
2.1.4. Configuration des règles de vérification d'intégrité
2.1.4.1. Validation par l'analyse du résultat d'une recherche dans l'annuaire
2.1.4.2. Validation par l'exécution d'une fonction
2.1.5. Déclencheurs
2.1.5.1. Configuration
2.1.5.2. Ecriture d'une fonction
2.2. Création automatique du conteneur des LSobjets dans un subDn
2.3. Déclencheurs
2.3.1. Configuration
2.3.2. Ecriture d'une fonction
2.4. customActions
2.4.1. Ecriture d'une fonction implémentant une customAction
2.5. LSrelation
2.6. LSform
2.6.1. Configuration de l'affichage
2.6.2. Configuration des masques de saisie
2.7. LSsearch
2.7.1. customActions
2.7.1.1. Ecriture d'une fonction implémentant une customAction
2.8. ioFormat
2.8.1. Pilote d'ioFormat
2.8.1.1. Pilote de fichiers CSV
3. Configuration des LSaddons
3.1. LSaddon_asterisk
3.2. LSaddon_exportSearchResultAsCSV
3.3. LSaddon_mail
3.4. LSaddon_maildir
3.5. LSaddon_phpldapadmin
4. Configuration des LSauthMethods
4.1. LSauthMethod_HTTP
4.2. LSauthMethod_CAS
4.3. LSauthMethod_anonymous

La configuration du projet est située principalement dans le dossier 'conf/'. Les exceptions seront détaillées par la suite.

[Avertissement]Avertissement

Toute la configuration du projet se fait par l'intermédiaire de fichiers définissant des variables PHP dont les valeurs sont utilisées par le programme. Ceci signifie que la syntaxe de ces fichiers doit être valide avec l'interpréteur PHP utilisé.

1. Configuration globale

La plus grande partie de la configuration globale se trouve dans le fichier config.inc.php.

Structure
// Variables globales
$GLOBALS['LSconfig'] = array(
  // Variables globales
);

// Variables et constantes indépendantes
$var1 = 'val1'
$var2 = 'val2'
...
define('CONST1','val1')
define('CONST2','val2')
...
?>

1.1. Variables globales

NetLDAP2

Chemin vers la librairie PEAR Net_LDAP2.

/usr/share/php/Net/LDAP2.php
Smarty

Chemin vers le moteur de template Smarty.

/usr/share/php/smarty/libs/Smarty.class.php
lang

Paramètre utilisé pour l'internationalisation : code de la langue.

fr_FR
en_US
encoding

Encodage de caractère.

UTF8
cacheLSprofiles

Activation/Désactivation de la mise en cache des profils des utilisateurs connectés (LSprofiles).

Valeurs possibles : True ou False

Valeur recommandée : True

[Important]Important

Ce paramètre a une action globale mais non prioritaire sur le comportement de l'application.

cacheSubDn

Activation/Désactivation de la mise en cache des niveaux de connexion (subDn) dans l'annuaire.

Valeurs possibles : True ou False

Valeur recommandée : True

[Important]Important

Ce paramètre a une action globale mais non prioritaire sur le comportement de l'application.

cacheSearch

Activation/Désactivation de la mise en cache du résultat des recherches dans l'annuaire.

Valeurs possibles : True ou False

Valeur recommandée : True

[Important]Important

Ce paramètre a une action globale mais non prioritaire sur le comportement de l'application.

keepLSsessionActive

Activation/Désactivation du maintient de la LSsession active.

Valeurs possibles : True ou False

[Important]Important

Ce paramètre a une action globale mais non prioritaire sur le comportement de l'application.

ldap_servers
Configuration des serveurs LDAP. Voir section concernée.

1.1.1. Configuration des serveurs LDAP

Cette section décrit le tableau de configuration des différents serveurs LDAP utilisés par l'application. Ce tableau contient lui même un tableau par serveur LDAP.

Structure...
$GLOBALS['LSconfig'] = array(
  ...
  'ldap_servers' => array(
    array (
      'name' => [nom de l'annuaire],
      'ldap_config'=> array(
        // Définition des paramètres de connexion à l'annuaire
      ),
      'useUserCredentials' => [boolean],
      'LSauth' => array (
        'method' => [LSauth method]
      ),
      'LSprofiles' => array (
        // Définition des LSprofiles
      ),
      'cacheLSprofiles' => [boolean],
      'cacheSearch' => [boolean],
      'authObjectType' => [LSobject],
      'authObjectFilter' => [LSformat],
      'authObjectTypeAttrPwd' => [attribut],
      'LSaccess' => array (
        [Type LSobject 1],
        [Type LSobject 2],
        ...
      ),
      'subDn' => array(
        // Définition des sous-niveaux de l'annuaire
      ),
      'subDnLabel' => [nom des sous-niveaux],
      'recoverPassword' => array(
        // Définition des paramètres de configuration de la récupération de mot de passe
      ),
      'defaultView' => [view],
      'emailSender' => [email],
      'keepLSsessionActive' => [booléen]
    )
  ...
);
...

Paramètres de configuration

name
Le nom d'affichage de ce serveur Ldap (utilisé lorsque plusieurs serveur LDAP sont déclarés).
ldap_config
Informations de connexion au serveur LDAP. Ces informations sont structurées selon les attentes de la librairie Net_LDAP2. Plus d'informations
useUserCredentials
Booléen définissant si il faut utiliser les identifiants de l'utilisateur pour se connecter à l'annuaire (false par défaut). Si cette option est activée, la connexion à l'annuaire LDAP sera établie avec la configuration fournie dans le paramètre ldap_config en écrasant les informations de connexion (binddn et bindpwd) par ceux de l'utilisateur. Si l'utilisateur n'est pas encore connecté, la connexion sera étalie sans modifier la configuration fournie.
LSprofiles
Définition des profils d'utilisateurs se connectant à l'annuaire. Voir la section concernée.
LSauth
Définition de la méthode d'authentification LSauthMethod. Pour le moment ce tableau associatif ne contient qu'un paramètre method qui correpond au nom de la librairie d'authentification. Exemple : pour utiliser la classe LSauthMethod_HTTP, la valeur du paramètre method sera HTTP.
cacheLSprofiles
Activation/Désactivation de la mise en cache des LSprofiles des utilisateurs connectés à ce serveur.
cacheSearch
Activation/Désactivation de la mise en cache du résultat des recherches sur ce serveur.
authObjectType
Nom du type d'LSobject pouvant être utilisé pour authentifier un utilisateur se connectant à l'interface.
authObjectFilter
LSformat du filtre de recherche de l'utilisateur à sa connexion. Le LSformat sera composé avec la valeur de l'information fourni par l'utilisateur. Cela peut pemettre par exemple de permettre à l'utilisateur de se connecter en fournissant soit son login, soit son email. Exemple de valeur : (|(uid=%{user})(mail=%{user}))
authObjectTypeAttrPwd
Nom de l'attribut "mot de passe" du type d'LSobject utilisé pour l'authentification des utilisateurs se connectant à l'interface.
LSaccess

Définition des types d'LSobjects devant apparaître dans le menu de l'interface.

[Important]Important

Ce paramètre n'est utilisé que pour les annuaires n'ayant pas de sous-niveaux (subDn).

subDn

Définition des sous-niveaux de connexion à l'annuaire. Voir section concernée.

[Important]Important

Ce paramètre remplace le paramètre LSaccess dans le cas d'un annuaire multi-niveaux.

subDnLabel

Définition du label utilisé pour qualifier les sous-niveaux de connexion.

[Important]Important

Ce paramètre est utile uniquement dans le cas d'un annuaire multi-niveaux.

recoverPassword
Définition des paramètres de la récupération de mot de passe. Voir la section concernée.
defaultView

Définition de la vue par défault de l'application. Par défaut, une page blanche est affichée et il est possible de définir à l'aide de ce paramètre la vue qui s'affichera. Ce paramètre peut prendre comme valeur :

  • SELF pour la vue Mon compte
  • Le nom d'un LSobject pour afficher la liste de ce type d'objet
  • Le nom d'une vue d'un LSaddon au format [addon]::[viewId] pour afficher cette vue

emailSender
Adresse mail utilisée par LdapSaisie pour envoyer des e-mails en relation avec cet annuaire. Cette adresse est celle utilisée par défaut. L'adresse utilisée peut également être configurée dans le contexte de configuration du module devant envoyer des e-mails.
keepLSsessionActive

Activation/Désactivation du maintient de la LSsession active.

Valeurs possibles : True ou False

1.1.1.1. Profils d'utilisateurs

Cette section décrit la manière dont sont définis les profils d'utilisateurs se connectant à l'interface appelés LSprofile. Il est possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour chaque profil d'utilisateur, il faudra définir dans quelles parties de l'annuaire ce profil existe (Exemple : les admistrateurs de groupes existent uniquement dans la branche de l'annuaire stockant les groupes). Enfin pour chaque partie de l'annuaire, il faudra définir la manière d'identifier si l'utilisateur qui se connecte appartient à ce profil.

Structure...
'LSprofile' => array (
  [nom d'un LSprofile] => array (
    [basedn] => [dn utilisateur],
    [autre basedn] => array (
      [dn d'un utilisateur] => NULL,
      [autre dn] => array ( // via un listage de l'attribut d'un objet
        'attr' => [nom de l'attribut clé de l'objet],
        'attr_value' => [format de la valeur de l'attribut clé],
        'LSobject' => [nom du type LSobject de l'objet]
      )
    ),
    'LSobjects' => array ( // via une liste d'objet sur lequel l'utilisateur a des pouvoirs
      [nom du LSobject] => array ( 
        'attr' => [nom de l'attribut clé],
        'attr_value' => [format de la valeur de l'attribut clé],
        // ou
        'filter' => [format du filtre de recherche],
        
        'basedn' => [basedn de recherche],
        'params' => [configuration de la recherche]
      ),
      [nom quelconque] => array (
        'filters' => array(
          array(
            'LSobject' => [nom du LSobject],
            'attr' => [nom de l'attribut clé],
            'attr_value' => [format de la valeur de l'attribut clé],
            // ou
            'filter' => [format du filtre de recherche],

            'basedn' => [basedn de recherche],
            'params' => [configuration de la recherche]
          ),
        ),
      ),
      ...
    )
  ),
  ...
),
...

Le paramètre LSprofiles est un tableau associatif contenant, en valeur clé, le nom d'un LSprofile et en valeur associée, la configuration nécessaire pour déterminer si l'utilisateur connecté appartient à ce LSprofile pour tout ou partie de l'annuaire.

Dans chaque configuration de LSprofile, il est possible d'identifier l'appartenance ou non de l'utilisateur connecté de deux manières :

  • Pour une branche de l'annuaire donnée (basedn) : en listant les utilisateurs appartenant à ce LSprofile pour tous les objets de la branche. Il sera possible de lister les utilisateurs dont on connait le DN ou de lister les utilisateurs appartenant à une liste stockée dans l'annuaire (par exemple la liste des membres d'un groupe).

    • Liste des DNs d'utilisateurs :

      Structure...
      'LSprofile' => array (
        [nom du LSprofile] => array (
          [basedn] => [dn utilisateur],
          // ou si plusieurs DNs
          [autre basedn] => array (
            [dn d'un utilisateur] => NULL,
            [dn d'un utilisateur 2] => NULL
          ),
          ...
        ),
        ...
      ),
      ...
      

      Explication : Pour un LSprofile et un basedn donnés, on définit l'utilisateur appartenant au LSprofile en donnant son DN. Si on souhaite lister plusieurs utilisateurs, on utilise un tableau associatif dans lequel les clés sont les DNs des utilisateurs et les valeurs associées sont toutes NULL.

    • Liste d'utilisateurs stockée dans l'annuaire :

      Structure...
      'LSprofile' => array (
        [nom du LSprofile] => array (
          [basedn] => array (
            [DN d'un object] => array (
              'attr' => [nom de l'attribut clé de l'objet],
              'attr_value' => [format de la valeur de l'attribut clé],
              'LSobject' => [nom du type LSobject de l'objet]
            )
          ),
        ...
      ),
      ...
      

      Explication : Pour un LSprofile et un basedn donnés, on liste les utilisateurs du LSprofile référencés dans l'attribut attr de l'object de type LSobject et selon le format de valeur décrit dans attr_value.

  • Pour un type de LSobject donné : en listant les objets pour lesquels l'utilisateur aura les droits du LSprofile. Il sera possible, à travers une recherche paramétrable dans l'annuaire, de lister les objets pour lesquels l'utilisateur appartiendra au LSprofile.

    Structure...
    'LSprofile' => array (
      [nom d'un LSprofile] => array (
        'LSobjects' => array ( // via un liste d'objet pour lequel l'utilisateur
                               // appartient au LSprofile
          [nom du LSobject] => array ( 
            'attr' => [nom de l'attribut clé],
            'attr_value' => [format de la valeur de l'attribut clé],
            // or
            'filter' => [format du filtre de recherche],
            
            'basedn' => [basedn de recherche],
            'params' => [configuration de la recherche]
          ),
          array (
            'filters' => array(
              array(
                'LSobject' => [nom du LSobject],
                'attr' => [nom de l'attribut clé],
                'attr_value' => [format de la valeur de l'attribut clé],
                // ou
                'filter' => [format du filtre de recherche],
    
                'basedn' => [basedn de recherche],
                'params' => [configuration de la recherche]
              ),
            ),
          ),
          ...
        )
      ),
      ...
    ),
    ...
    

    Explications : Dans la configuration d'un LSprofile, la valeur clé LSobjects signifie qu'on est dans un cas de la délégation de droits sur des types d'LSobject. Dans ce tableau associatif, il est possible de définir un ou plusieurs types de LSobject pour lesquels on délègue des droits via des recherches simples ou enchaînées. Le fonctionnement simple consiste à partir de l'objet de l'utilisateur et à générer un filtre de recherche sur un type de LSobject. Le fonctionnement enchainée consiste à faire un première recherche à partir de l'objet de l'utilisateur puis à recommencer à partir des objets trouvés en construisant une liste de filtres de recherche pour chaque objet qui seront combinés via l'opérateur booléen ou.

    Pour configurer une délégation de type simple on mettra le nom du LSobject dans la clé du tableau et dans la valeur un tableau définissant la recherche. Il est possible de ne pas utiliser la clé du tableau comme nom du LSobject grâce à la clé de configuration LSobject.

    Pour configurer une délégation de type enchaîné on pourra utiliser n'importe quelle valeur unique pour la clé du tableau et pour la valeur un tableau contenant une unique clé filters. La valeur associée à cette clé est celle d'une délégation de type simple où la clé LSobject est devenue obligatoire.

    Cette configuration contient les paramètres d'une ou plusieurs recherches dans l'annuaire en considérant que l'utilisateur connecté aura les droits du LSprofile sur les objets retournés. Les paramètres de la recherche sont :

    LSobject
    C'est le nom du LSobject recherché. (Paramètre facultatif pour une délégation de type simple)
    attr
    Nom de l'attribut des LSobjets contenant une valeur clé qui permettra d'identifier l'utilisateur comme ayant droit.
    attr_value
    Le format de la valeur clé prise par l'attribut attr. Ce format est composé à partir des données de l'objet de l'utilisateur connecté. Voir le paragraphe Format paramètrable pour plus d'informations sur l'écriture du format.
    filter
    Ce paramètre remplace les paramètres attr et attr_value. Il est possible ici d'écrire directement le format paramètrable du filtre recherche dans l'annuaire. Ce filtre sera automatiquement agrémenté des conditions sur l'attribut objectclass. Voir le paragraphe Format paramètrable pour plus d'informations sur l'écriture du format.
    basedn
    C'est le basedn de la recherche. Il est possible ainsi de la limiter sur les LSojects d'une branche précise de l'annuaire. (Paramètre facultatif)
    params
    C'est un tableau associatif contenant les paramètres étendus de la recherche. Voir le paragraphe Paramètres étendus des recherches dans l'annuaire pour plus de détails. (Paramètre facultatif)

1.1.1.2. Sous-niveaux de connexion

Cette section décrit la manière de définir des sous-niveaux de connexion à l'annuaire (subDn). Le concept de sous-niveau de connexion sert à déclarer les niveaux logiques de l'annuaire. Par exemple, dans un annuaire dans lequel sont stockés des objets concernant plusieurs organisations et que celles-ci se distinguent grâce à la présence d'une séparation dans l'arbre, il sera alors possible de définir des sous-niveaux de connexion pour chacune des organisations.

Exemple d'arborescence d'annuaire utilisant le concept de 
sous-niveaux correspondant à des sociétés
|- o=ls
| |- ou=companies
| | |- ou=company1
| | | |- ou=people
| | | |- ou=groups
| | |- ou=company2
| | | |- ou=people
| | | |- ou=groups
| |- ou=people
| |- ou=groups

Explications : Il est possible dans cet exemple de définir des sous-niveaux de connexion correspondants aux sociétés. Dans chacune de ces sociétés, on retrouve les OU correspondant au type d'LSobjets. Lors de la connexion à l'interface, l'utilisateur devra choisir dans quel sous-niveau de l'annuaire il souhaite se connecter. Une fois connecté, l'utilisateur manipulera uniquement les objets du sous-niveau de l'annuaire dans lequel il se trouve. Il lui sera également possible de changer de sous-niveau de connexion à travers l'interface : une liste déroulante est disponible pour cela dans le menu.

Il existe deux manières de déclarer des sous-niveaux de connexion à l'annuaire :

  • En déclarant manuellement un subDn de l'annuaire et en lui donnant un nom.
  • En listant les LSobjets d'un type précis et en utilisant leurs données pour constituer le nom des sous-niveaux. Cette liste est constituée en effectuant une recherche dans l'annuaire. Il est possible de définir un basedn particulier pour cette recherche.

Pour chacune de ces méthodes on définira également les types d'LSobjets qui sont présents dans cette branche de l'annuaire.

Structure...
'subDn' => array(
  // Déclaration manuelle
  '[Nom du sous-niveau]' => array(
    'dn' => '[basedn du sous-niveau]',
    'nologin' => true, // Désactive la connection dans ce subDn
    'LSobjects' => array( // Liste des types d'LSobjets présents dans le sous-niveau
      [LSobject1],
      [LSobject2],
      ...
    )
  ),
  // Liste de LSobjets
  'LSobject' => array(
    '[type d'LSobject]' => array( // le type d'LSobjet à lister
      'basedn' => '[basedn]', // Le basedn de la recherche
      'displayValue' => '[format]', // Format du nom des sous-niveaux
      'nologin' => true, // Désactive la connection dans ces subDn
      'onlyAccessible' => True, // Pour que seul les LSobjet accessible à l'utilisateur soit listé
      'LSobjects' => array( // Liste des types d'LSobjets présents dans les sous-niveaux
        [LSobject1],
        [LSobject2],
        ...
      )
    )
  )
),
...
1.1.1.3. Récupération de mot de passe

Cette section décrit la manière de configurer la récupération de mot de passe par les utilisateurs. Le mécanisme de récupération de mot de passe fonctionne en deux parties :

  • Dans un premier lieu, l'utilisateur ayant perdu son mot de passe accède à l'interface de récupération à partir de la page de connexion. L'interface lui demande de saisir son identifiant et éventuellement de sélectionner le serveur LDAP concerné. Une fois ces informations saisies, une recherche de l'utilisateur est effectuée dans l'annuaire et si celui-ci est trouvé, la valeur de l'attribut recoveryHashAttr de l'objet est alors redéfinie avec une valeur aléatoire.

    Un mail est ensuite envoyé à l'utilisateur en utilisant la première valeur de l'attribut mailAttr comme adresse. Ce mail est formé à partir des paramètres du tableau associatif recoveryHashMail. Celui-ci doit contenir le sujet du mail dans subject et le corps du message dans msg. Ces deux informations sont des formats paramètrables composés avec, comme valeur clé, l'URL de retour à laquelle l'utilisateur devra se rendre pour accèder à la seconde étape de la récupération de son mot de passe.

  • L'utilisateur doit donc se rendre sur l'interface par l'intermédiaire de l'URL qui lui aura été fournie dans le mail de l'étape précédente. Cette URL contient la valeur de l'attribut recoveryHashAttr précédement définie. A partir de cette information, une recherche est effectuée dans l'annuaire pour retrouver l'utilisateur correspondant.

    Si l'utilisateur est retrouvé, un nouveau mot de passe lui est généré en utilisant les paramètres de configuration éventuellement définis dans la configuration HTML de l'attribut "mot de passe". Pour avoir plus d'information sur ces paramètres, consulter la documentation du type d'attribut HTML LSattr_html_password. L'attribut recoveryHashAttr est quant à lui supprimé.

    Ensuite, un mail est composé à partir des paramètres du tableau associatif newPasswordMail et est envoyé à l'utilisateur. Ce tableau doit contenir le sujet du mail dans subject et le corps du message dans msg. Ces deux informations sont des formats paramètrables composés avec, comme valeur clé, le nouveau mot de passe de l'utilisateur.

Structure...
'recoverPassword' => array(
  'mailAttr' => '[attribut mail]',
  'recoveryHashAttr' => '[attribut hash]',
  'recoveryEmailSender' => '[adresse mail utilisée par LdapSaisie pour l'envoi des mails]',
  'recoveryHashMail' => array(  // 1er mail : avec l'URL pour l'accès à la 2nde partie
    'subject' => '[sujet du mail]',
    'msg' => "[message contenant le mot clé %{url}]"
  ),
  'newPasswordMail' => array(  // 2nd mail : avec le mot de passe
    'subject' => '[sujet du mail]',
    'msg' => "[message contenant le mot clé %{mdp}]"
  )
),
...

1.2. Variables et constantes indépendantes

LS_THEME

Constante déterminant le nom du theme utilisé.

Valeur par défaut : default

LS_TEMPLATES_DIR

Constante déterminant le chemin du dossier des templates.

Valeur par défaut : templates

LS_IMAGES_DIR

Constante déterminant le chemin du dossier des images.

Valeur par défaut : images

LS_CSS_DIR

Constante déterminant le chemin du dossier des CSS.

Valeur par défaut : css

LSdebug
Variable booléenne déterminant si le mode debug est activé.
$GLOBALS['LSlog']['enable']
Variable booléenne déterminant si les logs sont activés.
$GLOBALS['LSlog']['filename']

Variable déterminant le chemin du fichier de log.

Valeur par défaut : /tmp/LS.log

NB_LSOBJECT_LIST
Constante déterminant le nombre d'objet affichés par page de résultat de recherche.
NB_LSOBJECT_LIST_SELECT
Constante déterminant le nombre d'objet affichés par page de résultat de recherche dans une fenêtre LSselect.
MAX_SEND_FILE_SIZE
Constante déterminant la taille maximale d'un fichier envoyé à travers les formulaires.
$GLOBALS['defaultJSscipts']
Tableau déterminant les fichiers Javascript à charger sur toute les pages.
$GLOBALS['defaultCSSfiles']
Tableau déterminant les fichiers CSS à charger sur toute les pages. Ces fichiers seront chargés dans l'ordre et en dernier permettant de surcharger tous paramètres de style.

1.3. Format paramétrable

Un format paramétrable est une chaîne de caractères contenant des mots clés formés comme dans l'exemple suivant :

%{[nom du mot clé][:A][:B][! ou _][~][%]}

Le nom du mot clé peut contenir des lettres de "a" à "z", de "A" à "Z" et des chiffres de 0 à 9. Ces mots clés seront remplacés par les valeurs passées en paramètres et liées au contexte d'utilisation. Les paramètres :A et :B permettent d'extraire une partie de la chaîne complète avant la substitution.

Le paramètre A correspond, lorsque B n'est pas défini, au nombre maximum de caractères à extraire de la chaîne de substitution. A doit être un entier dont le signe influ, comme expliqué ci-dessous :

  • Si A est positif, les A premiers caractères de la chaîne de substitution seront extraits.
  • Si A est négatif, les |A| derniers caractères de la chaîne de substitution seront extraits.

Lorsque le paramètre B est défini, A correspond au rang du premier caractère à partir duquel la chaîne de substitution sera découpée et B le nombre maximum de caractères à extraire. Le signe de B influera comme expliqué dans le premier cas. Si B vaut zéro, la totalité de la longeur de la chaîne sera retournée en tenant compte de A pour le rang du premier caractère.

Il existe par ailleurs des paramètres permettant de modifier la valeur de substitution avant son utilisation :

  • Les paramètres ! ou _ permettre respectivement de forcer la mise en majuscule ou en minuscule ;
  • Le paramètre ~ permet de forcer la suppression des accents ;
  • Le paramètre % permet de protéger les caractères éligibles en entités HTML.

[Important]Important

Lorsque qu'une seule valeur clé est disponible pour la substitution, le nom du mot clé n'importe pas. Tous les mots clés trouvés dans le format seront remplacés par cette seule valeur.

1.4. Paramètres étendus des recherches dans l'annuaire

Les paramètres des recherches sont ceux supportés par Net_LDAP2. Ces paramètres sont passés sous la forme d'un tableau associatif. Les paramètres supportés sont détaillés ci-dessous :

NomDescriptionValeur par défaut
scope

Définition de l'étendue de la recherche :

  • base - Sur une entrée seulement
  • one - Sur les entrées imédiatement contenu par le basedn de la recherche
  • sub - Sur l'arbre entier
sub
sizelimitLe nombre maximum d'entrées retournées par la recherche.0 (illimité)
timelimitLe délai d'attente maximum de la réponse du serveur en secondes.0 (illimité)
attrsonlySi vrai, seuls les noms des atttributs seront retournés.false
attributesTableau contenant les noms des attributs que les entrées retournées peuvent contenir et que l'on souhaite récupérer.array()(tous)

Pour plus d'information sur le sujet, vous pouvez consulter la documentation officiel du projet Net_LDAP2.

2. Configuration LSobject

Cette partie décrit la manière de configurer les différents types de LSobjets manipulés par LdapSaisie.

La configuration des LSobjects est stockée dans le dossier /conf/LSobjects. Dans ce dossier, on retrouve un fichier par type d'LSobject, nommé de la manière suivante :

config.LSobjects.[nom du type d'LSobject].php

Ce fichier contient la déclaration de la configuration du type d'LSobject qui est stocké dans la variable globale $GLOBALS['LSobjects']['[nom du type d'LSobject]'].

Structure...
$GLOBALS['LSobjects']['[nom du type d'LSobject]'] = array (
  'objectclass' => array(
    'objetclass1',
    'objetclass2',
    ...
  ),
  'filter' => '[filtre LDAP]',

  'rdn' => 'attr1',

  'LSaddons' => [LSaddon(s)],
  
  'container_dn' => 'ou=people',
  'generate_container_dn' => '[callable]',
  'container_auto_create' => array(
    // Information des configurations pour la création du conteneur du type d'LSobjet
    // lors de la création nouveau subDn
  ),

  'disable_creation' => [boolean]',
  
  'before_modify' => 'function1',
  'after_modify' => 'function2',
  'after_create' => 'function3',
  'after_delete' => 'function4',
  
  'label' => 'objet1',  
  'display_name_format' => '[format]',
  'displayAttrName' => '[booleen]',

  //Custom Actions
  'customActions' => array (
    // Configuration des customActions pour ce type d'objet
  ),
  
  // LSrelation
  'LSrelation' => array(
    // Configuration des LSrelations entre ce type d'objet et les autres
  ),
  
  // LSform
  'LSform' => array (
    // Configuration des formulaires de l'objet
  ), // fin LSform
  
  // LSsearch
  'LSsearch' => array (
    // Configuration des recherches de l'objet
  ), // fin LSsearch

  // ioFormat
  'ioFormat' => array (
    // Configuration des formats d'import/export de l'objet
  ),
  
  // Attributs
  'attrs' => array (
    // Configuration des attributs du type d'LSobjet
  )
);
...

Paramètres de configuration

objectclass
La liste des objectclass des objets.
filter
Filtre de recherche LDAP applicable à tout les objets de ce type et qui sera utilisé lors de chaque recherche de ce type d'objet.
rdn
Nom de l'attribut correspondant au RDN des objets LDAP.
LSaddons
LSaddon(s) dont le type d'objet dépend. Ce peut être un tableau de chaînes de caractères ou une simpe chaîne de caractères correspondant au(x) nom(s) du/des LSaddon(s) en dépendance.
container_dn

Elément pour construire le basedn de stockage de ce type d'objet. Par exemple, si le basedn de l'annuaire est o=ls et que les objets utilisateurs sont stockés dans la branche de l'annuaire ou=people,o=ls, alors container_dn devra valoir ou=people.

Lorsque l'annuaire possède des subDn, les objets seront cherchés dans le basedn résultant de la concaténation du paramètre container_dn, d'une virgule et du basedn correspondant au subDn courant.

generate_container_dn
Callable (au sens PHP), utilisé pour générer la valeur du paramètre container_dn dynamiquement. Ce callable prend en paramètre l'objet LSobject à créer et retourne la valeur du paramètre container_dn.
container_auto_create
Tableau associatif contenant les paramètres de configuration nécessaires à la création des container_dn dans les nouveaux objets utilisés comme subDn. Voir la section concernée.
disable_creation
Booléen permetant de desactiver la creation de ce type d'objet de manière globale.
before_modify
Chaîne de caractères correspondant au nom d'une fonction qui sera exécutée avant la modification d'un objet. Voir la section concernée.
after_modify
Chaîne de caractères correspondant au nom d'une fonction qui sera exécutée après la modification d'un objet. Voir la section concernée.
after_create
Chaîne de caractères correspondant au nom d'une fonction qui sera exécutée après la création d'un objet. Voir la section concernée.
after_delete
Chaîne de caractères correspondant au nom d'une fonction qui sera exécutée après la suppression d'un objet. Voir la section concernée.
label
Nom générique au pluriel qualifiant le type d'objet. Exemple : Utilisateurs.
display_name_format
Format paramètrable du nom des objets composés à partir des valeurs d'affichage des attributs de l'objet.
displayAttrName
Booléen définissant si le nom des attributs doit être affiché en préfixe de leur message d'aide (paramètre help_info).
customActions
Tableau associatif contenant les paramètres de configuration des customActions. Voir la section concernée.
LSrelation
Tableau associatif contenant les paramètres de configuration des LSrelations. Voir la section concernée.
LSform
Tableau associatif contenant les paramètres de configuration des LSforms des LSobjects. Voir la section concernée.
LSsearch
Tableau associatif contenant les paramètres de configuration des recherches de LSobject de ce type dans l'annuaire. Voir la section concernée.
ioFormat
Tableau associatif contenant les paramètres de configuration des formats de fichiers d'import/export de ce type d'LSobject. Voir la section concernée.
attrs
Tableau associatif contenant les paramètres de configuration des attributs des objets. Voir la section concernée.

2.1. Configuration des attributs

Cette section décrit les options de configuration des attributs des LSobjects. Les attributs sont définis dans le tableau associatif attrs de la configuration des LSobjects. Dans ce tableau, les clé les noms des attributs et les valeurs liés sont la configuration des attributs.

[Avertissement]Avertissement

Contrairement à ce qui existe dans le standard LDAP, les noms des attributs sont sensibles à la casse. Il faut que le nom des attributs dans LdapSaisie soient scrupuleusement les mêmes que ceux retourné par Net_LDAP2

Structure...
'attrs' => array (
  /* ----------- start -----------*/
  'attr1' => array (
    'label' => '[label de l'attr1',
    'displayAttrName' => '[booleen]',
    'help_info' => '[Message d'aide sur l'attribut attr1]',
    'ldap_type' => 'ldaptype1',
    'ldap_options' => array(
      // Options LDAP liées au type LDAP de l'attribut
    ),
    'html_type' => 'htmltype1',
    'html_options' => array(
      // Options HTML liées au type HTML de l'attribut
    ),
    'no_value_label' => '[No set value label]',
    'multiple' => 0,
    'required' => 1,
    'generate_function' => 'fonction1',
    'generate_value_format' => '[LSformat]',
    'default_value' => 'valeur1',
    'check_data' => array (
      // Régle de vérification syntaxique des données saisies
    ),
    'validation' => array (
      // Règle de vérification d'intégrité des données saisies
    ),
    'rights' => array(
      'LSprofile1' => 'droit1',
      'LSprofile2' => 'droit2',
      ...
    ),
    'view' => 1,
    'form' => array (
      'create' => 1,
      'modify' => 0,
      ...
    ),
    'dependAttrs' => array(
      // Attributs en dépendance
    ),
    'onDisplay' => 'fonction2'
    
    'before_modify' => 'function1',
    'after_modify' => 'function2'
  ),
  /* ----------- end -----------*/
  ...
);
...

Paramètres de configuration

label
Le label de l'attribut.
displayAttrName
Booléen définissant si le nom de l'attribut doit être affiché en préfixe du message d'aide (paramètre help_info).
help_info
Message d'aide qui sera affiché dans une bulle d'aide à côté du nom de l'attribut dans les formulaires.
ldap_type
Le type LDAP de l'attribut. Voir la section concernée.
ldap_options
Tableau associatif contenant les paramètres de configuration du type LDAP de l'attribut. Voir la section concernée.
html_type
Le type HTML de l'attribut. Voir la section concernée.
html_options
Tableau associatif contenant les paramètres de configuration du type HTML de l'attribut. Voir la section concernée.
no_value_label
Label affiché lorsque l'attribut n'a pas de valeur (facultatif).
multiple

Booléen définissant si cet attribut peut stocker plusieurs valeurs.

Valeurs possibles : 0 ou 1

Valeur par défaut : 0

required

Booléen définissant si cet attribut doit obligatoirement être défini.

Valeurs possibles : 0 ou 1

Valeur par défaut : 0

generate_function
Nom de la fonction permettant de générer la valeur de l'attribut. Cette fonction sera éxecutée, en passant en premier paramètre, l'objet LSobject courant.
generate_value_format

LSformat permettant la génération de l'attribut.

[Note]Note

Cette méthode de génération est utilisée uniquement si aucune fonction de génération de la valeur n'est définie (paramètre generate_function).

default_value

Valeur par défaut de l'attribut.

Valeurs possibles : 0 ou 1

[Note]Note

Cette valeur est également utilisée dans le cadre de la génération automatique de la valeur de l'attribut si aucune autre méthode n'est disponible (via une fonction ou un LSformat).

check_data
Tableau associatif contenant les règles de vérification syntaxique des données de l'attribut.Voir la section concernée.
validation
Tableau associatif contenant les règles de vérification d'intégrité des données de l'attribut.Voir la section concernée.
rights
Tableau associatif dont les clés sont les noms des LSprofiles ayant des droits sur cet attribut et les valeurs associées sont les droits correspondants. La valeur des droits d'un LSprofile peut être r pour le droit de lecture ou w pour le droit de lecture-écriture. Par défaut, un LSprofile n'a aucun droit.
view

Booléen définissant si l'attribut est, ou non, affiché lors de la visualisation des objets du type courant.

Valeurs possibles : 0 ou 1

Valeur par défaut : 0

form
Tableau associatif dont les clés sont les noms des LSforms et les valeurs associées la définition de l'affichage dans ce LSform. Si cette valeur vaut 0, alors l'attribut sera lecture-seule et si cette valeur vaut 1, cet attribut sera affiché en lecture-écriture.
dependAttrs
Tableau associatif listant les attributs dépendants de celui-ci. Les attributs listés ici seront regénérés lors de chaque modification de l'attribut courant. Cette génération sera effectué avec la fonction définie dans le paramètre generate_function de l'attribut.
onDisplay
Nom ou liste de nom des fonctions retournant les valeurs d'affichages de l'attribut. Si c'est une liste, chacune des fonctions seront executée les unes après les autres. Ces fonctions seront éxecutées, en passant en premier paramètre, le tableau des valeurs de l'objet.
before_modify
Nom de la fonction qui sera exécutée avant toutes modifications de la valeur de l'attribut.Voir la section concernée
after_modify
Nom de la fonction qui sera exécutée après toutes modifications de la valeur de l'attribut.Voir la section concernée

2.1.1. Configuration des attributs LDAP

Cette section décrit les options propres à chacun des types d'attributs LDAP supportés par LdapSaisie.

2.1.1.1. LSattr_ldap_ascii

Ce type est utilisé pour la gestion des attributs dont la valeur est une chaine de caractère. Ce type est le type par défaut.

2.1.1.2. LSattr_ldap_boolean

Ce type est utilisé pour la gestion des attributs dont la valeur est une booléen. On attend ici par booléen, tout attribut ne pouvant prendre que deux valeurs pré-définies correspond pour l'un à Oui et l'autre à Non

Structure...
'ldap_options' => array (
  'true_value' => '[valeur correspondant à Vrai]',
  'false_value' => '[valeur correspondant à Faux]'
),
...

Paramètres de configuration

true_value
La valeur de l'attribut correspondant à Vrai­. (Par défaut : TRUE)
false_value
La valeur de l'attribut correspondant à Faux­. (Par défaut : FALSE)
[Important]Important

Les valeurs possibles pour le paramètre default_value sont yes et no.

2.1.1.3. LSattr_ldap_compositeValueToJSON

Ce type est utilisé pour la gestion des attributs composites dont les valeurs respectent le format suivant : [key1=value1][key2=value2][...]

Ce type d'attribut LDAP sera utilisé pour convertir la valeur en son équivalent JSON pour pouvoir être traité à l'aide du type d' attribut HTML LSattr_html_jsonCompositeAttribute.

2.1.1.4. LSattr_ldap_date

Ce type est utilisé pour la gestion des attributs dont la valeur est une date.

Structure...
'ldap_options' => array (
  'timestamp' => [Booléen], // Si la date est stockée au format timestamp
  'format' => '[Format de stockage]' // Default : "%Y%m%d%H%M%SZ"
),
...

Paramètres de configuration

timestamp

Booléen définissant si la date est stockée sous la forme d'un timestamp Unix (nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC)­.

Si timestamp est vrai, LdapSaisie ne tient pas compte du paramètre format.

format

Format de stockage de la date dans l'annuaire. Ce format est composé à partir des motifs clés gérés par la fonction strftime() de PHP. Pour plus d'information, consulter la documentation officielle.

[Note]Note

La valeur par défaut est %Y%m%d%H%M%SZ, correspondant au format de stockage par défaut dans OpenLDAP. Exemple : 20091206230506Z

2.1.1.5. LSattr_ldap_image

Ce type est utilisé pour la gestion des attributs dont la valeur est une image. Pour le moment, aucun traitement particulier n'est appliqué pour le stockage.

2.1.1.6. LSattr_ldap_numeric

Ce type est utilisé pour la gestion des attributs dont la valeur est un nombre. Pour le moment, aucun traitement particulier est n'appliqué pour le stockage.

2.1.1.7. LSattr_ldap_password

Ce type est utilisé pour la gestion des attributs dont la valeur est un mot de passe.

Structure...
'ldap_options' => array (
  'encode' => '[Type d'encodage du mot de passe]',
  'encode_function' => '[Nom de la fonction d'encodage]',
  'no_random_crypt_salt' => '[Booléen]', // Désactivation de l'utilisation d'une salt aléatoire
  'wildcardPassword' => '[mot de passe(s) en clair]',
  'encodedWildcardPassword' => '[mot de passe(s) encodé(s)]'
),
...

Paramètres de configuration

encode

Nom du type d'encodage du mot de passe utilisé. Les types d'encodages supportés sont les suivants :

  • md5crypt
  • crypt
  • ext_des
  • blowfish
  • sha
  • sha256
  • sha512
  • ssha
  • ssha256
  • ssha512
  • smd5
  • md5
  • clear

[Note]Note

Valeur par défaut : md5crypt

[Important]Important

Si le type d'encodage est inconnu, ou qu'il n'est pas supporté par le serveur web, un message d'erreur alertera l'utilisateur et le mot de passe sera stocké en clair.

encode_function

Nom d'une function qui sera utilisée afin d'encoder le mot de passe. Cette fonction recevra deux paramètres : le LSldapObject et le mot de passe en clair.

no_random_crypt_salt
Désactivation de l'utilisation d'une salt générée aléatoirement au profit de l'utilisation des deux premiers caractères du mot de passe. Ce paramètre impacte uniquement le type de cryptage crypt.
wildcardPassword
Mot de passe (ou tableau de mot de passe) qui sera ajouté systématiquement, en plus du mot de passe choisi. Il sera encodé de la même manière que pour le mot de passe choisi avant enregistrement.
encodedWildcardPassword

Mot de passe (ou tableau de mot de passe) qui sera ajouté systématiquement, en plus du mot de passe choisi. Contrairement à la directive wildcardPassword, le mot de passe ne sera pas encodé avant enregistrement.

[Note]Note

Cette directive peut cohabiter avec sa cousine wildcardPassword. Les mot de passes contenus dans les deux directives seront alors ajoutés.

2.1.1.8. LSattr_ldap_postaladdress

Ce type est utilisé pour la gestion des attributs dont la valeur est construite sur le modèle de l'attribut standard postalAddress, c'est à dire dont les lignes sont séparées à l'aide du caractère de délimiteur $.

Lors de la lecture des valeurs de ce type d'attribut dans l'annuaire, les caractères $ seront remplacés par des caractères \n et, à l'inverse, lors de l'écriture des valeurs de ce type d'attribut dans l'annuaire, les caractères \n seront remplacés par des caractères $.

2.1.2. Configuration des attributs HTML

Cette section décrit les options propres à chacun des types d'attributs HTML supportés par LdapSaisie.

2.1.2.1. LSattr_html_boolean

Ce type est utilisé pour la gestion des attributs dont la valeur est un booléen.

La valeur retournée est l'une des chaînes de caractères suivantes :

  • yes pour Vrai
  • no pour Faux

Structure...
'html_options' => array (
  'true_label' => '[label]',
  'false_label' => '[label]',
),
...

Paramètres de configuration

true_label
Label affiché pour désigner la valeur Vrai.
false_label
Label affiché pour désigner la valeur Faux.
[Note]Note

Pour le moment, les attributs à valeurs multiples ne sont pas gérés.

[Note]Note

Pour maîtriser les valeurs stockées dans l'annuaire, il faut coupler ce type d'attribut HTML avec le type d'attribut LDAP boolean

[Important]Important

La définition de la valeur par défaut d'un attribut utilisant ce type HTML (paramètre default_value), doit se faire à l'aide des valeurs yes ou no.

2.1.2.2. LSattr_html_date

Ce type est utilisé pour la gestion des attributs dont la valeur est une date. L'outil de sélection de date MooTools-DatePicker est utilisé pour la sélection graphique de la date et de l'heure.

Structure...
'html_options' => array (
  'format' => '[Format d'affichage de la date]',
  'time' => '[Booleen pour le choix ou non de l heure]',
  'manual' => '[Booleen pour l edition manuelle ou non]',
  'showNowButton' => '[Booleen]',
  'showTodayButton' => '[Booleen]',
  'style' => '[Nom du style utilise]'
),
...

Paramètres de configuration

format

Format d'affichage de la date dans le champ de saisie. Ce format est composé à partir des motifs clés suivants :

Mot cléValeur de substitutionExemple de valeur
%a

Nom abrégé du jour de la semaine

De Sun à Sat

%A

Nom complet du jour de la semaine

De Sunday à Saturday

%b

Nom du mois, abrégé, suivant la locale

De Jan à Dec

%B

Nom complet du mois, suivant la locale

De January à December

%c

Date et heure préférées, basées sur la locale

Exemple : Tue Feb 5 00:45:10 2009 pour le 5 Février 2009 à 12:45:10 AM

%d

Jour du mois en numérique, sur 2 chiffres (avec le zéro initial)

De 01 à 31

%e

Jour du mois, avec un espace précédant le premier chiffre. L'implémentation Windows est différente, voyez après pour plus d'informations.

De 1 à 31

%H

L'heure, sur 2 chiffres, au format 24 heures

De 00 à 23

%I

Heure, sur 2 chiffres, au format 12 heures

De 01 à 12

%j

Jour de l'année, sur 3 chiffres avec un zéro initial

001 à 366

%m

Mois, sur 2 chiffres

De 01 (pour Janvier) à 12 (pour Décembre)

%M

Minute, sur 2 chiffres

De 00 à 59

%p

'AM' ou 'PM', en majuscule, basé sur l'heure fournie

Exemple : AM pour 00:31, PM pour 22:23

%s

Timestamp de l'époque Unix (identique à la fonction time())

Exemple : 305815200 pour le 10 Septembre 1979 08:40:00 AM

%S

Seconde, sur 2 chiffres

De 00 à 59

%T

Identique à "%H:%M:%S" Exemple : 21:34:17 pour 09:34:17 PM

%U

Numéro de la semaine de l'année donnée, en commençant par le premier Lundi comme première semaine

13 (pour la 13ème semaine pleine de l'année)

%w

Représentation numérique du jour de la semaine

De 0 (pour Dimanche) à 6 (pour Samedi)

%y

L'année, sur 2 chiffres

Exemple : 09 pour 2009, 79 pour 1979

%Y

L'année, sur 4 chiffres

Exemple : 2038

%z

Soit le décalage horaire depuis UTC, ou son abréviation (suivant le système d'exploitation)

Exemple : -0500 ou EST pour l'heure de l'Est

%Z

Le décalage horaire ou son abréviation NON fournie par %z (suivant le système d'exploitation)

Exemple : -0500 ou EST pour l'heure de l'Est

%%

Le caractère de pourcentage ("%")

---

[Note]Note

La valeur par défaut est %d/%m/%Y, %T. Exemple : 23/04/2009, 23:03:04

time
Booléen définissant si l'outil de sélection permetra ou non le choix de l'heure en plus de la date
manual
Booléen autorisant ou non l'édition manuelle du champs. Si ce paramètre vaut False, la sélection se fera uniquement à l'aide de l'outil graphique
showNowButton
Booléen définissant si le bouton Maintenant est affiché ou non. Par défaut, il est affiché.
showTodayButton
Booléen définissant si le bouton Aujourd'hui est affiché ou non. Par défaut, il est affiché.
style

Nom du style d'affichage de l'outil de sélection. Les valeurs possibles sont par défaut :

  • default
  • dashboard
  • vista
  • jqui

[Note]Note

La création de nouveau thème est possible. Pour plus d'information, consulter l'aide de l'outil de sélection de date.

2.1.2.3. LSattr_html_image

Ce type est utilisé pour la gestion des attributs dont la valeur est une image. Pour le moment, les attributs à valeurs multiples ne sont pas gérés.

2.1.2.4. LSattr_html_jsonCompositeAttribute

Ce type est utilisé pour la gestion des attributs dont les valeurs sont des dictionnaires de valeurs encodées aux formats JSON.

Exemple de valeur gérée
{"component1": "value1", "component2": "value2", "component3": "value3"}

Le principe est que ces dictionnaires contienent plusieurs composants référencés par leur clé et stockant une valeur dont le type peut être un texte libre ou bien être issue d'une liste déroulante configurable selon le même principe que le type d'attribut LSattr_html_select_list.

Structure...
'html_options' => array (
   'components' => array (
     '[clé composant 1]' => array (
       'label' => '[Label du composant]',
       'help_info' => '[Message d'aide sur le composant]',
       'type' => '[Type de la valeur stocké]',
       'required' => [Booléen],
       'multiple' => [Booléen],
       'check_data' => => array (
         // Régle de vérification syntaxique des données saisies
       ),
     ),
     '[clé composant 2]' => array (
       'label' => '[Label du composant 2]',
       'type' => 'select_list',
       'required' => [Booléen],
       'options' => array (
         [Configuration équivalente à un attribut LSattr_html_select_list]
       )
     ),
     [...]
   ),
),
...

Paramètres de configuration

components

Tableau associatif obligatoire contenant en valeur clé, l'identifiant des composants, correspondant à la clé dans le dictionnaire JSON, et en valeurs associés, la configuration du composant.

label
Le label du composant.
help_info
Message d'aide sur le composant (affiché uniquement en mode édition).
type
Le type de valeur du composant. Les types possibles sont text ou select_list pour respectivement soit une valeur saisie librement, soit une valeur sélectionnée parmis une liste déroulante.
options
Dans le cadre d'un composant de type select_list, cela correspond à la configuration de la liste déroulante. Cette configuration utilise la même syntaxe de configuration que celle du type d'attribut LSattr_html_select_list et son paramètre html_options.
multiple
Booléen définissant si ce composant peut stocker plusieurs valeurs (Défaut : Faux).
required
Booléen définissant si ce composant doit obligatoirement être défini (Défaut : Faux).
check_data
Tableau associatif contenant les règles de vérification syntaxique des données du composant. Ces règles sont configurables de la même manière que les celles des valeurs attributs. Voir la section concernée.
2.1.2.5. LSattr_html_labeledValue

Ce type est utilisé pour la gestion des attributs dont la valeur est prefixé d'un label et qui respecte le format suivant : [label]valeur.

Structure...
'html_options' => array(
  'labels' => array ( // Liste des labels possible
    'label1' => 'Libellé label1',
    'label2' => 'Libellé label2',
    [...]
  ),
),
...

Paramètres de configuration

labels
Tableau associatif obligatoire contenant en valeur clé, le label utilisé dans la valeur stockée et en valeur associée, le valeur d'affichage du label.
2.1.2.6. LSattr_html_mail

Ce type est utilisé pour la gestion des attributs dont la valeur est une adresse e-mail. Il propose directement dans l'interface, la possibilité d'envoyer des mails à l'adresse saisie.

Structure...
'html_options' => array(
  'disableMailSending' => [booléen]
),
...

Paramètres de configuration

disableMailSending

Désactive l'envoi de mail depuis l'interface pour cet attribut.

[Note]Note

Ceci ne désactive pas pour autant le lien HTML de type mailto:. Pour cela, utilisez plutôt le type d'attribut HTML text.

[Important]Important

Ce type d'attribut HTML est dérivé du type text. Il profite donc de toutes les fonctionnalités d'un champ de ce type (autogénération, ...).

2.1.2.7. LSattr_html_maildir

Ce type est utilisé pour la gestion des attributs dont la valeur est le chemin d'une maildir. Typiquement, ce type attribut HTML est utile dans le cas de l'attribut mailbox utilisé par maildrop pour stocker le chemin des boites mails. Ce type d'attribut offre la possibilité de gérér un niveau de l'attribut et à travers les déclencheurs gérés par LdapSaisie la création, la modification et ou la suppression de la boite mails. Le LSaddon boolean est utilisé pour manipuler la boite mail à distance.

[Note]Note

Actuellement, cet LSaddon ne gérant que l'accès via FTP au serveur distant, l'API d'accès via FTP est attaquée directement.

Structure...
'html_options' => array (
  'LSform' => array (
    '[LSform1]' => [booléen],
    '[LSform2]' => [booléen],
    ...
  ),
  'remoteRootPathRegex' => "[Expression régulière pour matcher le dossier à créer]",
  'archiveNameFormat' => "[LSformat du chemin/nom du fichier une fois archiver]"
 ),
...

Paramètres de configuration

LSform
Tableau associatif obligatoire contenant en valeur clé le nom des LSforms dans lesquels la fonctionnalité de modification de la boite mail sera présente. Les valeurs attachées sont des booléens définissant si la modification est active par défaut.
remoteRootPathRegex

Expression régulière (compatible Perl) facultative dont le but est de matcher dans la valeur complète du chemin distant de la maildir, le chemin de la maildir à créer une fois connecté sur le serveur.

Exemple : Si le chemin complet de la maildir est /home/vmail/user, mais que l'utilisateur FTP lorsqu'il se connecte arrive directement dans /home/vmail, et faut définir le paramètre remoteRootPathRegex de la manière suivante :

/^\/home\/vmail\/([^\/]*)\/+$/

archiveNameFormat

LSformat du nom du dossier de la maildir une fois archivée. Si ce format est défini, le dossier ne sera pas supprimé mais déplacé ou rénommé. Le format sera construit avec pour seul mot clé, le nom de l'ancien dossier. Exemple : Si le dossier de la maildir est /home/vmail/user et le paramètre archiveNameFormat vaut %{old}.bckp, le dossier sera renommé en /home/vmail/user.bckp.

[Important]Important

Ce format est interprété après application de la routine liée au paramètre remoteRootPathRegex. Ainsi, dans l'exemple précédent, si le paramètre remoteRootPathRegex tronquait uniquement le nom du dossier final, c'est à dire user, le format une fois interprété donnerai user.bckp.

2.1.2.8. LSattr_html_mailQuota

Ce type est utilisé pour la gestion des attributs dont la valeur est le quota d'une boite mail. Le format de la valeur générée correspondant au format attendu par le serveur de mail Courier par défaut. Exemple : 50000000S correspond à un quota de 50Mio.

Structure...
'html_options' => array(
    'suffix' => '[suffix]',
  )
),
...

Paramètres de configuration

suffix
Chaine de caractères suffixant la valeur du quota (Par défaut : S).
2.1.2.9. LSattr_html_password

Ce type est utilisé pour la gestion des attributs dont la valeur est un mot de passe.

Structure...
'html_options' => array(
  'isLoginPassword' => [booleen],
  'generationTool' => [booleen],
  'autoGenerate' => [booleen],
  'lenght' => [nombre de caractères],
  'chars' => array ( // Caractères que peut contenir le mot de passe
    array( // Liste caractère avec un nombre mininum d'apparition supérieur à 1
      'nb' => [nb caractères],
      'chars' => '[liste de caractères possibles]'
    ),
    '[autre liste de caractères possibles]', // Liste caractère avec un nombre 
                                             // d'apparitions égal à 1
    ...
  ),
  'use_pwgen' => [booléen], // Utiliser pwgen pour la génération du mot de passe
  'pwgen_path' => "/path/to/pwgen",
  'pwgen_opts' => "[options à passer à pwgen]",
  'verify' => [booléen],  // Activation de l'outil de vérification du mot de passe
  'viewHash' => [booléen],  // Activation de l'outil de visualisation du mot de passe haché
  'mail' => array( // Configuration de l'envoi du mot de passe par mail
    'subject' => "[LSformat du sujet du mail]",
    'msg' => "[LSformat du message du mail]",
    'mail_attr' => 'mail', // Attribut mail de l'objet
    'get_mail_attr_function' => '[function]', // Fonction retournant l'attribut mail de l'objet
    'send' => 1,  // Activation par défaut de l'envoi du mot de passe
    'ask' => 1,   // Laisser le choix à l'utilisateur
    'canEdit' => 1   // Activation de l'édition du LSformat du message par l'utilisateur
  )
),
...

Paramètres de configuration

isLoginPassword
Booléen définissant si le mot de passe est celui utilisé par l'utilisateur pour se logguer à l'annuaire LDAP. Si c'est le cas, le mot de passe saisi dans le formulaire sera utilisé pour une tentative de connexion de l'utilisateur afin de déterminer si le mot de passe a été modifié ou non. (Par défaut : Vrai)
generationTool
Booléen définissant si l'outil de génération de mot de passe est activé.
autoGenerate
Active la génération automatique du mot de passe lorsque l'attribut n'a encore aucune valeur de définie. Il faut également que l'outil de génération soit activé (generationTool).
lenght
Nombre de caractères que devront contenir les mots de passe générés.
chars

Tableau contenant une liste de listes de caractères possibles pour composer le mot de passe. Dans chacune de ces listes, au moins un caractère sera utilisé dans le nouveau mot de passe. Il est possible de définir un nombre supérieur de caractères d'une liste devant apparaître dans les mots de passe générés en spécifiant un tableau associatif dont la clé nb associra le nombre entier de caractères et la clé chars la liste de caractères. Une liste de caractères est un chaîne.

use_pwgen

Booléen définissant si la commande pwgen doit être utilisé pour générer le mot de passe.

pwgen_path

Chemin d'accès au binaire pwgen. (Par défaut : pwgen).

pwgen_opts

Options à passer à la commande pwgen.

verify
Booléen définissant si l'outil de vérification du mot de passe est activé. Si celui-ci est activé, l'utilisateur pourra entrer un mot de passe dans le champ et cliquer sur un bouton qui lancera une procédure de vérification du mot de passe via un test de connexion à l'annuaire.
viewHash
Booléen définissant si l'utilisateur aura accès à la fonctionnalité de visualisation du mot de passe haché.
clearView
Booléen définissant si l'utilisateur pourra voir le mot de passe en clair par défaut (y comris en mode visualisation uniquement).
clearEdit
Booléen définissant si l'utilisateur éditera le mot de passe au travers un champs HTML de type text et donc lisible ou au travers un champs HTML de type password.
mail

Paramètres de configuration de l'envoi par mail du mot de passe à l'utilisateur. Lorsque cet outil est activé, lors de la modification/création du mot de passe, l'utilisateur pourra recevoir un mail lui spécifiant son nouveau mot de passe.

Paramêtres de configuration

send
Booléen définissant si l'envoi du mot de passe est activé par défaut.
ask
Booléen définissant si on laisse le choix à l'utilisateur d'activer ou non l'envoi du mot de passe par mail.
canEdit
Booléen définissant si on laisse la possibilité à l'utilisateur d'éditer le LSformat du message et du sujet.
subject
LSformat du sujet du mail. Ce format sera composé avec la valeur du nouveau mot de passe de l'utilisateur.
msg
LSformat du message du mail. Ce format sera composé avec les informations de l'object LDAP, y compris le mot clé %{password} correspondant à la valeur du nouveau mot de passe de l'utilisateur.
mail_attr
Le nom de l'attribut listant les mails possibles de l'utilisateur. Par défaut, la première valeur de l'attribut sera utilisée comme adresse mail destinatrice. Cet attribut peut également être un tableau de plusieurs noms d'attributs. Dans ce cas, la première valeur correcte sera retenue. Si canEdit est activé, l'utilisateur pourra choisir l'adresse mail destinatrice parmi la liste des valeurs de l'attribut.
get_mail_attr_function
Nom de la fonction (ou callable au sens PHP) qui sera utilisé pour récupérer le nom de l'attribut listant les mails possibles de l'utilisateur. Cette fonction prendra en paramètre, l'objet LSformElement courant et devra retourner une valeur équivalente au paramètre de configuration mail_attr. Si ce paramètre est défini, il prévalera toujours sur le paramètre mail_attr.
bcc
Mettre en BCC un mail systématiquement (ou plusieurs en les séparant par des virgules).
headers
Un tableau de type clé/valeur ou la clé est le nom d'un header à ajouter au mail et la valeur est la valeur de l'header en question.

2.1.2.10. LSattr_html_postaladdress

Ce type est utilisé pour la gestion des attributs du type de l'attribut standard postalAddress. Ce type d'attribut permet d'afficher, en plus de l'adresse, un lien composé à partir d'informations de l'objet permettant par exemple d'afficher un lien vers une carte géocalisant l'adresse postale.

Par défaut, le lien ajouté sera un lien de recherche de l'adresse postale générée à partir de la valeur de l'attribut (en remplaçant les retours à la ligne (\n) par des espaces) via le service Nominatim d'OpenStreetMap.

[Note]Note

Dans le cadre du fonctionnement par défaut et pour maîtriser les valeurs stockées dans l'annuaire, il faut coupler ce type d'attribut HTML avec le type d'attribut LDAP postaladdress

Structure...
'html_options' => array(
  'map_url_pattern_format' => '[LSformat]',
  'map_url_pattern_generate_function' => '[callable]',
  'map_url_format' => '[LSformat]',
),
...

Paramètres de configuration

map_url_pattern_format
Ce LSformat doit permettre de générer la valeur de l'adresse postale qui sera insérée dans l'URL du lien ajouté dans l'interface.
map_url_pattern_generate_function
Ce paramètre permet de définir une fonction qui sera utilisée à la place du paramètre map_url_pattern_format pour générer la valeur de l'adresse postale qui sera insérée dans l'URL du lien ajouté dans l'interface. Cette fonction prendra en paramètre l'objet LSformElement courant et devra retourner une chaîne de caractères correspondant à l'adresse postale à insérer dans le lien de l'interface. Par défaut, la fonction LSformElement_postaladdress__generate_pattern est utilisée.
map_url_format
Ce LSformat doit permettre de générer l'URL du lien ajouté dans l'interface. Il sera composé avec les informations de l'objet LDAP, y compris le mot clé %{pattern} correspondant à la valeur de l'adresse postale générée à l'aide des paramètres précédents. Par défaut, la format suivant sera utilisé : http://nominatim.openstreetmap.org/search.php?q=%{pattern}
2.1.2.11. LSattr_html_pre

Ce type est dérivé du type LSattr_html_textarea et permet simplement que lors de l'affichage de la valeur, celle-ci soit affichée en respectant les retours à la ligne et en utilisant une police de caractères monospace. Cela reproduit l'affichage d'une balise HTML pre.

2.1.2.12. LSattr_html_rss

Ce type est utilisé pour la gestion des attributs dont la valeur est l'URL d'un flux RSS. Il propose directement dans l'interface, la possibilité d'accèder au flux RSS.

[Important]Important

Ce type d'attribut HTML est dérivé du type text. Il profite donc de toutes les fonctionnalités d'un champ de ce type (autogénération, ...).

2.1.2.13. LSattr_html_select_box

Ce type est identique au type LSattr_html_select_list excepté qu'il utilise en lieu et place d'une balise HTML select, plusieurs balises HTML input de type checkbox en cas de valeurs multiples ou de type radio en cas de valeur unique. Les paramètres de configuration sont entièrement hérités de la classe LSattr_html_select_list et sont donc exactement les mêmes.

2.1.2.14. LSattr_html_select_list

Ce type est utilisé pour la gestion des attributs dont les valeurs font partie d'une liste statique ou dynamique. Il est possible de lister des valeurs statiques et également des références à d'autres LSobjects. La référence à un objet correspond à une valeur clé, référente à un objet précis, qui peut être soit la valeur d'un de ses attributs, soit son DN.

Structure...
'html_options' => array (
   'possible_values' => array (
     '[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
     ...
     'OTHER_OBJECT' => array (
       'object_type' => '[Type d'LSobject]',
       'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
       'value_attribute' => '[Nom de l'attribut clé]',
       'values_attribute' => '[Nom de l'attribut clé multi-valeur]',
       'filter' => '[Filtre de recherche des LSobject]',
       'scope' => '[Scope de la recherche]',
       'basedn' => '[Basedn de la recherche]',
       'onlyAccessible' => '[Booléen]'
     ),
     'OTHER_ATTRIBUTE' => '[attr]',
     // Or :
     'OTHER_ATTRIBUTE' => array(
       '[attr1]' => '[label1]',
       '[attr2]' => '[label2]',
       [...]
     ),
     // Or :
     'OTHER_ATTRIBUTE' => array(
       'attr' => [attr],
       'json_component_key' => '[Composant JSON clé]',
       'json_component_label' => '[Composant JSON label]',
     ),
     array (
       'label' => '[LSformat du nom du groupe de valeurs]',
       'possible_values' => array (
         '[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
         ...
         'OTHER_OBJECT' => array (
           ...
         )
       )
     )
   ),
   'translate_labels' => [booléen],
   'sort' => [Booléen],
   'sortDirection' => '[ASC|DESC]'
),
...

Paramètres de configuration

possible_values

Tableau associatif obligatoire contenant en valeur clé le LSformat des valeurs clés prisent par l'attribut et en valeurs associées, le LSformat des noms d'affichage de ces valeurs. Ces LSformats sont composés à partir des valeurs de l'objet courant (attributs, dn, ...).

Si la valeur clé est égale à OTHER_OBJECT, une liste d'LSobject sera insérée dans la liste des valeurs possibles. La valeur associée est alors un tableau associatif dont les valeurs clés sont les noms des paramètres de configuration de la recherche de ces LSobjects et les valeurs associées, les valeurs des paramètres.

Il est possible de regrouper des valeurs de l'attribut en plaçant leur déclaration dans un sous-tableau. Ce sous-tableau devra contenir la clé label dont la valeur associé sera le LSformat du nom du groupe de valeurs. Ce LSformat est composé à partir des valeurs de l'objet courant (attributs, dn, ...). Une seconde clé possible_values regroupera les valeurs possibles du groupe. Comme pour le tableau principal, la clé OTHER_OBJECT permet d'imcorporer une liste d'LSobject.

object_type
Nom du type d'LSobject en référence.
display_name_format
LSformat du nom d'affichage des objets lors de leur sélection.
value_attribute
Nom de l'attribut des LSobjects en référence servant de valeur clé et permettant de les identifier (Exemple : dn ou uid).
values_attribute
Nom de l'attribut des LSobjects en référence servant de catalogue de valeurs. Dans ce mode, la valeur n'a pas de label et est affichée directement dans l'interface. Ce paramètre peut-être utilisé en complément ou non du paramètre value_attribute.
filter
Filtre falcultatif de la recherche des LSobjets. Il sera dans tous les cas agrémenté des valeurs des objectclass du type d'LSobject.
scope
Scope falcultatif de la recherche des LSobjets.
basedn
Basedn falcultatif de la recherche des LSobjets.
onlyAccessible
Booléen falcultatif définissant si seul les LSobjets auxquels l'utilisateur connecté à accès doivent être considérés comme sélectionnables (Faux par défault).

Si la valeur clé est égale à OTHER_ATTRIBTE, une liste de valeur possible sera composée à l'aide des valeurs d'un (ou plusieurs) autre attribut de l'objet courant. La valeur associée peut être alors :

  • soit le nom d'un attribut dont les valeurs seront utilisées comme valeurs possibles (la valeur affichée est égale à la valeur stockée).
  • soit un tableau associatif dont les valeurs clés sont les noms des attributs dont les valeurs seront utilisés comme valeurs possibles et dont les valeurs associés seront les labels sous lesquels ces valeurs seront regroupées (la valeur affichée est égale à la valeur stockée).
  • soit un tableau associatif référençant un attribut sous la clé attr dont les valeurs seront utilisées comme valeurs possibles. Cet attribut peut-être du type LSattr_html_jsonCompositeAttribute. Il sera alors possible d'utiliser les valeurs d'un composant en particulier en le référençant à l'aide de la clé json_component_key. Il est également possible de référencer un autre composant à l'aide de la clé json_component_label et dont les valeurs seront utilisées comme valeurs affichées lors de la sélection. À défaut, les valeurs affichées seront identiques à celles stockées.

translate_labels
Booléen permettant d'activer/désactiver la traduction des labels (Par defaut : Vrai).
sort
Booléen définissant si les valeurs possibles doivent être triées ou non (Vrai par défaut). Le trie est effectué sur les libellés des valeurs possibles.
sortDirection

Mot clé déterminant le sens du trie des valeurs possibles.

Valeurs possibles : ASC ou DESC (ASC par défaut).

2.1.2.15. LSattr_html_select_object

Ce type est utilisé pour la gestion des attributs dont les valeurs sont des références à d'autres LSobjects. Chaque référence à un objet correspond à une valeur prise par l'attribut. Les valeurs clés référant à un LSobject sont soit la valeur d'un de leurs attributs, soit leur DN.

Structure...
'html_options' => array (
   selectable_object => array (
     'object_type' => '[Type d'LSobject selectionnable]',
     'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
     'value_attribute' => '[Nom de l'attribut clé des LSobjects]',
     'filter' => '[Filtre de recherche]',
     'onlyAccessible' => '[Booléen]'
   ),
   'ordered' => [Booléen],
   'sort' => [Booléen],
   'sortDirection' => '[ASC|DESC]'
),
...

Paramètres de configuration

selectable_object

Tableau associatif obligatoire contenant en valeur clé le nom des paramètres de configuration et dont les valeurs attachées sont les valeurs des paramètres.

object_type
Nom du type d'LSobject en référence.
display_name_format
LSformat du nom d'affichage des objets lors de leur sélection.
value_attribute
Nom de l'attribut des LSobjects en référence servant de valeur clé et permettant de les identifier (Exemple : dn ou uid).
filter
Filtre de recherche (facultatif) qui sera ajouter au filtre par défaut lors de la sélection des objets.
onlyAccessible
Booléen falcultatif définissant si seul les LSobjets auxquels l'utilisateur connecté à accès doivent être considérés comme sélectionnables (Faux par défault).
ordered

Booléen définissant si la liste des objets choisis doit être ordonnable ou non (Faux par défaut). Cela aura pour effet d'activer une fonctionnalité dynamique de l'interface permettant de remonter ou descendre dans la liste les objets choisis.

[Note]Note

Cette fonctionnalité désactive automatiquement le trie des objets à l'affichage.

sort
Booléen définissant si la liste des objets choisis doit être triée ou non (Vrai par défaut). Le trie est effectué sur les libellés des objets choisis.
sortDirection

Mot clé déterminant le sens du trie des objets choisis.

Valeurs possibles : ASC ou DESC (ASC par défaut).

2.1.2.16. LSattr_html_ssh_key

Ce type est utilisé pour la gestion des attributs dont la valeur est une clef publique SSH. Il permet dans l'interface, d'avoir un affichage adapté à ce type de donnée.

2.1.2.17. LSattr_html_tel

Ce type est utilisé pour la gestion des attributs dont la valeur est un numéro de téléphone. Lors de l'affichage, un lien hypertexte avec une URI de type tel:~~ est affiché.

[Important]Important

Ce type d'attribut HTML est dérivé du type text. Il profite donc de toutes les fonctionnalités d'un champ de ce type (autogénération, ...).

2.1.2.18. LSattr_html_text

Ce type est utilisé pour la gestion des attributs dont la valeur est une chaîne de caractères devant être affichée dans un champ input HTML de type text.

Structure...
'html_options' => array(
  'generate_value_format' => '[LSformat pour la génération de la valeur]',
  'autoGenerateOnCreate' => [booléen],
  'autoGenerateOnModify' => [booléen],
  'withoutAccent' => [booleen],
  'replaceSpaces' => "[chaîne de remplacement]",
  'upperCase' => [booleen],
  'lowerCase' => [booleen]
),
...

Paramètres de configuration

generate_value_format

LSformat de la valeur utilisée pour la génération automatique de celle-ci à partir des informations saisies dans le formulaire. Les valeurs clefs du format sont les noms des attributs de l'objet. Seuls les attributs affichés au moins en lecture seule dans le formulaire peuvent être utilisés dans le format. Une seule valeur par attribut sera utilisée pour la génération : celle du premier champ (dans l'ordre d'apparition dans le formulaire).

[Important]Important

Seuls les éléments du formulaire de type HTML input, select ou textarea peuvent être utilisés.

autoGenerateOnCreate

Activation de la génération automatique lorsque celui-ci est vide au moment du chargement du formulaire.

[Note]Note

La valeur par défaut est False.

autoGenerateOnModify

Activation de la génération automatique lors de chaque modification de la valeur des champs du formulaire lié.

[Note]Note

La valeur par défaut est False.

withoutAccent

Activation de la suppression des accents dans la chaîne de caractères générée automatiquement.

[Note]Note

La valeur par défaut est False.

withoutAccent

Activation du remplacement des accents dans la chaîne de caractères générée automatiquement. La valeur de remplacement est celle du paramètre.

[Note]Note

La valeur par défaut est False.

upperCase

Activation de la mise en majuscule de la valeur générée automatiquement.

[Note]Note

La valeur par défaut est False.

lowerCase

Activation de la mise en minuscule de la valeur générée automatiquement.

[Note]Note

La valeur par défaut est False.

2.1.2.19. LSattr_html_textarea

Ce type est utilisé pour la gestion des attributs dont la valeur est une chaine de caractères trop longue pour être saisie dans un champs HTML imput de type text et est plus adapté à un champ HTML textarea.

2.1.2.20. LSattr_html_url

Ce type est utilisé pour la gestion des attributs dont la valeur est une URL. Il propose directement dans l'interface, la possibilité d'accèder au site ou encore de l'ajouter dans ses favoris (lorsque le navigateur le supporte).

[Important]Important

Ce type d'attribut HTML est dérivé du type text. Il profite donc de toutes les fonctionnalités d'un champ de ce type (autogénération, ...).

2.1.2.21. LSattr_html_valueWithUnit

Ce type est utilisé pour la gestion des attributs dont la valeur est un entier auxquel un facteur peut s'appliquer (par exemple : Kilo, Méga, ...).

Structure...
'html_options' => array(
    'units' => array (
      '[facteur1]' => '[label unit1]',
      '[facteur2]' => '[label unit2]',
      [...]
    ),
    'translate_labels' => [booléen],
    'nb_decimals' => [number of decimals],
    'dec_point' => '[decimals point]',
    'thousands_sep' => '[thousands separator]',
    'store_integer' => [booléen],
    'round_down' => [booléen],
  )
),
...

Paramètres de configuration

units
Tableau associatif dont la clé est un entier correspondant au facteur et la valeur est le label de l'unité. (Par exemple : 1 => Octet, 1024 => Kilo-octet, ...).
translate_labels
Booléen permettant d'activer/désactiver la traduction des labels (Par defaut : Vrai).
nb_decimals
Le nombre de décimals à afficher en cas de nombre non-entier (Par defaut : 2).
dec_point
Le caractère à utiliser comme séparateur de décimal (Par defaut, une virgule).
thousands_sep
Le caractère à utiliser comme séparateur de milliers (Par defaut, un espace).
store_integer
Booléen permettant d'activer/désactiver le stockage de valeurs entières (Par defaut : Vrai).
round_down
Booléen permettant d'arrondir à l'entier inférieur (et non à l'entier supérieur par défaut) en cas de stockage de valeurs entières.
2.1.2.22. LSattr_html_wysiwyg

Ce type est utilisé pour la gestion des attributs dont la valeur est du code HTML et dont l'édition doit être fait à l'aide d'un éditeur WYSIWYG . La librairie TinyMCE est utilisée pour cela.

Structure...
'html_options' => array(
  'extra_options' => array (
    [Options à passer à TinyMCE]
  ),
),
...

Paramètres de configuration

extra_options
Ce paramètre permet de passer des options à TinyMCE pour personnaliser son comportement. Par exemple, il est possible d'utiliser le paramètre valid_styles pour définir quels styles CSS sont autorisés. Pour plus d'informations, consultez la documentation de TinyMCE.
2.1.2.23. LSattr_html_xmpp

Ce type est utilisé pour la gestion des attributs dont la valeur est une adresse XMPP. Il propose directement dans l'interface, la possibilité de lancer une fenêtre de dialogue avec l'interlocuteur de son client XMPP préféré .

[Note]Note

Cette fonctionnalité n'est supporté uniquement par les navigateurs web supportant les URI de type xmpp://~~.

[Important]Important

Ce type d'attribut HTML est dérivé du type text. Il profite donc de toutes les fonctionnalités d'un champ de ce type (autogénération, ...).

2.1.3. Configuration des règles de vérification syntaxique

Cette section décrit la manière de configuer des règles de vérification syntaxique sur les données des attributs. Ces règles seront utilisées pour vérifier que les valeurs saisies par un utilisateur dans un formulaire sont correctes.

Structure...
'check_data' => array (
  '[regle1]' => array(
    'msg' => "[Message d'erreur]",
    'params' => array(
      // Paramètres de la règle 
    )
  ),
  ...
),
...

Le paramètre check_data est un tableau associatif dont les clés sont les noms des règles de vérification syntaxique actives et les valeurs associées sont des tableaux associatifs contenant les paramètres des règles.

Paramètres de configuration

msg
Le message d'erreur à afficher lors que la règle n'est pas respectée.
params
Tableau associatif contenant les paramètres de la règle. Les paramètres possibles sont propres à chaque type de règle. Les clès sont les noms des paramètres et les valeurs associés, les valeurs des paramètres.
2.1.3.1. alphanumeric

Cette règle vérifie que la valeur est une chaîne de caractères composée uniquement de lettres non-accuentées, en minuscule ou en majuscule et/ou de chiffres.

Paramètres de configuration

withAccents
Si le paramètre est à true, les lettres accentuées seront acceptées.
2.1.3.2. callable

Cette règle vérifie que la valeur saisie est correcte en utilisant une fonction personnalisée. Cette fonction devra prendre en paramètres la valeur à valider, le tableau des paramètres de la règle ainsi qu'un pointeur sur l'objet LSformElement. Sur la base de ses informations, elle devra valider la valeur et retourner True si la valeur est valide et False sinon.

Paramètres de configuration

callable
Le nom de la fonction (ou tout autre callable au sens PHP) de validation.
2.1.3.3. date

Cette règle vérifie que la valeur saisie est bien une date et qu'elle respecte un format précis.

Paramètres de configuration

format
Format de la date à respecter. Ce format doit être compatible avec la fonction strftime() de PHP. Voir la documentation de la fonction
2.1.3.4. email

Cette règle vérifie que la valeur saisie est bien une adresse e-mail. Il est possible de vérifier si elle appartient bien à un domaine en particulier ou encore de vérifier si le domaine existe et qu'il possède un serveur de mail(MX).

Paramètres de configuration

domain
Nom de domaine obligatoire. Ce paramètre peut être une simple chaine correspondant au domaine ou un tableau listant plusieurs domaines possibles.
checkDomain
Booléen définissant si le domaine de l'adresse mail doit être validé.
2.1.3.5. filesize

Cette règle vérifie que la valeur est un fichier dont la taille en octets respecte les limites passées en paramètre.

Paramètres de configuration

minSize
Taille minimum.
maxSize
Taille maximum.
2.1.3.6. imagefile

Cette règle vérifie que la valeur est bien un fichier et que le type mime de celui-ci est bien une image. Cette règle utilise la règle mimetype en spécifiant si l'utilisateur ne le fait pas que le type mime doit respecter la regex suivante : /image\/.*/

[Important]Important

Cette règle est une simple interface à la règle mimetype, il est donc possible de passer d'autres paramètres propres à ce type.

2.1.3.7. imagesize

Cette règle vérifie que la valeur est une image dont la taille en pixels respecte les limites passées en paramètre.

Paramètres de configuration

minWidth
Largeur minimum.
maxWitdh
Largeur maximum.
minHeight
Hauteur minimum.
maxHeight
Hauteur maximum.
2.1.3.8. inarray

Cette règle vérifie que la valeur saisie fait partie d'une liste de valeurs autorisées.

Paramêtres de configuration

possible_values
Tableau listant les valeurs autorisées.
2.1.3.9. integer

Cette règle vérifie que la valeur saisie est un entier. Les paramètres permettent de spécifier éventuellement si la valeur doit être positive ou négative et également de borner les valeurs valides.

Paramêtres de configuration

positive
Booléen définissant si la valeur doit être positive.
negative
Booléen définissant si la valeur doit être negative.
min
Valeur minimale (supérieur ou égale).
max
Valeur maximale (inférieur ou égale).
2.1.3.10. lettersonly

Cette règle vérifie que la valeur est une chaîne de caractères composée uniquement de lettres non-accuentées, en minuscule ou en majuscule.

2.1.3.11. maxlength

Cette règle vérifie que la valeur saisie est une chaine de caractères dont la longueur est inférieur ou égale à la valeur passées en paramètre.

Paramêtres de configuration

limit
Limite supérieur (ou égale) de la longueur de la chaîne de caratères.
2.1.3.12. minlength

Cette règle vérifie que la valeur saisie est une chaine de caractères dont la longueur est supérieur ou égale à la valeur passée en paramètre.

Paramètres de configuration

limit
Limite inférieure (ou égale) de la longueur de la chaîne de caratères.
2.1.3.13. mimetype

Cette règle vérifie que la valeur est bien un fichier et que le type mime de celui-ci est correct. Il est possible de vérifier si le type mime fait partie d'une liste ou encore s'il valide une expression régulière.

Paramètres de configuration

mimeType
Type mime obligatoire. Ce paramètre peut être une simple chaine correspondant au type mime ou un tableau listant plusieurs possibilités.
mimeTypeRegEx
Expression régulière que doit respecter le type mime.
2.1.3.14. nonzero

Cette régle vérifie que la valeur est une valeur numérique non nulle.

2.1.3.15. nopunctuation

Cette régle vérifie que la valeur est une chaîne de caractères ne contenant pas de signe de ponctuation. Les caractères suivants sont actuellement exclus : ( ) . \ / \ * \ ^ \ ? # ! @ $ % + = , " ' > < ~ [ ] { }

2.1.3.16. numeric

Cette régle vérifie que la valeur est une valeur numérique.

2.1.3.17. password

Cette règle vérifie que la valeur est un mot de passe respectant la politique de sécurité définie par les paramètres de la règle.

Paramètres de configuration

minlength
Longueur minimale du mot de passe.
maxlength
Longueur maximale du mot de passe.
prohibitedValues
Tableau de valeurs interdites.
regex
Expression(s) régulière(s) que doit respecter le mot de passe. Ce paramètre peut être une expression régulière au format PCRE ou un tableau d'expressions régulières.
minValidRegex
Le nombre minimum d'expression régulière qui doivent être validées pour que le mot de passe soit considéré comme correct. Ce paramètre est optionnel, par défaut, toutes les expressions régulières doivent être validées.
2.1.3.18. rangelength

Cette règle vérifie que la valeur saisie est une chaine de caractères dont la longueur est comprise entre deux valeurs passées en paramètre.

Paramètre de configuration

limits
Tableau contenant deux valeurs, la première étant la limite inférieure ou égale et la seconde la limite supérieure ou égale.
2.1.3.19. regex

Cette règle vérifie que la valeur saisie respecte bien l'expression régulière passée en paramètre.

Paramètres de configuration

regex
L'expression régulière devant être respectée. Cette expression régulière doit être au format PCRE.
2.1.3.20. required

Cette régle vérifie que la valeur n'est pas une chaîne de caractères de longueur nulle.

2.1.3.21. ssh_pub_key

Cette règle vérifie que la valeur est une clé publique SSH.

Cette vérification utilise tout d'abord une expression régulière pour valider la forme syntaxique de la clé publique (ssh-[type] [clé au format base64] [commentaire]) puis tente de décoder la partie en base64 de la clé pour vérifier qu'il s'agit bien d'une chaine de caractères.

2.1.3.22. telephonenumber

Cette régle vérifie que la valeur est un numéro de téléphone français. Celui-ci doit respecter l'expression regulière suivante : /^(01|02|03|04|05|06|08|09)[0-9]{8}$/

2.1.4. Configuration des règles de vérification d'intégrité

Cette section décrit la manière de configurer des règles de vérification d'intégrité sur les données des attributs. Il est possible de valider la valeur de l'attribut par l'intermédiraire de la vérification de résultat d'une recherche paramètrable dans l'annuaire ou encore d'appeler une fonction de votre choix pour effectuer la vérification voulue.

2.1.4.1. Validation par l'analyse du résultat d'une recherche dans l'annuaire

Une telle règle permet de vérifier si les valeurs des attributs n'entrent pas en conflit avec d'autres objets de l'annuaire. Ce test peut également permetre de vérifier si les valeurs devant faire référence à d'autres objets de l'annuaire sont correctes.

Structure...
'validation' => array (
  ...
  array(
    'msg' => "[LSformat du message d'erreur]",
    'filter' => '[LSformat du filtre de la recherche]',
    'object_type' => '[Type d'LSobject recherché]',
    'basedn' => '[BaseDn de la recherche]',
    'scope' => '[Scope de la recherche]',
    'result' => '[Résultat positif de la recherche]',
    'except_current_object' => '[Exclure l'objet courant]'
  ),
  ...
),
...

Paramètres de configuration

msg
LSformat du message d'erreur à afficher lorsque la validation échoue. Ce format est construit avec les valeurs du LSobject.
filter
LSformat du filtre de la recherche. Ce format peut être construit avec toutes les valeurs du LSobject (attributs, DN, ...) et également avec la valeur à valider en utilisant pour mot clé %{val} .
object_type
Le nom du type d'LSobject recherché. Si un type est spécifié, le filtre de la recherche sera une combinaison de celui du paramètre filter et du filtre composé à partir des objectClass du type d'LSobject. Paramètre facultatif.
basedn
Le basedn de la recherche. Paramètre facultatif.
scope
Le scope de la recherche. Paramètre facultatif.
result
Le résultat de la recherche : si result vaut zéro, la recherche ne devra retourner aucun objet pour que la validation soit réussie. Sinon, la recherche devra retourner au moins un objet.
except_current_object
Booléen définissant si l'objet courrant doit être exclu du résultat de la recherche. Ce paramètre n'est évalué quand cas de création (formulaire create).
2.1.4.2. Validation par l'exécution d'une fonction

Il est possible d'effectuer la validation de l'attribut par l'exécution d'une fonction de votre choix. Il lui sera passé en paramètre le LSobject complet. Si la fonction ne retourne pas true, la validation échouera.

Structure...
'validation' => array (
  ..
  array(
    'msg' => "[LSformat du message d'erreur]",
    'function' => '[Nom de la fonction de validation]'
  ),
  ...
),
...

Paramètres de configuration

msg
LSformat du message d'erreur à afficher lorsque la validation échoue. Ce format est construit avec les valeurs du LSobject.
function
Le nom de la fonction à exécuter. Si cette fonction n'existe pas, un message d'erreur sera affiché et la validation échouera.

2.1.5. Déclencheurs

Cette section décrit la manière de paramétrer des déclencheurs afin que LdapSaisie exécute durant ses processus, et à des moments bien précis des traitements d'un LSattribute, des fonctions que vous pourrez développer vous même. De plus, le résultat de l'exécution de vos fonctions pourra influer sur le déroulement des processus.

Actuellement, les évènements suivant sont gérés :

NomDescriptionBloquant
before_create

Avant la création du LSobject, lorsque l'attribut a au moins une valeur.

Oui

after_create

Après la création du LSobject, lorsque l'attribut a au moins une valeur.

Non

before_modify

Avant la modification de la valeur de l'attribut.

Oui

after_modify

Après la modification de la valeur de l'attribut.

Non

before_delete

Avant la suppression du LSobject contenant l'attribut.

Oui

after_delete

Après la suppression du LSobject contenant l'attribut.

Non

[Note]Note

Si un événement est dit bloquant, lors de l'exécution des actions liées, si une des fonctions retourne false , le processus s'arrêtera.

2.1.5.1. Configuration

La configuration des déclencheurs se fait dans la définition des LSattributes. Par exemple, pour définir les fonctions à exécuter après la modification de la valeur de l'attribut mail du type de LSobject LSpeople, c'est à dire lors de leur évenement after_modify, il faut définir la variable suivante :

$GLOBALS['LSobjects']['LSpeople']['attrs']['mail']['after_modify']

Cette variable peut contenir soit une chaine de caractères correspondant au nom de la fonction à exécuter, soit un tableau de chaînes de caractères correspondant aux noms des fonctions à exécuter.

2.1.5.2. Ecriture d'une fonction

Une fonction exécuté par un déclencheur d'un LSattribute se déclare de la manière suivante :

/*
 * Ma fonction à exécuter lors de l'évènement [event]
 *
 * Paramètre :
 *     - $object : Le LSobject contenant le LSattribute sur lequel l'évenement
 *                 survient
 *
 * Valeurs retournées :
 *     - True : Tout s'est bien passé
 *     - False : Une erreur est survenue ou la fonction souhaite bloquer le
 *               processus lors d'un évènement bloquant.
 */
function maFonction ($object) {

  // Actions

}
    

Cette fonction doit prendre pour seul paramètre, le LSobject contenant le LSattribute sur lequel l'évenement survient et doit retourner soit True si tout s'est bien passé, soit False en cas de problème. Dans le cas d'un événement bloquant, si la fonction retourne False, le processus est arrêté.

2.2. Création automatique du conteneur des LSobjets dans un subDn

Cette section décrit la manière de configurer la création automatique des conteneurs des LSobjets. Si le basedn correspondant à la branche de stockage des LSobjects n'existe pas, LdapSaisie tentera de le créer à partir de la configuration de la variable $GLOBALS['LSobjects']['[nom du type d'LSobject]']['container_auto_create'].

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['container_auto_create'] = array (
  'objectclass' => array(
      'objectclass1',
      'objectclass2',
      ...
    ),
    'attrs' => array(
      'attr1' => 'val1',
      'attr2' => array(
        'val2',
        'val3',
        ...
      ),
      ...
    )
);

Paramètres de configuration

objectclass
La liste des objectclass de l'objet conteneur.
attrs
Un tableau associatif dont les clés sont les noms des attributs de l'objet conteneur à définir et dont les valeurs associées sont la/les valeur(s) de ces attributs.

2.3. Déclencheurs

Cette section décrit la manière de paramétrer des déclencheurs afin que LdapSaisie exécute durant ses processus, et à des moments bien précis des traitements d'un LSobject, des fonctions que vous pourrez développer vous même. De plus, le résultat de l'exécution de vos fonctions pourra influer sur le déroulement des processus.

Actuellement, les évenements suivant sont gérés :

NomDescriptionBloquant
before_create

Avant la création du LSobject.

Oui

after_create

Après la création du LSobject.

Non

before_modify

Avant la modification du LSobject

Oui

after_modify

Après la modification du LSobject

Non

before_rename

Avant de renommer le LSobject

Oui

after_rename

Après avoir renommé le LSobject

Non

before_delete

Avant la suppression du LSobject

Oui

after_delete

Après la suppression du LSobject

Non

[Note]Note

Si un événement est dit bloquant, lors de l'exécution des actions liées, si une des fonctions retourne false , le processus s'arrêtera.

2.3.1. Configuration

La configuration des déclencheurs se fait dans la définition des types d'LSobjects. Par exemple, pour définir les fonctions à exécuter après la modification des LSobjects de type LSpeople, c'est à dire lors de leur évènement after_modify, il faut définir la variable suivante :

$GLOBALS['LSobjects']['[nom du type d'LSobject]']['after_modify']

Cette variable peut contenir soit une chaine de caractères correspondant au nom de la fonction à exécuter, soit un tableau de chaînes de caractères correspondant aux noms des fonctions à exécuter.

2.3.2. Ecriture d'une fonction

Une fonction exécuté par un déclencheur d'un LSobject se déclare de la manière suivante :

/*
 * Ma fonction à exécuter lors de l'evenement [event]
 *
 * Paramètre :
 *     - $object : Le LSobject sur lequel l'évènement survient
 *
 * Valeurs retournées :
 *     - True : Tout s'est bien passé
 *     - False : Une erreur est survenue ou la fonction souhaite bloquer le
 *               processus lors d'un évènement bloquant.
 */
function maFonction ($object) {

  // Actions

}
    

Cette fonction doit prendre pour seul paramètre, le LSobject sur lequel l'évènement survient et doit retourner soit True si tout s'est bien passé, soit False en cas de problème. Dans le cas d'un événement bloquant, si la fonction retourne False, le processus est arrêté.

2.4. customActions

Cette section décrit la manière de configurer les actions personnalisées exécutables sur les LSobjects appelées customActions.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['customActions'] = array (
  'action1' => array(
    'label' => '[label l'action]',
    'hideLabel' => '[booléen]',
    'helpInfo' => '[label d'aide]',
    'icon' => '[nom de l'icône de l'action]',
    'function' => '[fonction à exécuter]',
    'question_format' => '[LSformat de la question de confirmation]',
    'onSuccessMsgFormat' => '[LSformat du message à afficher en cas de succès de l'action]',
    'disableOnSuccessMsg' => '[booléen]',
    'noConfirmation' => '[booléen]',
    'redirectToObjectList' => '[booléen]',
    'noRedirect' => '[booléen]',
    'rights' => array(
      'LSprofile1',
      'LSprofile2',
      ...
    )
  )
);

Paramètres de configuration

label
Le label de l'action.
hideLabel
Cache le label dans le bouton de l'action.
helpInfo
Le label du message d'aide qui sera affiché au survole du bouton de l'action.
icon
Nom de l'îcone à afficher dans le bouton de l'action. Ce nom correspond au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le dossier /public_html/images/[nom du theme d'images]/.
function
Le nom de la fonction à exécuter qui implémente l'action personnalisée Cette fonction prendra en seule paramètre le LSobject sur lequel l'action devra être exécutée et retournera True en cas de succès ou False en cas d'échec d'exécution de la fonction.
question_format
Le LSformat de la question de confirmation d'exécution de l'action. Ce LSformat sera composé à l'aide du nom de l'objet.
onSuccessMsgFormat
Le LSformat du message à afficher en cas de succès d'exécution de l'action. Ce LSformat sera composé à l'aide du nom de l'objet.
disableOnSuccessMsg
Booléen permetant de désactiver le message afficher en cas de succès d'exécution de l'action.
noConfirmation
Booléen permetant de désactiver la confirmation de l'exécution de l'action.
redirectToObjectList
Booléen permetant de rediriger l'utilisateur vers la liste des objets plutôt que sur la fiche de l'objet après l'execution de l'action.
noRedirect
Booléen permetant de désactiver la redirection de l'utilisateur après l'execution de l'action. Cela permet à la fonction de définir son propre fichier de template de retour et donc d'afficher une page personnalisable.
rights
Tableau contenant la liste des noms des LSprofiles ayant le droit d'exécuter cette action.

2.4.1. Ecriture d'une fonction implémentant une customAction

Une fonction implémentant une customAction se déclare de la manière suivante :

/*
 * Ma fonction implémentant ma customAction
 *
 * Paramètre :
 *     - $object : Le LSobject sur lequel mon action doit être exécutée
 *
 * Valeurs retournées :
 *     - True : Tout s'est bien passé
 *     - False : Une erreur est survenue
 */
function maFonction ($object) {

  // Actions

}
    

Cette fonction doit prendre pour seul paramètre, le LSobject sur lequel l'action personnalisée doit être exécutée et doit retourner soit True si tout s'est bien passé, soit False en cas de problème.

[Note]Note

Ces fonctions sont le plus couramment définies au sein d'LSaddon.

2.5. LSrelation

Cette section décrit la manière de configurer les relations entre les LSobjects appelées LSrelation.

Dans le cadre d'une liaison dîte simple, c'est à dire une liaison au travers la valeur d'un attribut qui fera directement référence à un autre objet (DN ou la première valeur d'un attribut de référence), pourra être configurée simplement en spécifiant l'attribut de liaison et le type de valeur qu'il contient. Dans le cas d'une liaison plus complexe, il sera possible de développer vous même des méthodes de mise en relation.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSrelation'] = array (
  'relation1' => array(
    'label' => '[label de la relation]',
    'emptyText' => "[texte affiché si aucune relation avec d'autres objets 
                     n'existe pour l'objet courant]",
    'LSobject' => '[le type d'LSobjet en relation]',

    // Liaison simple
    'linkAttribute' => '[attribut de liaison]',
    'linkAttributeValue' => '[valeur de l'attribut de liaison]',
    'linkAttributeOtherValues' => array('[autres valeurs possible de l'attribut de liaison]', [...]),

    // Liaison complexe
    'list_function' => '[méthode1]',
    'getkeyvalue_function' => '[methode2]',
    'update_function' => '[methode3]',
    'remove_function' => '[methode4]',
    'rename_function' => '[methode5]',
    'canEdit_function' => '[methode6]',
    'canEdit_attribute' => '[nom d'attribut]',

    'rights' => array(
      'LSprofile1' => 'r',
      'LSprofile2' => 'w',
      ...
    )
  )
);

Paramètres de configuration

label
Le label de la relation.
emptyText
Le texte à afficher pour décrire le fait que l'objet courant n'a aucune relation d'établie avec d'autres LSobjects. Exemple (au sujet d'un utilisateur) : N'appartient à aucun groupe.
LSobject
Le type d'LSobject en relation avec le type courant. (Facultatif en cas de liaison complexe)
linkAttribute
Dans le cadre d'une relation simple, il s'agit de l'attribut de liaison du type d'LSobject en relation avec le type courant, c'est à dire l'attribut dans lequel on retrouve une valeur en relation avec l'objet courant. (Facultatif en cas de liaison complexe)
linkAttributeValue
Dans le cadre d'une relation simple, il s'agit du type de valeur prisent par l'attribut de liaison du type d'LSobject en relation avec le type courant. Il peut s'agir du mot clé dn si l'attribut de liaison contient le DN de l'objet courant ou bien le nom d'un attribut du type d'objet courant dont la première valeur sera stockée par l'attribut de liaison. (Facultatif en cas de liaison complexe)
linkAttributeOtherValues
Dans le cadre d'une relation simple, il s'agit d'autres types de valeur possiblement prisent par l'attribut en plus de celui défini par le paramètre linkAttributeValue. Ce paramètre ne sert qu'a détecter des liaisons établies à l'aide de valeurs autres que celle relative au paramètre linkAttributeValue : en cas de nouvelle liaison, c'est la valeur associée à ce dernier qui sera utilisée pour établir la liaison. (Facultatif en cas de liaison complexe)
list_function
La méthode de la classe du type d'LSobject en relation, permettant de lister les objets de ce type en relation avec l'objet courant. (Facultatif en cas de liaison simple)
getkeyvalue_function
La méthode de la classe du type d'LSobject en relation, permettant d'obtenir la valeur clé à stocker pour établir la relation entre l'objet courant et d'autres objets du type concerné. (Facultatif en cas de liaison simple)
update_function
La méthode de la classe du type d'LSobject en relation, permettant de mettre à jour les relations existantes entre l'objet courant et les objets du type concerné. Cette liste d'objets en relation est établie par l'utilisateur à travers l'interface. (Facultatif en cas de liaison simple)
remove_function
La méthode de la classe du type d'LSobject en relation permettant de supprimer une relation existante entre l'objet courant et un objet du type concerné. (Facultatif en cas de liaison simple)
rename_function
La méthode de la classe du type d'LSobject en relation permettant d'effectuer les actions nécessaires lorsque l'objet courant est renommé dans le but de maintenir les valeurs clés permettant d'établir les relations entre l'objet courant et les objets en relation avec lui. (Facultatif en cas de liaison simple)
canEdit_function
La méthode de la classe du type d'LSobject en relation permettant de vérifier que l'utilisateur à le droit de modifier la relation avec un objet en particulier. (Facultatif en cas de liaison simple)
canEdit_attribute
Le nom de l'attibut du type d'LSobject en relation devant être éditable par l'utilisateur pour que celui-ci puisse modifier la relation. Dans le cadre d'une relation simple, celui-ci peut, si nécessaire, être différent du paramètre linkAttribute.
rights
Tableau associatif dont les clés sont les noms des LSprofiles ayant des droits sur cette relation et dont les valeurs associées sont les droits correspondants. La valeur des droits d'un LSprofile peut être r pour le droit de lecture ou w pour le droit de lecture-écriture.Par défaut, un LSprofile n'a aucun droit.

2.6. LSform

Cette section décrit la manière de paramétrer les formulaires d'LdapSaisie pour un type LSobject donné. Pour chaque type d'LSobject, il faut configurer plusieurs formulaires correspondant aux vues gérées par LdapSaisie (création, modification, ...). Les formulaires se configurent par plusieurs biais :

  • Via la configuration des attributs : La configuration des attributs détermine la présence ou non des attributs dans les formulaires. Elle permet également de définir si on souhaite bloquer leur présence en lecture seulement.

  • Via les droits de l'utilisateur connecté sur les attributs de l'objet à éditer : en fonction des droits de l'utilisateur sur un attribut, celui-ci apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout.

  • Via la configuration au niveau de chaque type d'LSobject : il y est possible de définir le comportement globale du formulaire comme la validation via Ajax ou encore la disposition logique des attributs dans le formulaire.

    Structure
    $GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform'] = array (
      'ajaxSubmit' => [booléen],
      'layout' => array (
        // Configuration de la disposition logique des attributs
      ),
      'dataEntryForm' => array (
        // Configuration des masques de saisie
      )
    
    );
    

    Paramètres de configuration

    ajaxSubmit
    Booléen définissant si le formulaire sera envoyé via une requête Ajax plutôt qu'à travers un rafraîchissement de la page. Par défaut : VRAI.
    layout
    Tableau contenant la configuration de l'affichage du formulaire : il est possible de définir la disposition des attributs dans le formulaire en les regroupant dans des onglets et en les faisant apparaître dans un ordre logique.Voir la section concernée.
    dataEntryForm
    Tableau contenant la configuration des masques de saisie : il est possible de définir des masques de saisie pour faire en sorte que lors de la création d'un objet, seul un certain nombre d'élements soit demandé à l'utilisateur. Voir la section concernée.

2.6.1. Configuration de l'affichage

La configuration des layout se situe dans la configuration des LSobjects, dans la variable layout ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']). Cette variable est un tableau associatif dont la clé est l'identifiant de l'onglet et dont la valeur associée est la configuration de l'onglet.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout'] = array (
  'onglet1' => array(
    'label' => '[label de l'onglet]',
    'img' => 1, // Valeur possible 1 ou 0
    'args' => array (
      'arg1',
      'arg2',
      ...
    )
  ),
  ...
);

Paramètres de configuration

label
Le label de l'onglet.
img
Affiche ou non l'image d'un éventuel attribut de type HTML LSattr_html_image.
args
Tableau associatif contenant une liste ordonnée des attributs qui apparaîtront dans l'onglet.

[Important]Important

Lorsqu'un layout est défini, celui-ci est "suivi à la lettre" pour l'affichage du LSform. Ainsi, si un attribut est défini dans la configuration de l'objet comme présent dans le LSform courant, mais que celui-ci n'est pas présent dans le layout, il ne sera pas du tout affiché.

2.6.2. Configuration des masques de saisie

La configuration des masques de saisie (dataEntryForm) se situe dans la configuration des LSobjects, dans la variable dataEntryForm ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm']). Cette variable est un tableau associatif dont la clé est l'identifiant du masque de saisie et dont la valeur associée est sa configuration.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm'] = array (
  'masque1' => array(
    'label' => '[label du masque de saisie]',
    'disabledLayout' => [booleen], 
    'displayedElements' => array (
      'arg1',
      'arg2',
      ...
    ),
    'defaultValues' => array (
      'arg3' => [value],
      'arg4' => [value],
      ...
    ),
    'requiredAllAttributes' => [booleen],
    'requiredAttributes' => array (
      'arg1',
      'arg2',
      ...
    )
  ),
  ...
);

Paramètres de configuration

label
Le label du masque de saisie.
disabledLayout
Active ou non les layouts pour ce masque de saisie.
displayedElements
Tableau contenant la liste des attributs qui devront être saisie dans le masque de saisie.
defaultValues

Tableau associatif contenant la liste des valeurs par défaut des attributs. Les valeurs multiples sont possibles en utilisant des tableaux.

[Important]Important

Les valeurs seront vue comme des valeurs retournées par le formulaire et non comme des valeurs des attribus LDAP eux-même. Ainsi et par exemple, un attribut traité comme un booléen dans un formulaire pourra prendre comme valeur par défaut yes ou no.

requiredAttributes
Tableau contenant la liste des attributs obligatoires du masque de saisie. Cette liste d'attributs obligatoires viendra en complément de la configuration des attributs. Il est ainsi possible de rendre des attributs obligatoires durant la saisie d'un masque tout en les laissant facultatif le reste du temps.
requiredAllAttributes
Si ce parametre vaut True, tout les attributs du masque de saisie seront tous obligatoires de la même manière qu'avec le paramètre requiredAttributes.

2.7. LSsearch

Cette section décrit la manière de paramétrer les recherches dans l'annuaire pour un type d'LSobject donné.

La configuration des LSsearch se situe dans la configuration des LSobjects, dans la variable LSsearch ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSsearch']).

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSsearch'] = array (
  'attrs' => array(
    'attr1',
    'attr2',
    ...
    'attr3' => array(
      'searchLSformat' => '[LSformat]',
      'approxLSformat' => '[LSformat]',
    ),
    ...
  ),
  'params' => array(
    // Paramètres de la recherche
    'pattern' => '[string]',
    'sizelimit' => [integer],
    'recursive' => [boolean],
    'approx' => [boolean],
    'withoutCache' => [boolean],
    'onlyAccessible' => [boolean],
    // Paramètres de tri
    'sortBy' => [displayName|subDn],
    'sortDirection' => [ASC|DESC],
    'sortlimit' => [integer],
    // Paramètre d'affichage
    'displayFormat' => [LSformat],
    'nbObjectsByPage' => [integer],
    'nbPageLinkByPage' => [integer],
    'validPatternRegex' => '[regex]'
  ),
  'predefinedFilters' => array(
    'filter1' => 'label filter1',
    'filter2' => 'label filter2'
  ),
  'extraDisplayedColumns' => array(
    'col1' => array(
      'label' => 'label column 1',
      'LSformat' => '[LSformat]'
    ),
    'col2' => array(
      'label' => 'label column 2',
      'generateFunction' => '[fonction de génération]',
      'additionalAttrs' => array('[attr1]', '[attr2]', ...),
      'escape' => [booléen],
    ),
    'col3' => array(
      'label' => 'label column 3',
      'LSformat' => '[LSformat]',
      'alternativeLSformats' => array (
        '[LSformat 1]',
        '[LSformat 2]'
      ),
      'formaterLSformat' => '[LSformat]',
      'formaterFunction' => '[fonction de formatage]',
      'cssStyle' => '[CSS style]',
      'visibleTo' => array (
        '[LSprofile 1]',
        '[LSprofile 2]'
      )
    ),
  ),
  'customActions' =>  array (
    // Configuration des customActions pour les recherches de ce type d'objet
  )
);

Paramètres de configuration

attrs

Tableau listant les attributs pouvant être utilisés dans les filtres de recherche LDAP employés par LdapSaisie. Lorsqu'un motif de recherche est passé par l'utilisateur, LdapSaisie composera un filtre LDAP à partir de cette liste.

Lors d'une recherche non-approximative, le filtre de recherche sera composé (par défaut) de la manière suivante :

(|(attr1=*motif*)(attr2=*motif*)...)

Lors d'une recherche approximative, le filtre de recherche sera composé (par défaut) de la manière suivante :

(|(attr1=~motif)(attr2~=motif)...)

Il est également possible de paramétrer la manière dont sera composé le filtre de recherche attribut par attribut à l'aide des paramètres searchLSformat et approxLSformat.

[Important]Important

Ces filtres, une fois composés, sont insérés dans un autre, filtrant en plus sur les ObjectClass du type d'LSobject de la manière suivante :

(& (&(objectclass=oc1)(objectclass=oc2)) (filtre) )

Paramètres des attributs

searchLSformat

Ce paramètre est un LSformat permettant de définir, attribut par attribut, comment le filtre de recherche LDAP est composé à partir d'un motif de recherche et en cas de recherche non-approximative.

Ce LSformat est composé à l'aide des éléments name, le nom de l'attribut et pattern, le motif de recherche.

Exemple
(%{name}=%{pattern})
    
[Important]Important

Le filtre déduit doit obligatoirement commencer par ( et se terminer par ).

approxLSformat

Ce paramètre est un LSformat permettant de définir, attribut par attribut, comment le filtre de recherche LDAP est composé à partir d'un motif de recherche et en cas de recherche approximative.

Ce LSformat est composé à l'aide des éléments name, le nom de l'attribut et pattern, le motif de recherche.

Exemple
(%{name}=~%{pattern})
    
[Important]Important

Le filtre déduit doit obligatoirement commencer par ( et se terminer par ).

params

Tableau des paramètres par défaut d'une recherche. Ce tableau contient les paramètres qui seront utilisés pour initialisé une recherche. Ces paramètres pourront être redéfini par l'utilisateur ou par l'application en fonction du contexte dans lequel cette recherche est effectuée.

Paramètres de configuration

pattern
Mot clé de la recherche.
sizelimit
Entier determinant le nombre maximum d'objet pouvant être retournés dans une recherche.
recursive
Booléen déterminant si la recherche récursive est activée.
approx
Booléen déterminant si la recherche approximative est activée.
withoutCache
Booléen déterminant si le cache de recherche doit être utilisé.
onlyAccessible
Booléen déterminant si seul les objets accessibles à l'utilisateur connecté doivent être retournés par la recherche.
sortBy

Mot clé déterminant sur quel valeur/colonne le résultat de recherche sera trié.

Valeurs possibles : displayName, subDn ou NULL.

sortDirection

Mot clé déterminant le sens du trie du résultat de la recherche.

Valeurs possibles : ASC, DESC ou NULL.

sortlimit
Entier determinant le nombre maximum d'objet pouvant être triés dans le résultat d'une recherche.
displayFormat
LSformat d'affichage du nom de l'objet dans le résultat de la recherche.
nbObjectsByPage
Entier déterminant le nombre d'objet maximum affichés dans une page de résultat de la recherche.
nbPageLinkByPage

Entier déterminant le nombre maximum de liens vers d'autres pages affichés sous le résultat de la recherche.

Par défaut : 10

validPatternRegex

Expression régulière de validation des mots clés de recherche pour ce type d'LSobject.

(Par défaut : /^[\w \-\_\\\'\"^\[\]\(\)\{\}\=\+\£\%\$\€\.\:\;\,\?\/\@]+$/iu)

predefinedFilters

Tableau associatif contenant des filtres prédéfinis pour la recherche. Les clés sont les filtres au format LDAP et les valeurs sont les labels associés.

extraDisplayedColumns

Tableau associatif contenant des colonnes supplémentaires à afficher dans les résultats de recherche. Les clés sont les identifiants des colonnes supplémentaires et les valeurs sont leur configuration définie à partir des paramètres suivant :

label
Le label de la colonne.
LSformat
Le LSformat d'affichage de la colonne. Ce format est composé à partir des attributs des objets LDAP dans leur format brut.
alternativeLSformats
Tableau des LSformats alternatifs à utiliser si le résultat du format principal est vide. Les formats définis dans cette liste sont essayés les uns après les autres et le premier LSformat retournant une valeur non-vide est utilisé.
formaterLSformat
LSformat optionnel permettant de mettre en forme le résultat obtenu des LSformats précédents. Ce LSformat ne sera utilisé que si le résultat obtenu précédement n'est pas vide. Il est ainsi possible d'utiliser les paramètres LSformat et alternativeLSformats afin de récupérer la valeur à afficher, puis de la mettre en forme grâce à ce LSformat. Ce format est composé à partir des attributs des objets LDAP dans leur format brut et de la valeur retournés précedement accessible via la variable val.
formaterFunction
Le nom d'une fonction optionnelle à exécuter pour mettre en forme le résultat obtenu des LSformats précédents. Cette fonction ne sera appelée que si le résultat obtenu précédement n'est pas vide. La fonction prendra en paramètre la valeur à mettre en forme et retournera la valeur mise en forme.
generateFunction
Le nom d'une fonction qui sera utilisée pour générer la valeur d'affichage de cette colonne. La fonction prendra en paramètre une référence de l'objet LSsearchEntry et retournera la valeur de la colonne.
additionalAttrs
Un tableau de nom d'attributs à inclure dans le resultat de la recherche LDAP. Ce tableau permet notamment d'inclure les attributs nécessaires au bon fonctionnement de la fonction generateFunction.
escape

Ce paramètre booléen permet de définir si, lors de l'affichage, le contenu de la colonne doit être transformé pour protéger les caractères éligibles en entités HTML. Par défaut, ce paramètre est Vrai.

[Avertissement]Avertissement

Cette fonctionnalité existe pour des raisons de sécurité et notamment en protection des failles XSS. Si vous désactivez cette fonctionnalité, il est important de gérer la problématique de sécurité par ailleurs.

cssStyle
Ce paramètre permet de définir un style CSS personnalisé pour la colonne. S'il est défini, le contenu de ce paramètre sera ajouté en tant qu'attribut style des balises th et td de la colone.
visibleTo
Ce paramètre permet de restreindre la visibilité de cette colonne aux seuls LSprofiles spécifiés. S'il est omis, la colonne sera visible pour tous.
customActions
Tableau associatif contenant les paramètres de configuration des customActions. Voir la section concernée.

2.7.1. customActions

Cette section décrit la manière de configurer les actions personnalisées exécutables sur les recherches d'LSobjects appelées customActions.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSsearch']['customActions'] = array (
  'action1' => array(
    'label' => '[label l'action]',
    'hideLabel' => '[booléen]',
    'icon' => '[nom de l'icône de l'action]',
    'function' => '[fonction à exécuter]',
    'question_format' => '[LSformat de la question de confirmation]',
    'onSuccessMsgFormat' => '[LSformat du message à afficher en cas de succès de l'action]',
    'disableOnSuccessMsg' => '[booléen]',
    'noConfirmation' => '[booléen]',
    'redirectToObjectList' => '[booléen]',
    'rights' => array(
      'LSprofile1',
      'LSprofile2',
      ...
    )
  )
);

Paramètres de configuration

label
Le label de l'action.
hideLabel
Cache le label dans le bouton de l'action.
icon
Nom de l'îcone à afficher dans le bouton de l'action. Ce nom correspond au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le dossier /public_html/images/[nom du theme d'images]/.
function
Le nom de la fonction à exécuter qui implémente l'action personnalisée Cette fonction prendra en seule paramètre l'objet LSsearch sur lequel l'action devra être exécutée et retournera True en cas de succès ou False en cas d'échec d'exécution de la fonction.
question_format
Le LSformat de la question de confirmation d'exécution de l'action. Ce LSformat sera composé à l'aide du label de l'action.
onSuccessMsgFormat
Le LSformat du message à afficher en cas de succès d'exécution de l'action. Ce LSformat sera composé à l'aide du label de l'action.
disableOnSuccessMsg
Booléen permetant de désactiver le message afficher en cas de succès d'exécution de l'action.
noConfirmation
Booléen permetant de désactiver la confirmation de l'exécution de l'action.
redirectToObjectList
Booléen permetant de rediriger ou non l'utilisateur vers la liste des objets (Vrai par défaut). Si l'utilisateur n'est redirigé, le template par défaut (ou celui défini durant l'éxécution de la fonction) sera affiché.
rights
Tableau contenant la liste des noms des LSprofiles ayant le droit d'exécuter cette action.
2.7.1.1. Ecriture d'une fonction implémentant une customAction

Une fonction implémentant une customAction se déclare de la manière suivante :

/*
 * Ma fonction implémentant ma customAction
 *
 * Paramètre :
 *     - $search : L'objet LSsearch de la recherche sur lequel mon action doit être exécutée
 *
 * Valeurs retournées :
 *     - True : Tout s'est bien passé
 *     - False : Une erreur est survenue
 */
function maFonction ($search) {

  // Actions

}
    

Cette fonction doit prendre pour seul paramètre, l'objet LSsearch sur lequel l'action personnalisée doit être exécutée et doit retourner soit True si tout s'est bien passé, soit False en cas de problème.

[Important]Important

La recherche passée en paramètre n'a pas encore été exécutée. En conséquence, si vous avez besoin d'accéder au résultat de la recherche, il est nécessaire d'exécuter au préalable : $search -> run();. Cela permet en outre, de modifier les paramètres de la recherche avant de l'exécuter. Cela peut par exemple être utile, si vous avez besoin d'accèder aux valeurs d'attributs particuliers, d'ajouter des attributs au résultat de la recherche : $search -> setParam('attributes',array('attr1','attr2'));.

[Note]Note

Ces fonctions sont le plus couramment définies au sein d'LSaddon.

2.8. ioFormat

Cette section décrit la manière de paramétrer les formats d'import/export pour un type d'LSobject donné.

La configuration des ioFormats se situe dans la configuration des LSobjects, dans la variable ioFormat ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat']). Cette variable est un tableau associatif dont la clé est l'identifiant du format et dont la valeur associée est la configuration du format.

[Important]Important

Le moteur d'importation simule la validation d'un formulaire de création du type d'LSobject. En conséquence :

  • seul les attributs présent dans le formulaire de création peuvent être importés.
  • tous les attributs obligatoires présents dans le formulaire de création doivent être fournis par le fichier source ou générer à partir des autres attributs.
  • Les valeurs des attributs issus de l'importation seront vue comme des valeurs retournées par le formulaire et non comme des valeurs des attribus LDAP eux-même. Ainsi et par exemple, un attribut traité comme un booléen dans un formulaire pourra prendre comme valeur par défaut yes ou no.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat'] = array (
  '[ioFormat ID]' => array (
    'label' => '[Label du type de fichier]',
    'driver' => '[Pilote d'ioFormat utilisé]',
    'driver_options' => array([Options du pilote d'ioFormat utilisé]),
    'fields => array (
      '[champ 1]' => '[attribut 1]',
      '[champ 2]' => '[attribut 2]',
      [...]
    ),
    'generated_fields' => array (
      '[attribute 3]' => '[LSformat]',
      '[attribute 4]' => '[LSformat]',
      [...]
    )
  ),
  [...]
);

Paramètres de configuration

label
Le label du format
driver
Le pilote a utilisé pour ce format. Le pilote permet de gérér la lecture et l'écriture dans un type de fichier d'import/export. Pour plus d'information sur les pilotes disponibles, Voir la section concernée.
driver_options
Tableau associatif des options du pilote utilisé pour ce format. Pour plus d'informations, consulter la documentation du pilote utilisé.
fields
Tableau associatif permettant d'associer un champ du fichier source (la clé) avec attribut de l'objet LDAP (la valeur).
generated_fields
Tableau associatif permettant de définir des LSformats pour générer des valeurs d'attributs automatiquement. Ce tableau contient en clé, le nom de l'attribut à généré, et en valeur associée, le LSformat à utilisé. Ce LSformat est composé à l'aide des valeurs des autres attributs de l'objet.

2.8.1. Pilote d'ioFormat

Cette section décrit la manière de configurer les pilotes d'ioFormat utilisés lors des imports/exports d'LSobjects.

2.8.1.1. Pilote de fichiers CSV

Ce pilote permet de gérer l'import/export de LSobject à partir d'un fichier CSV. Ce pilote utilise la classe PEAR File_CSV_DataSource . Par défaut, les paramètres de lecture et d'écriture des fichiers sont : la virgule sert de délimiteur, le caractère " peut être utilisé pour encadrer les valeurs des champs et la longueur maximale d'une ligne est 999999. Ces paramètres peuvent être modifiés en configurant les options du pilote.

Structure
$GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat']['[ID ioFormat]']['driver_options'] = array (
  'delimiter' => '[délimiteur]',
  'length' => [longueur maximale d'une ligne],
  'escape' => '[caratère d'encadrement]'
);

Paramètres de configuration

delimiter
Le caractère utilisé pour délimiter les champs (Par défault, une virgule).
length
La longueur maximale d'une ligne du fichier. Si zéro est spécifié, la longueur d'une ligne ne sera pas limité, mais la lecture du fichier sera ralenti. (Par défaut : 999999 )
escape
Le caractère utilisé pour encadrer les valeurs des champs (Par défault : ").

3. Configuration des LSaddons

Cette partie décrit la manière de configurer les différents LSaddons actuellement supportés par LdapSaisie. Ces addons peuvent avoir un fichier de configuration et il sera alors stocké dans le dossier conf/LSaddons/ et potera le nom config.LSaddons.[addon name].php.

3.1. LSaddon_asterisk

Cet LSaddon est utilisé pour gérer les fonctionnalités spécifiques au serveur de téléphonie Asterisk. Cet LSaddon donne accès à une fonction permettant l'encodage d'un mot de passe au format spécifique attendu par Asterisk. Ce format est un hash MD5 d'une chaine de caractère composée du nom d'utilisateur, d'une chaine fixe spécifiée dans la configuration d'Asterisk et du mot de passe en clair.

3.2. LSaddon_exportSearchResultAsCSV

Cet LSaddon fournie une fonction du même nom pouvant être utilisée comme customActions et permettant de télécharger le résultat d'une recherche au format CSV. L'export généré reprend exactement le contenu des colonnes du tableau du résultat de la recherche. Le DN de l'objet LDAP correspondant est également fournis dans une colonne.

Des paramètres de configuration sont disponibles dans le fichier de configuration config.LSaddons.exportSearchResultAsCSV.php. Ils permettent notamment de contrôller le format du fichier CSV généré.

Structure du fichier
// CSV file delimiter
define('LS_EXPORTSEARCHRESULTASCSV_DELIMITER',',');
  
// CSV file enclosure
define('LS_EXPORTSEARCHRESULTASCSV_ENCLOSURE','"');
  
// CSV file escape character (available since PHP 5.5.4)
define('LS_EXPORTSEARCHRESULTASCSV_ESCAPE_CHAR','\\');

Ci-dessous, vous trouverez un exemple de configuration de la fonction exportSearchResultAsCSV() comme customActions

Exemple d'utilisation$GLOBALS['LSobjects']['LSpeople']['LSsearch'] = array (
        [...]
        'customActions' => array (
                'exportSearchResultAsCSV' => array (
                        'label' => 'Export result as CSV',
                        'icon' => 'export_csv',
                        'function' => 'exportSearchResultAsCSV',
                        'noConfirmation' => true,
                        'disableOnSuccessMsg' => true,
                        'rights' => array (
                                'admin'
                        )
                ),
        ),
        [...]
);
[Note]Note

Le label et l'icône fournis dans cet exemple sont traduits et délivrés avec LdapSaisie

3.3. LSaddon_mail

Cet LSaddon est utilisé pour gérer l'envoie de mail. Le module PEAR Mail doit être installé. Il doit être configuré en éditant son fichier de configuration config.LSaddons.mail.php.

Structure du fichier/*
 ***********************************************
 * Configuration du support de l'envoi de mail *
 ***********************************************
 */

// Pear :: Mail
define('PEAR_MAIL','/usr/share/php/Mail.php');

/*
 * Méthode d'envoie :
 *  - mail : envoie avec la méthode PHP mail()
 *  - sendmail : envoie la commande sendmail du système
 *  - smtp : envoie en utilisant un serveur SMTP
 */
define('MAIL_SEND_METHOD','smtp');

/*
 * Paramètres d'envoie :
 *   Ces paramètres dépende de la méthode utilisé. Repporté vous à la documentation
 *   de PEAR :: Mail pour plus d'information.
 *   Lien : http://pear.php.net/manual/en/package.mail.mail.factory.php
 * Infos : 
 *  List of parameter for the backends
 *  mail
 *    o If safe mode is disabled, $params will be passed as the fifth 
 *      argument to the PHP mail() function. If $params is an array, 
 *      its elements will be joined as a space-delimited string. 
 *  sendmail
 *    o $params["sendmail_path"] - The location of the sendmail program 
 *      on the filesystem. Default is /usr/bin/sendmail.
 *    o $params["sendmail_args"] - Additional parameters to pass to the 
 *      sendmail. Default is -i. 
 *  smtp
 *    o $params["host"] - The server to connect. Default is localhost.
 *    o $params["port"] - The port to connect. Default is 25.
 *    o $params["auth"] - Whether or not to use SMTP authentication. 
 *      Default is FALSE.
 *    o $params["username"] - The username to use for SMTP authentication.
 *    o $params["password"] - The password to use for SMTP authentication.
 *    o $params["localhost"] - The value to give when sending EHLO or HELO.
 *      Default is localhost
 *    o $params["timeout"] - The SMTP connection timeout. 
 *      Default is NULL (no timeout).
 *    o $params["verp"] - Whether to use VERP or not. Default is FALSE.
 *    o $params["debug"] - Whether to enable SMTP debug mode or not. 
 *      Default is FALSE.
 *    o $params["persist"] - Indicates whether or not the SMTP connection 
 *      should persist over multiple calls to the send() method.
 */
$MAIL_SEND_PARAMS = NULL;

/*
 * Headers :
 */
$MAIL_HEARDERS = array(
  "Content-Type"  =>  "text/plain",
  "charset"       =>  "UTF-8",
  "format"        =>  "flowed"
);

Cet LSaddon offre la possibilité d'utilisé la fonction PHP sendMail().

bool sendMail($to,  
 $subject,  
 $msg,  
 $headers); 
string $to;
string $subject;
string $msg;
array $headers;
 

3.4. LSaddon_maildir

Cet LSaddon est utilisé pour gérer la manipulation distante de maildir. FIXME

3.5. LSaddon_phpldapadmin

Cet LSaddon est utilisé pour permettre un lien facile entre le logiciel PhpLdapAdmin et LdapSaisie. Il sera possible ainsi à partir d'un objet dans LdapSaisie de voir ce même objet dans PhpLdapAdmin.

Il est necessaire de configurer l'URL de votre installation de PhpLdapAdmin dans le fichier de configuration config.LSaddons.phpldapadmin.php.

Structure du fichier
// PhpLdapAdmin View Object URL format
define('LS_PHPLDAPADMIN_VIEW_OBJECT_URL_FORMAT','//'.$_SERVER['SERVER_NAME'].'/phpldapadmin/cmd.php?cmd=template_engine&server_id=0&dn=%{dn}');

Cet LSaddon offre la possibilité d'utilisé la fonction PHP redirectToPhpLdapAdmin() comme customActions.

bool redirectToPhpLdapAdmin($ldapObject); 
LSldapObject $ldapObject;
 

Exemple d'utilisation$GLOBALS['LSobjects']['LSpeople'] = array (
        [...]
        'customActions' => array (
                'redirectPhpLdapAdmin' => array (
                        'function' => 'redirectToPhpLdapAdmin',
                        'label' => 'See in PhpLdapAdmin',
                        'hideLabel' => True,
                        'noConfirmation' => true,
                        'disableOnSuccessMsg' => true,
                        'icon' => 'phpldapadmin',
                        'rights' => array (
                                'admin'
                        )
                ),
        ),
        [...]
);

4. Configuration des LSauthMethods

Cette partie décrit la manière de configurer les méthodes d'authentification d'LdapSaisie appelée LSauthMethod. Ces librairies peuvent avoir un fichier de configuration et il sera alors stocké dans le dossier conf/LSauth/.

4.1. LSauthMethod_HTTP

Cette LSauthMethod est utilisée pour gérer l'authentification via les variables d'environnements définies suite à une authentification gérée par le serveur HTTP. En PHP, ces informations sont consultables via les variables $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW']. Si la variable $_SERVER['PHP_AUTH_USER'] est présente, une recherche dans l'annuaire est effectué pour trouver l'utilisateur correspondant. L'authentification réussie uniquement si un et un seul utilisateur est retourné par la recherche et si une authentification auprès de l'annuaire LDAP réussie à l'aide du DN de l'objet LDAP trouvé et du mot de passe issu de la variable $_SERVER['PHP_AUTH_PW'].

[Note]Note

La recherche de l'utisateur est effectuée sur une égalité parfaite du RDN ou en utilisant le LSformat de fitre de recherche authObjectFilter défini dans la configuration du serveur LDAP

Cette librairie peut être configurée en éditant le fichier de configiration conf/LSauth/config.LSauthMethod_HTTP.php.

Structure du fichier/*
 *****************************************************
 * Configuration of the HTTP authentification support *
 *****************************************************
 */

// Don't check HTTP server's login/password by LDAP authentication challenge
//define('LSAUTHMETHOD_HTTP_TRUST_WITHOUT_PASSWORD_CHALLENGE',true);

Paramètres de configuration

LSAUTHMETHOD_HTTP_TRUST_WITHOUT_PASSWORD_CHALLENGE

Permet de désactiver le test d'authentification auprès de l'annuaire LDAP. Pour cela, cette constante doit être définie et valoir True.

LSAUTHMETHOD_HTTP_METHOD

Permet de définir la méthode utilisée par le serveur HTTP pour passer à PHP l'identifiant de l'utilisateur connecté et son mot de passe.

Cette constance peut pendre les valeurs suivantes :

PHP_PASS

Dans cette méthode, le serveur HTTP défini les variables d'environnement PHP_AUTH_USER et PHP_AUTH_PW. Cette méthode est la méthode par défaut et convient en cas d'utilisation de mod_php.

REMOTE_USER

Dans cette méthode, le serveur HTTP défini la variable d'environnement REMOTE_USER. Cette variable ne contient que l'identifiant de l'utilisateur connecté. Cette méthode ne peut donc être utilisée que conjointement avec l'activation du paramètre LSAUTHMETHOD_HTTP_TRUST_WITHOUT_PASSWORD_CHALLENGE.

AUTHORIZATION

Dans cette méthode, le serveur HTTP passe le contenu de l'entête HTTP Authorization dans la variable d'environnement HTTP_AUTHORIZATION. Cette méthode convient en cas d' utilisation de PHP en mode CGI ou encore via PHP-FPM.

Pour utiliser cette méthode, il faudra adapter la configuration du serveur HTTP. Par exemple, pour Apache HTTPd, vous pouvez utiliser le module rewrite et la règle de réécriture suivante :

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    

4.2. LSauthMethod_CAS

Cette LSauthMethod est utilisée pour gérer l'authentification via un service SSO CAS. Cette librairie doit être configurée en éditant le fichier de configiration conf/LSauth/config.LSauthMethod_CAS.php.

Structure du fichier/*
 *****************************************************
 * Configuration of the CAS authentification support *
 *****************************************************
 */

// phpCAS Path (http://www.ja-sig.org/wiki/display/CASC/phpCAS)
define('PHP_CAS_PATH','/usr/share/php/CAS.php');

// phpCAS Debug File
// define('PHP_CAS_DEBUG_FILE','/tmp/phpCAS.log');

// Disable logout
define('LSAUTH_CAS_DISABLE_LOGOUT',false);

// CAS Server version (used constant name know by phpCAS : CAS_VERSION_1_0 or CAS_VERSION_2_0)
define('LSAUTH_CAS_VERSION','CAS_VERSION_2_0');

// CAS Server hostname
define('LSAUTH_CAS_SERVER_HOSTNAME','cas.univ.fr');

// CAS Server port
define('LSAUTH_CAS_SERVER_PORT',443);

// CAS Server URI (empty by default)
// define('LSAUTH_CAS_SERVER_URI','cas/');

// No SSL validation for the CAS server
define('LSAUTH_CAS_SERVER_NO_SSL_VALIDATION',false);

// CAS server SSL Certificate path
//define('LSAUTH_CAS_SERVER_SSL_CERT','');

// CAS server SSL CA Certificate path
//define('LSAUTH_CAS_SERVER_SSL_CACERT','');

Paramètres de configuration

PHP_CAS_PATH
Le chemin d'accès du fichier CAS.php de la librairie phpCAS. Le chemin d'exemple correspond au chemin résultant d'une installation via PEAR sur une Debian (Lenny).
PHP_CAS_DEBUG_FILE
Chemin du fichier de log de la librairie phpCAS. Commenter la ligne pour désactiver les logs.
LSAUTH_CAS_DISABLE_LOGOUT

Booléen définissant si l'utilisateur peut se déconnecter du serveur CAS depuis l'interface.

[Note]Note

Remarque : l'appel de l'URL de déconnexion via une requête GET supprimera la session PHP et donc la session LdapSaisie sans déconnecter pour autant l'utilisateur au niveau du serveur CAS. Cela peut donc permettre de gérer la déconnexion automatique au niveau d'LdapSaisie suite à une déconnexion au niveau du CAS à traver le concepte de Global Logout.

LSAUTH_CAS_VERSION

Nom de la constant phpCAS permettant de définir la version CAS du serveur. Actuellement, la librairie phpCAS ne reconnait que la constante CAS_VERSION_1_0 pour la version 1 de CAS ou la constante CAS_VERSION_2_0 pour la version 2 de CAS.

[Note]Note

Remarque : Des tests on montrés que l'utilisation d'une compatibilité CAS version 2 peut également fonctionner sur un version 3 du serveur CAS.

LSAUTH_CAS_SERVER_HOSTNAME
Le nom d'hôte du serveur CAS.
LSAUTH_CAS_SERVER_PORT
Le port d'écoute du serveur CAS.
LSAUTH_CAS_SERVER_URI
Le dossier HTTP dans lequel se trouve le service CAS. Exemple : Pour un service CAS accessible via l'URL https://cas.univ.fr/cas/, la constante devra valoir cas/.
LSAUTH_CAS_SERVER_NO_SSL_VALIDATION
Booléen permettant de désactiver la validation du certificat SSL du serveur CAS lors des requêtes de validation des tickets CAS.
LSAUTH_CAS_SERVER_SSL_CERT
Chemin d'accès du fichier contenant le certificat SSL du serveur CAS au format PEM. Commenter la ligne pour désactiver ce paramètre.
LSAUTH_CAS_SERVER_SSL_CACERT
Chemin d'accès du fichier contenant le certificat SSL de la CA du serveur CAS au format PEM. Commenter la ligne pour désactiver ce paramètre.

4.3. LSauthMethod_anonymous

Cette LSauthMethod est utilisée pour gérer l'authentification automatique des utilisateurs arrivant (équivalent à un mode anonyme). Cette librairie doit être configurée en éditant le fichier de configuration conf/LSauth/config.LSauthMethod_anonymous.php et notament en définissant la constante LSAUTHMETHOD_ANONYMOUS_USER contenant le login d'un utilisateur dont les droits d'accès seront endossés par tout les personnes utilisant LdapSaisie.