diff --git a/doc/conf/subDn.docbook b/doc/conf/subDn.docbook index 276a5e06..665a2ebf 100644 --- a/doc/conf/subDn.docbook +++ b/doc/conf/subDn.docbook @@ -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], diff --git a/public_html/includes/class/class.LSsession.php b/public_html/includes/class/class.LSsession.php index 1520ebf7..f188f7b9 100644 --- a/public_html/includes/class/class.LSsession.php +++ b/public_html/includes/class/class.LSsession.php @@ -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 (