8.5 Importation des comptes en XML

3.2.21 Les comptes utilisateurs peuvent être créés ou modifiés en important un fichier XML de description de comptes. Ce fichier permet d'indiquer les données systèmes des comptes comme le login, le mot de passe, les groupes d'appartenance et les rôles associés.

L'importation purement système utilise le schéma qui ne référence que les données système et aucune donnée documentaire fonctionnelle.

L'importation en plus des données systèmes peut aussi importer des données fonctionnelles si des familles personnalisées ont été définies pour être associées aux comptes.

8.5.1 Importation de compte (XML) depuis l'interface d'administration

Depuis le centre d'administration, dans le gestion des utilisateurs, il est possible d'importer les comptes (utilisateurs, groupes, rôles) depuis un fichier XML.

Options d'importation de comptes

Figure 74. Options d'importation de comptes

8.5.2 Importation de compte (XML) en ligne de commande

L'importation peut être réalisée en ligne de commande :

./wsh.php --api=importAccounts --file=/tmp/myUsers.xml --report=/tmp/myReport.json

Son usage est le suivant :

Usage :
    --file=<the input XML file>
   Options:
    --report-file=<the output report file>
    --dry-run (Analyse file only - no import is proceed) 

Le rapport est une sortie texte. Si le nom du fichier à l'extension ".csv" le rapport est au format CSV. Si l'extension est ".json", le format du rapport est en json.

Les informations retournées dans le rapport sont :

  • login : identifiant du compté traité
  • action : code du traitement effectué
  • error : message d'erreur (vide si pas d'erreur)
  • message : message du traitement effectuée
  • node : nœud XML qui est à l'initiative du traitement au traitement (non retourné pour le type texte)

Si une erreur est détectée aucun compte n'est mis à jour.

8.5.3 Format d'importation XML d'utilisateurs

8.5.3.1 Importation minimaliste d'utilisateurs

Les informations obligatoires pour importer un utilisateur sont :

  • login : identifiant du compte servant à l'authentification
  • lastname : nom à afficher pour le compte

: le login est toujours en caractère minuscule. L'authentification est "case insensitive" pour le login.

Le login sert d'identifiant unique. Si un compte existe avec le login défini, ses informations seront mises à jour. S'il n'existe pas, le compte sera créé.

Exemple minimaliste d'importation de 2 comptes "un" et "deux":

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <users>
    <user>
      <login>un</login>
      <lastname>Premier</lastname>
    </user>
    <user>
      <login>deux</login>
      <lastname>Deuxième</lastname>
    </user>
  </users>
</accounts>

Ce fichier importe 2 comptes utilisateur. Ces comptes n'ont aucun rôle et n'appartiennnent à aucun groupe. Ils n'ont pas de mot de passe et ne peuvent se connecter. Par contre, ils sont opérationnels pour être utilisés dans les profils.

8.5.3.2 Autres informations optionnelles sur le compte

Les informations systèmes optionnelles sont :

  • mail : adresse courriel pour le compte. Cette adresse est notamment utilisée pour la procédure de changement de mot de passe et pour les envois de document par courriel.

  • firstname: prénom de l'utilisateur. Le nom et le prénom constituent le nom à afficher (displayName).

  • status: (booléen) Permet d'activer ou désactiver un compte. Par défaut, le compte est actif. Mettre false pour le désactiver. Un compte désactivé ne peut plus se connecter.

  • substitute: (référence) Permet de référencer un suppléant. La référence est le login du compte suppléant. Le suppléant doit être défini avant le titulaire.

Exemple d'importation avec les données optionnelles :

Ce fichier vient compléter les informations du fichier ci-dessus en ajoutant un suppléant pour "un" et les adresses courriels pour les 2 comptes "un" et "deux".

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <users>
    <user>
      <login>deux</login>
      <lastname>Deuxième</lastname>
      <firstname>Gérard</firstname>
      <mail>second@example.net</mail>
      <status activated="true"/>
    </user>
    <user>
      <login>un</login>
      <lastname>Premier</lastname>
      <firstname>Isabelle</firstname>
      <mail>first@example.net</mail>
      <status activated="true"/>
      <substitute reference="deux"/><!-- la référence est défini avant -->
    </user>
  </users>
</accounts>

8.5.3.3 Mettre un mot de passe

Il est possible de définir un mot de passe lors de la création ou de la modification du compte utilisateur.

La balise password peut contenir le mot de passe en clair ou crypté. S'il est en clair, il sera crypté avant enregistrement, sinon il sera enregistré directement. Le mode de cryptage à utiliser est le SHA256.

Mot de passe crypté :

<password crypted="true">$5$6gyojNc42P8GMDB4$QbHmquZLRNwye3TjHaiHuoR6JnYmfwp8eWMD/hGLp93</password>

Mot de passe en clair :

<password crypted="false">Mon secret</password>

8.5.3.4 Affecter l'utilisateur à des groupes

Les groupes d'appartenance directe sont définis dans la balise parentGroups. Cette balise indique les références aux groupes parents (balises parentGroup).

L'attribut reset est un booléen qui indique si les groupes parents déjà enregistrés doivent être enlevés avant d'ajouter les nouvelles références. Cet attribut ne sert que dans le cas de mise à jour de compte. Si reset vaut false (valeur par défaut), les références aux groupes sont ajoutés aux anciens groupes sinon les anciens groupes sont retirés du compte utilisateur. L'attribut reference indique la référence du compte groupe et non le nom logique du document représentant le groupe.

Exemple : ajout des groupes "vigilance" et "security"

<parentGroups reset="false">
    <parentGroup reference="vigilance"/>
    <parentGroup reference="security"/>
</parentGroups>

8.5.3.5 Donner des rôles à un utilisateur

Les rôles de l'utilisateur sont définis dans la balise associatedRoles. Cette balise indique les références aux différents rôles donnés (balises associatedRole).

L'attribut reset est un booléen qui indique si les rôle déjà enregistrés doivent être enlevés avant d'ajouter les nouvelles références. Cet attribut ne sert que dans le cas de mise à jour de compte. Si reset vaut false (valeur par défaut), les références aux rôles sont ajoutés aux anciens rôles sinon les anciens rôles sont retirés du compte utilisateur. L'attribut reference indique la référence du rôle et non le nom logique du document représentant le rôle.

Exemple : ajout des rôles "veterinary" et "surgeon"

<associatedRoles reset="false">
    <associatedRole reference="veterinary"/>
    <associatedRole reference="surgeon"/>
</associatedRoles>

8.5.3.6 Exemple récapitulatif

Importation du compte "garde" qui est dans le groupe "security" et qui a le rôle "surveillant".

<?xml version="1.0" encoding="utf-8"?>
<accounts date="2016-04-14T09:54:18">
  <roles>
    <role>
      <reference>surveillant</reference>
      <displayName>Gardien surveillant</displayName>
    </role>
  </roles>
  <groups>
    <group >
      <reference>security</reference>
      <displayName>Surveillants</displayName>
      <parentGroups reset="false">
        <parentGroup reference="all"/>
      </parentGroups>
    </group>
  </groups>
  <users>
    <user>
      <login>garde</login>
      <firstname>Robert</firstname>
      <lastname>Dogue</lastname>
      <mail>garde@example.net</mail>
      <status activated="true"/>
      <password crypted="true">$5$PsPOxUFpskK25TY4$LjEnQqJw76duTmA9G7dd/XC9zexKgNanxz.3virIIRD</password>
      <associatedRoles reset="false">
        <associatedRole reference="surveillant"/>
      </associatedRoles>
      <parentGroups reset="false">
        <parentGroup reference="security"/>
      </parentGroups>
    </user>
  </users>
</accounts>

8.5.4 Importation XML de groupes

8.5.4.1 Importation minimaliste de groupe

Les informations obligatoires pour importer un groupe sont :

  • reference : référence unique du compte groupe
  • displayName : nom du groupe à afficher

: la reference est toujours en caractère minuscule.

Exemple : création du groupe "business".

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <groups>
    <group>
      <reference>business</reference>
      <displayName>Service commercial</displayName>
    </group>
  </groups>
</accounts>

8.5.4.2 Définir une arborescence de groupe

Les balises d'affectation de groupe est identique aux celles des utilisateurs.

Exemple :

business sponsor
         ⇘angels

<?xml version="1.0" encoding="utf-8"?>
<accounts >
  <groups>
    <group>
      <reference>business</reference>
      <displayName>Service commercial</displayName>
    </group>
    <group>
      <reference>sponsor</reference>
      <displayName>Mécènes</displayName>
    </group>
    <group >
      <reference>angels</reference>
      <displayName>Business angels</displayName>
      <parentGroups reset="false">
        <parentGroup reference="business"/>
        <parentGroup reference="sponsor"/>
      </parentGroups>
    </group>
  </groups>
</accounts>

8.5.4.3 Donner des rôles à un groupe

Les rôles sont associés à un groupe de la même manière que pour les utilisateurs.

8.5.5 Importation XML de rôles

Les informations obligatoires pour importer un rôle sont :

  • reference : référence unique du compte rôle
  • displayName : nom du rôle à afficher

: la reference est toujours en caractère minuscule.

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <roles>
    <role>
      <reference>watcher</reference>
      <displayName>Surveillant</displayName>
    </role>
    <role>
      <reference>veterinary</reference>
      <displayName>Vétérinaire</displayName>
    </role>
  </roles>
</accounts>

8.5.6 Importation d'utilisateurs avec données fonctionnelles personnalisées

Les comptes sont représentés par des documents. Ces documents permettent d'interagir avec les comptes systèmes.

Les familles utilisées par défaut pour chaque type de compte sont :

La balise document permet de modifier le document lié au compte. Elle contient la représentation XML du document lié.

8.5.6.1 Poser un nom logique sur le document associé au compte

Le nom logique est indiqué sur l'attribut name de la balise du document lié.

Exemple : Mettre le nom logique "USER_CONTROL" sur le compte "control".

<?xml version="1.0" encoding="utf-8"?>
<accounts date="2016-04-14T11:40:22">
  <users>
    <user id="1">
      <login>control</login>
      <firstname>Robert</firstname>
      <lastname>Watson</lastname>
      <document family="IUSER">
        <iuser name="USER_CONTROL" />
      </document>
    </user>
  </users>
</accounts>

8.5.6.2 Modifier le date d'expiration du compte

La date d'expiration n'est pas une donnée du compte système. Elle est définie dans la famille IUSER dans l'attribut us_accexpiredate.

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <users>
    <user>
      <login>watch.garde</login>
      <firstname>Robert</firstname>
      <lastname>Dogue</lastname>
      <mail>garde@example.net</mail>
      <document family="IUSER">
        <iuser name="MY_BIGGARDE" >
          <us_tab_system>
            <us_fr_security>
              <us_accexpiredate>2016-04-13</us_accexpiredate>
            </us_fr_security>
          </us_tab_system>
        </iuser>
      </document>
    </user>
  </users>
</accounts>

8.5.6.3 Associer un compte avec une famille personnalisée

Pour utiliser une famille personnalisée, il est nécessaire que celle-ci soit dérivée des familles par défaut (IUSER, IGROUP ou ROLE).

Le format XML du document associé doit suivre le schéma de la famille donné. L'ensemble des schémas XML nécessaires peut être obtenu depuis le centre d'administration. Il est accessible en cliquant sur le bouton "Importer les comptes" depuis l'interface de gestion des utilisateurs.

Exemple : associer le compte avec un document de la famille "my_watcher". Cette famille héritant de la famille IUSER, permet d'indiquer les heures de gardes et la zone à garder.

<?xml version="1.0" encoding="utf-8"?>
<accounts>
  <users>
    <user>
      <login>watch.garde</login>
      <firstname>Robert</firstname>
      <lastname>Watson</lastname>
      <mail>watch.garde@example.net</mail>
      <associatedRoles reset="false">
        <associatedRole reference="surveillant"/>
      </associatedRoles>
      <parentGroups reset="false">
        <parentGroup reference="all"/>
        <parentGroup reference="security"/>
      </parentGroups>
      <document family="MY_WATCHER">
        <my_watcher name="MY_BIGWATCH" >
          <watch_tab_watching>
            <watch_fr_watching>
              <watch_beginhour>10:00:00</watch_beginhour>
              <watch_endhour>18:00:00</watch_endhour>
              <watch_array_zone>
                <watch_zone name="MY_ZONE51">Zone protégée</watch_zone>
              </watch_array_zone>
            </watch_fr_watching>
          </watch_tab_watching>
        </my_watcher>
      </document>
    </user>
  </users>
</accounts>
×
nouveauté
3.2.21