Bonjour, Je viens vous proposer de mettre en place une action d'assignation d'entité basé sur les conditions d'expressions rationnelles et sur le completename de l'entité.
Vous trouverez un patch ci-joint N'étant pas très doué dans le maniement des outils de gestion de versions, je suis aller au plus simple en faisant un simple patch. Ce qui est là provient d'un glpi 0.80 upgradé en 0.83.7, le patch ne contient que les fichiers que j'ai modifié. Cela semble fonctionner, j'ai pas poussé les tests à mort, mon seul regret c'est d'avoir utilisé LIKE dans la requête SQL. C'est certainement une source de bugs, le problème provient des symboles ">" qui sont transformé en ">" dans la requête. J'ai vérifié ça semble se faire uniquement lors de la requête. J'ose espérer que vous trouverez rapidement une solution. Le fonctionnement est relativement simple : * Dans l'annuaire LDAP les utilisateurs possède des attributs qui se retrouve dans la hiérarchie des Entités : o Par exemple : + Clients # Société X * Service Y * Service Z # Société A * Secteur Nord * Secteur Est o Prenons le cas d'un administrateur de la société A et d'un correspondant informatique de la société A basé dans le secteur Nord + L’administrateur appartient au groupe Administrateur # attribut o : A # attribut departementNumber : Secteur Nord + Le Correspondant appartient au groupe Technicien avec les même attributs o On veut que l'administrateur soit super-admin récursif sur la société A o On veut que le correspondant soit technicien uniquement dans l'entité Clients > Société A > Secteur Nord o On créer deux règles + Administration (ET) # Condition : appartient au groupe LDAP admin # Condition : regexp LDAP(organization) : /(.*)/ # Condition : regexp LDAP(departementNumber) : /(.*)/ # ACTION : Actif + récursif + profil super-admin # ACTION : entité assigné depuis regexp : Clients _ Société #0 + Correspondant (ET) # Condition : appartient au groupe LDAP technicien # Condition : regexp LDAP(organization) : /(.*)/ # Condition : regexp LDAP(departementNumber) : /(.*)/ # ACTION : Actif + récursif + profil technicien # ACTION : entité assigné depuis regexp : Clients _ Société #0 _ #1 o On peut importer les deux utilisateurs qui seront assigné dynamiquement On peut même aller plus loin en indiquant le profil directement depuis l'attribut employeeType, le but étant d'avoir le moins de règle possible, D'ailleurs je vous interpelle aussi sur la possibilité de dupliquer une règle ou d'avoir des templates... Vous n'imaginez pas ce que ça serait sympa :D... Allez une dernière proposition : la possibilité de modifier une condition ou une action ;D En vous remerciant par avance pour vos retours, Cordialement, -- Jérôme Avond <j.av...@axolys.fr> Axolys, Société de services en logiciels libres 27, rue Désiré Claude - 42100 Saint Étienne tel : +33(0)9 50 05 47 81 mob : +33(0)6 61 46 97 85 fax : +33(0)9 55 05 47 81 url : http://www.axolys.fr jab : jer...@axolys.fr
diff -r glpi_original/inc/entitydata.class.php glpi/inc/entitydata.class.php 716a717,730 > static function getEntityIDByRE($value) { > global $DB; > > $sql = "SELECT `id` > FROM `glpi_entities` > WHERE `completename` LIKE '".$value."'"; > > $result = $DB->query($sql); > > if ($DB->numrows($result)==1) { > return $DB->result($result, 0, "id"); > } > return -1; > } diff -r glpi_original/inc/ruleright.class.php glpi/inc/ruleright.class.php 125a126,132 > > case "_affect_entity_by_re" : > unset($actions["_affect_entity_by_tag"]); > unset($actions["_affect_entity_by_dn"]); > unset($actions["entities_id"]); > break; > 127a135 > unset($actions["_affect_entity_by_re"]); 133a142 > unset($actions["_affect_entity_by_re"]); 138a148 > unset($actions["_affect_entity_by_re"]); 192a203 > case "_affect_entity_by_re" : 209a221,224 > case "_affect_entity_by_re" : > $entity_found = > EntityData::getEntityIDByRE($res); > break; > 335a351,355 > > $actions['_affect_entity_by_re']['name'] = > $LANG['rulesengine'][128]; > $actions['_affect_entity_by_re']['type'] = 'text'; > $actions['_affect_entity_by_re']['force_actions'] = > array('regex_result'); > $actions['_affect_entity_by_re']['duplicatewith'] = 'entities_id'; diff -r glpi_original/locales/bg_BG.php glpi/locales/bg_BG.php 1780a1781 > $LANG['rulesengine'][128]="Entity from regular expression"; // en_GB string > to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ca_CA.php glpi/locales/ca_CA.php 1780a1781 > $LANG['rulesengine'][128]="Entitat des de RE"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/cs_CZ.php glpi/locales/cs_CZ.php 1780a1781 > $LANG['rulesengine'][129]="Entita založena na Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/de_DE.php glpi/locales/de_DE.php 1780a1781 > $LANG['rulesengine'][128]="Einheit aus regular expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/dk_DK.php glpi/locales/dk_DK.php 1781c1781 < $LANG['rulesengine'][129]="Entitet fra maildomæne"; --- > $LANG['rulesengine'][129]="Entitet baseret på Regular expression"; 2370c2370 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ee_ET.php glpi/locales/ee_ET.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/el_EL.php glpi/locales/el_EL.php 1780a1781 > $LANG['rulesengine'][128]="Οντότητα βασισμένη σε πληροφορίες Regular > Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/en_GB.php glpi/locales/en_GB.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/en_US.php glpi/locales/en_US.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/es_AR.php glpi/locales/es_AR.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/es_CO.php glpi/locales/es_CO.php 1780a1781 > $LANG['rulesengine'][128]="Entidad desde Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/es_ES.php glpi/locales/es_ES.php 1780a1781 > $LANG['rulesengine'][130]="Entidad desde Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/es_MX.php glpi/locales/es_MX.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/es_VE.php glpi/locales/es_VE.php 1780a1781 > $LANG['rulesengine'][128]="Entidad desde Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/eu_ES.php glpi/locales/eu_ES.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/fa_IR.php glpi/locales/fa_IR.php 1780a1781 > $LANG['rulesengine'][130]="موجودیت مبتنی بر اطلاعات Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/fr_FR.php glpi/locales/fr_FR.php 2022a2023 > $LANG['rulesengine'][128] = "Entité depuis Expression rationnelle"; diff -r glpi_original/locales/gl_ES.php glpi/locales/gl_ES.php 1780a1781 > $LANG['rulesengine'][128]="Entidad desde Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/he_HE.php glpi/locales/he_HE.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/hr_HR.php glpi/locales/hr_HR.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/hu_HU.php glpi/locales/hu_HU.php 1780a1781 > $LANG['rulesengine'][130]="Szervezet Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/it_IT.php glpi/locales/it_IT.php 1780a1781 > $LANG['rulesengine'][128]="Entità basate sulle Espressione regolare"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ja_JP.php glpi/locales/ja_JP.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/lt_LT.php glpi/locales/lt_LT.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/lv_LV.php glpi/locales/lv_LV.php 1780a1781 > $LANG['rulesengine'][128]="Nodaļas izvēle pēc Regular Expression"; 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> Seulement dans glpi/locales: :n diff -r glpi_original/locales/nl_NL.php glpi/locales/nl_NL.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/no_NB.php glpi/locales/no_NB.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/no_NN.php glpi/locales/no_NN.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/pl_PL.php glpi/locales/pl_PL.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/pt_BR.php glpi/locales/pt_BR.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/pt_PT.php glpi/locales/pt_PT.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ro_RO.php glpi/locales/ro_RO.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ru_RU.php glpi/locales/ru_RU.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/sk_SK.php glpi/locales/sk_SK.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/sl_SI.php glpi/locales/sl_SI.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/sv_SE.php glpi/locales/sv_SE.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/tr_TR.php glpi/locales/tr_TR.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/ua_UA.php glpi/locales/ua_UA.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/zh_CN.php glpi/locales/zh_CN.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?> diff -r glpi_original/locales/zh_TW.php glpi/locales/zh_TW.php 1780a1781 > $LANG['rulesengine'][128]="Entity based on Regular Expression"; // en_GB > string to be translated 2370c2371 < ?> \ Pas de fin de ligne à la fin du fichier. --- > ?>
_______________________________________________ Glpi-dev mailing list Glpi-dev@gna.org https://mail.gna.org/listinfo/glpi-dev