LSsession : Added nologin parameter in subDn configuration
authorBenjamin Renard <brenard@easter-eggs.com>
Tue, 16 Nov 2010 10:50:18 +0000 (11:50 +0100)
committerBenjamin Renard <brenard@easter-eggs.com>
Tue, 16 Nov 2010 10:50:18 +0000 (11:50 +0100)
doc/conf/subDn.docbook
public_html/includes/class/class.LSsession.php

index 276a5e0..665a2eb 100644 (file)
@@ -70,6 +70,7 @@ l'annuaire.
   // 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],
@@ -81,6 +82,7 @@ l'annuaire.
     '[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
       'LSobjects' => array( // Liste des types d'LSobjets présents dans les sous-niveaux
         [LSobject1],
         [LSobject2],
index 1520ebf..f188f7b 100644 (file)
@@ -1032,8 +1032,9 @@ class LSsession {
   *
   * @retval mixed Tableau des subDn, false si une erreur est survenue.
   */
-  public static function getSubDnLdapServer() {
-    if (self :: cacheSudDn() && isset(self :: $_subDnLdapServer[self :: $ldapServerId])) {
+  public static function getSubDnLdapServer($login=false) {
+    $login=(bool)$login;
+    if (self :: cacheSudDn() && isset(self :: $_subDnLdapServer[self :: $ldapServerId][$login])) {
       return self :: $_subDnLdapServer[self :: $ldapServerId];
     }
     if (!self::subDnIsEnabled()) {
@@ -1041,6 +1042,7 @@ class LSsession {
     }
     $return=array();
     foreach(self :: $ldapServer['subDn'] as $subDn_name => $subDn_config) {
+      if ($login && $subDn_config['nologin']) continue;
       if ($subDn_name == 'LSobject') {
         if (is_array($subDn_config)) {
           foreach($subDn_config as $LSobject_name => $LSoject_config) {
@@ -1083,7 +1085,7 @@ class LSsession {
       }
     }
     if (self :: cacheSudDn()) {
-      self :: $_subDnLdapServer[self :: $ldapServerId]=$return;
+      self :: $_subDnLdapServer[self :: $ldapServerId][$login]=$return;
       $_SESSION['LSsession_subDnLdapServer'] = self :: $_subDnLdapServer;
     }
     return $return;
@@ -1095,8 +1097,8 @@ class LSsession {
    * 
    * @return array() Tableau des subDn trié
    */  
-  public static function getSortSubDnLdapServer() {
-    $subDnLdapServer = self :: getSubDnLdapServer();
+  public static function getSortSubDnLdapServer($login=false) {
+    $subDnLdapServer = self :: getSubDnLdapServer($login);
     if (!$subDnLdapServer) {
       return array();
     }
@@ -1112,8 +1114,8 @@ class LSsession {
   *
   * @retval string Les options (<option>) pour la sélection du topDn.
   */
-  public static function getSubDnLdapServerOptions($selected=NULL) {
-    $list = self :: getSubDnLdapServer();
+  public static function getSubDnLdapServerOptions($selected=NULL,$login=false) {
+    $list = self :: getSubDnLdapServer($login);
     if ($list) {
       asort($list);
       $display='';
@@ -2235,7 +2237,7 @@ class LSsession {
         else {
           $sel = NULL;
         }
-        $list = self :: getSubDnLdapServerOptions($sel);
+        $list = self :: getSubDnLdapServerOptions($sel,true);
         if (is_string($list)) {
           $data['list_topDn'] = "<select name='LSsession_topDn' id='LSsession_topDn'>".$list."</select>";
           $data['subDnLabel'] = self :: getSubDnLabel();