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

Reply via email to