From dcf68a23304fd89f116099a3765555dc2b865041 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 28 Sep 2022 16:50:24 +0200 Subject: [PATCH] LSprofiles by LSobject: add possibility to compute basedn using LSformat on authenticated user --- doc/conf/LSprofile.docbook | 16 ++++++++++------ src/includes/class/class.LSsession.php | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/conf/LSprofile.docbook b/doc/conf/LSprofile.docbook index b31f857c..47ad4037 100644 --- a/doc/conf/LSprofile.docbook +++ b/doc/conf/LSprofile.docbook @@ -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é LSobjects 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 -ou. +ou. 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é. 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 : 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. + C'est le format paramétrable du basedn 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 Format paramètrable + pour plus d'informations sur l'écriture du format. (Paramètre facultatif) diff --git a/src/includes/class/class.LSsession.php b/src/includes/class/class.LSsession.php index 8fae33df..3f3847a4 100644 --- a/src/includes/class/class.LSsession.php +++ b/src/includes/class/class.LSsession.php @@ -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'])) {