LSaddon SUPANN: add support for some attributes

Add support of following attributes:
- supannCivilite:
  add supannGetCivilitePossibleValues()
- eduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonAffiliation()
- supannCheckEduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonPrimaryAffiliation()
- supannCheckEduPersonPrimaryAffiliation:
  add generate_eduPersonPrincipalName()
This commit is contained in:
Benjamin Renard 2020-09-22 16:11:11 +02:00
parent de62999fea
commit 43cf5ccd7a
6 changed files with 272 additions and 12 deletions

View file

@ -3,7 +3,7 @@
<para>Cette section décrit la manière de configurer des règles de vérification <para>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 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 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 recherche paramètrable dans l'annuaire ou encore d'appeler une fonction de
votre choix pour effectuer la vérification voulue.</para> votre choix pour effectuer la vérification voulue.</para>
<sect4 id='config-LSattribute-validation-search'> <sect4 id='config-LSattribute-validation-search'>
@ -12,7 +12,7 @@
pas en conflit avec d'autres objets de l'annuaire. Ce test peut également 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 permetre de vérifier si les valeurs devant faire référence à d'autres objets
de l'annuaire sont correctes.</para> de l'annuaire sont correctes.</para>
<programlisting linenumbering="unnumbered"> <programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>... <citetitle>Structure</citetitle>...
<![CDATA['validation' => array ( <![CDATA['validation' => array (
@ -103,10 +103,10 @@
<sect4 id='config-LSattribute-validation-function'> <sect4 id='config-LSattribute-validation-function'>
<title>Validation par l'exécution d'une fonction</title> <title>Validation par l'exécution d'une fonction</title>
<para>Il est possible d'effectuer la validation de l'attribut par l'exécution <para>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 d'une fonction de votre choix. Il lui sera passé en paramètre une référence à
complet. Si la fonction ne retourne pas <emphasis>true</emphasis>, la l'objet <literal>LSldapObject</literal> courant. Si la fonction ne retourne
validation échouera.</para> pas <emphasis>true</emphasis>, la validation échouera.</para>
<programlisting linenumbering="unnumbered"> <programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>... <citetitle>Structure</citetitle>...
<![CDATA['validation' => array ( <![CDATA['validation' => array (

View file

@ -45,6 +45,32 @@ $GLOBALS['LS_SUPANN_ETABLISSEMENT_DN'] = 'supannCodeEntite=XXX,ou=structures,dc=
// Exemple : 0753742K // Exemple : 0753742K
$GLOBALS['LS_SUPANN_ETABLISSEMENT_UAI'] = '0753742K'; $GLOBALS['LS_SUPANN_ETABLISSEMENT_UAI'] = '0753742K';
// LSformat de l'attribut eduPersonPrincipalName
$GLOBALS['LS_SUPANN_EPPN_FORMAT'] = "%{uid}@univ.fr";
// Liste des valeurs possibles des affiliations et leur label
$GLOBALS['LS_SUPANN_AFFILIATIONS'] = array (
'affiliate' => ___('Affiliate'),
'alum' => ___('Alumnus'),
'employee' => ___('Employee'),
'faculty' => ___('Faculty'),
'member' => ___('Member'),
'student' => ___('Student'),
'retired' => ___('Retired'),
'teacher' => ___('Teacher'),
'staff' => ___('Staff'),
'researcher' => ___('Researcher'),
'emeritus' => ___('Emeritus teacher'),
'library-walk-in' => ___('Library - walk-in'),
'registered-reader' => ___('Library - registered'),
);
// Liste des valeurs possibles de la civilité d'une personne et leur label
$GLOBALS['LS_SUPANN_CIVILITES'] = array (
'Mme' => ___('Mrs.'),
'M.' => ___('Mr.'),
);
/* /*
* Nomenclatures SUPANN * Nomenclatures SUPANN
* *

View file

@ -57,7 +57,8 @@ LSerror :: defineError('SUPANN_02',
'LS_SUPANN_LSOBJECT_ENTITE_TYPE', 'LS_SUPANN_LSOBJECT_ENTITE_TYPE',
'LS_SUPANN_LSOBJECT_ENTITE_FORMAT_SHORTNAME', 'LS_SUPANN_LSOBJECT_ENTITE_FORMAT_SHORTNAME',
'LS_SUPANN_ETABLISSEMENT_UAI', 'LS_SUPANN_ETABLISSEMENT_UAI',
'LS_SUPANN_ETABLISSEMENT_DN' 'LS_SUPANN_ETABLISSEMENT_DN',
'LS_SUPANN_EPPN_FORMAT',
); );
foreach($MUST_DEFINE_STRING as $string) { foreach($MUST_DEFINE_STRING as $string) {
@ -74,6 +75,8 @@ LSerror :: defineError('SUPANN_02',
} }
$MUST_DEFINE_ARRAY= array( $MUST_DEFINE_ARRAY= array(
'LS_SUPANN_CIVILITES',
'LS_SUPANN_AFFILIATIONS',
'supannNomenclatures', 'supannNomenclatures',
); );
foreach($MUST_DEFINE_ARRAY as $array) { foreach($MUST_DEFINE_ARRAY as $array) {
@ -425,3 +428,114 @@ LSerror :: defineError('SUPANN_02',
} }
return $retval; return $retval;
} }
/**
* Retourne les valeurs possibles de l'attribut supannCivilite.
*
* Cette fonction est prévue pour pouvoir être utilisé comme paramètre
* get_possible_values de la configuration HTML de l'attribut
* supannCivilite avec un type d'attribut HTML select_list (ou select_box).
*
* @param[in] $options La configuration HTML de l'attribut
* @param[in] $name Le nom de l'attribut
* @param[in] &$ldapObject Une référence à l'object LSldapObject
*
* @retval array Tableau contenant les valeurs possibles de l'attribut
* (avec les labels traduits).
**/
function supannGetCivilitePossibleValues($options, $name, &$ldapObject) {
$retval = array();
foreach($GLOBALS['LS_SUPANN_CIVILITES'] as $value => $label)
$retval[$value] = __($label);
return $retval;
}
/**
* Retourne les valeurs possibles des affiliations.
*
* Cette fonction est prévue pour pouvoir être utilisé comme paramètre
* get_possible_values de la configuration HTML de l'attribut
* eduPersonAffiliation (par exemple) avec un type d'attribut HTML select_list.
*
* @param[in] $options La configuration HTML de l'attribut
* @param[in] $name Le nom de l'attribut
* @param[in] &$ldapObject Une référence à l'object LSldapObject
*
* @retval array Tableau contenant les valeurs possibles de l'attribut
* (avec les labels traduits).
**/
function supannGetAffiliationPossibleValues($options, $name, &$ldapObject) {
$retval = array();
foreach($GLOBALS['LS_SUPANN_AFFILIATIONS'] as $value => $label)
$retval[$value] = __($label);
return $retval;
}
/**
* Vérifie les valeurs de l'attribut eduPersonAffiliation
*
* Cette fonction est prévue pour pouvoir être utilisé comme paramètre
* function de la configuration de validation de l'intégrité des valeurs
* de l'attribut eduPersonAffiliation (paramètre validation).
*
* Elle s'assure que des valeurs affiliate et member n'ont pas été toutes
* les deux selectionnées, car elles sont incompatibles.
*
* @author Benjamin Dauvergne <bdauvergne@entrouvert.com>
*
* @param[in] &$ldapObject Une référence à l'object LSldapObject
* @author Benjamin Dauvergne <bdauvergne@entrouvert.com>
*
* @retval boolean True si les valeurs sont valides, False sinon
**/
global $_supannCheckEduPersonAffiliation_checked;
$_supannCheckEduPersonAffiliation_checked = false;
function supannCheckEduPersonAffiliation(&$ldapObject) {
global $_supannCheckEduPersonAffiliation_checked;
$values = $ldapObject->getValue('eduPersonAffiliation');
if (!$_supannCheckEduPersonAffiliation_checked && in_array('affiliate', $values) && in_array('member', $values)) {
$_supannCheckEduPersonAffiliation_checked = true;
return false;
}
return true;
}
/**
* Vérifie la valeur de l'attribut eduPersonPrimaryAffiliation
*
* Cette fonction est prévue pour pouvoir être utilisé comme paramètre
* function de la configuration de validation de l'intégrité des valeurs
* de l'attribut eduPersonPrimaryAffiliation (paramètre validation).
*
* Elle s'assure que la valeur de l'attribut eduPersonPrimaryAffiliation
* fait bien partie des valeurs de l'attribut eduPersonAffiliation.
*
* @author Benjamin Dauvergne <bdauvergne@entrouvert.com>
*
* @param[in] &$ldapObject Une référence à l'object LSldapObject
*
* @retval boolean True si la valeur est valide, False sinon
**/
function supannCheckEduPersonPrimaryAffiliation(&$ldapObject) {
$primary = $ldapObject->getValue('eduPersonPrimaryAffiliation');
$affiliations = $ldapObject->getValue('eduPersonAffiliation');
if (!array_intersect($primary, $affiliations))
return false;
return true;
}
/**
* Géneration de la valeur de l'attribut eduPersonPrincipalName
* à partir du LSformat configuré dans $GLOBALS['LS_SUPANN_EPPN_FORMAT']
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @param[in] $ldapObject L'objet ldap
*
* @retval array La valeur de l'attribut eduPersonOrgDN ou false
* si il y a un problème durant la génération
*/
function generate_eduPersonPrincipalName($ldapObject) {
return $ldapObject -> getFData($GLOBALS['LS_SUPANN_EPPN_FORMAT']);
}

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n" "Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2020-09-22 14:32+0200\n" "PO-Revision-Date: 2020-09-22 16:20+0200\n"
"Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n" "Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise." "Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n" "org>\n"
@ -208,11 +208,11 @@ msgstr ""
"Support SUPANN : Impossible de récupérer le basedn des entités. Impossible " "Support SUPANN : Impossible de récupérer le basedn des entités. Impossible "
"de générer l'attribut %{attr}." "de générer l'attribut %{attr}."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:313 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:316
msgid "Entity %{id} (unrecognized)" msgid "Entity %{id} (unrecognized)"
msgstr "Entité %{id} (non-reconnue)" msgstr "Entité %{id} (non-reconnue)"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:408 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:411
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102
msgid "%{value} (unrecognized value)" msgid "%{value} (unrecognized value)"
@ -2342,6 +2342,66 @@ msgstr "[pas une chaîne de caractères]"
msgid "Folder not found" msgid "Folder not found"
msgstr "Dossier introuvable" msgstr "Dossier introuvable"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:53
msgid "Affiliate"
msgstr "Affilié"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:54
msgid "Alumnus"
msgstr "Ancien apprenant"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:55
msgid "Employee"
msgstr "Employé"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:56
msgid "Faculty"
msgstr "Faculté"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:57
msgid "Member"
msgstr "Membre"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:58
msgid "Student"
msgstr "Étudiant"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:59
msgid "Retired"
msgstr "Retraité"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:60
msgid "Teacher"
msgstr "Enseignant"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:61
msgid "Staff"
msgstr "Staff"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:62
msgid "Researcher"
msgstr "Chercheur"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:63
msgid "Emeritus teacher"
msgstr "Professeur émérite"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:64
msgid "Library - walk-in"
msgstr "Bibliothèque - Accès libre"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:65
msgid "Library - registered"
msgstr "Bibliothèque - Inscrit"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:70
msgid "Mrs."
msgstr "Madame"
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:71
msgid "Mr."
msgstr "Monsieur"
#: templates/default/LSaccessRightsMatrixView.tpl:18 #: templates/default/LSaccessRightsMatrixView.tpl:18
msgid "Attributes / Profiles" msgid "Attributes / Profiles"
msgstr "Attributs / Profils" msgstr "Attributs / Profils"

View file

@ -157,11 +157,11 @@ msgid ""
"attribute %{attr}." "attribute %{attr}."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:313 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:316
msgid "Entity %{id} (unrecognized)" msgid "Entity %{id} (unrecognized)"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:408 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:411
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102
msgid "%{value} (unrecognized value)" msgid "%{value} (unrecognized value)"
@ -1995,6 +1995,66 @@ msgstr ""
msgid "Folder not found" msgid "Folder not found"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:53
msgid "Affiliate"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:54
msgid "Alumnus"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:55
msgid "Employee"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:56
msgid "Faculty"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:57
msgid "Member"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:58
msgid "Student"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:59
msgid "Retired"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:60
msgid "Teacher"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:61
msgid "Staff"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:62
msgid "Researcher"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:63
msgid "Emeritus teacher"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:64
msgid "Library - walk-in"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:65
msgid "Library - registered"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:70
msgid "Mrs."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:71
msgid "Mr."
msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:18 #: templates/default/LSaccessRightsMatrixView.tpl:18
msgid "Attributes / Profiles" msgid "Attributes / Profiles"
msgstr "" msgstr ""