LSprofiles by LSobject: add possibility to compute basedn using LSformat on authenticated user

This commit is contained in:
Benjamin Renard 2022-09-28 16:50:24 +02:00
parent a56b20728a
commit dcf68a2330
2 changed files with 12 additions and 8 deletions

View file

@ -203,7 +203,7 @@ objets pour lesquels l'utilisateur appartiendra au
// or
'filter' => [format du filtre de recherche],
'basedn' => [basedn de recherche],
'basedn' => [format du basedn de recherche],
'params' => [configuration de la recherche]
),
array (
@ -215,7 +215,7 @@ objets pour lesquels l'utilisateur appartiendra au
// ou
'filter' => [format du filtre de recherche],
'basedn' => [basedn de recherche],
'basedn' => [format du basedn de recherche],
'params' => [configuration de la recherche]
),
),
@ -232,12 +232,13 @@ la valeur clé <emphasis>LSobjects</emphasis> signifie qu'on est dans un cas de
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
consiste à partir de l'objet de l'utilisateur et à générer un filtre et une base 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
<emphasis>ou</emphasis>.</para>
<emphasis>ou</emphasis>. Dans le cadre d'un fonctionnement enchainée, la base de
recherche est toujours générer à partir de l'objet de l'utilisateur connecté.</para>
<para>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
@ -298,8 +299,11 @@ objets retournés. Les paramètres de la recherche sont&nbsp;:
<varlistentry>
<term>basedn</term>
<listitem>
<simpara>C'est le <emphasis>basedn</emphasis> de la recherche. Il est possible
ainsi de la limiter sur les LSojects d'une branche précise de l'annuaire.
<simpara>C'est le format paramétrable du <emphasis>basedn</emphasis> de la
recherche généré à partir de l'utilisateur connecté. Il est possible ainsi
de la limiter sur les LSojects d'une branche précise de l'annuaire.
Voir le paragraphe <link linkend="config-LSformat">Format paramètrable</link>
pour plus d'informations sur l'écriture du format.</simpara>
<emphasis>(Paramètre facultatif)</emphasis></simpara>
</listitem>
</varlistentry>

View file

@ -1934,7 +1934,7 @@ class LSsession {
}
$filter = LSldap::combineFilters('or', $filters);
$params = array(
'basedn' => isset($filter_def['basedn']) ? $filter_def['basedn'] : $basedn,
'basedn' => isset($filter_def['basedn']) ? self :: getLSuserObject() -> getFData($filter_def['basedn']) : $basedn,
'filter' => $filter,
'onlyAccessible' => False
);
@ -1971,7 +1971,7 @@ class LSsession {
}
# we are gonna grow a set of objects progressively, we start from the user
$set = array(self :: getLSuserObject());
$basedn = isset($listInfos['basedn']) ? $listInfos['basedn'] : null;
$basedn = isset($listInfos['basedn']) ? self :: getLSuserObject() -> getFData($listInfos['basedn']) : null;
$LSobject = isset($listInfos['LSobject']) ? $listInfos['LSobject'] : $LSobject;
if (isset($listInfos['filters']) && is_array($listInfos['filters'])) {