# Les comptes

Le terme "compte" regroupe les termes utilisateur, groupe et rôle.

Les comptes sont composés de :

  • un Smart Element.

    Il offre une interface permettant de présenter l'objet interne aux utilisateurs de la plateforme.

# Les rôles

Un Smart Element "rôle" identifie une fonction dans l'organisation. Ce rôle est utilisé pour définir les droits. Un utilisateur peut avoir plusieurs rôles.
Contrairement aux groupes, les rôles n'ont pas de hiérarchie.
La Smart Structure décrivant les rôles est ROLE.

# Déclaration des rôles

Les rôles sont décrits dans un fichier XML qui suit le schéma https://platform.anakeen.com/4/schemas/account/1.0.

Le rôle contient les informations suivantes :

Balise XML Description
roles/role/@name La référence système (obligatoire)
roles/role/displayName Le libellé du rôle (s'il est vide, il est égal à la référence)
roles/role/structure/@name Le nom logique du Smart Element associé
roles/role/structure/@ref La référence à la Smart Structure (ROLE par défaut)

WARNING

La référence est toujours en minuscule.

Exemple : vendor/My/Accounts/initRoles.xml

<accounts:accounts xmlns:accounts="https://platform.anakeen.com/4/schemas/account/1.0">

    <accounts:roles>
        <!-- minimalist description -->
        <accounts:role name="writer"/>

        <accounts:role name="financial">
            <accounts:displayName>Manage cash</accounts:displayName>
            <accounts:structure name="MY_CASH_ROLE"/>
        </accounts:role>

        <accounts:role name="player">
            <accounts:displayName>Same player, shoot again</accounts:displayName>
            <accounts:structure name="MY_PLAYER_ROLE"/>
        </accounts:role>
    </accounts:roles>

</accounts:accounts>

Pour importer des comptes (rôles, groupes ou utilisateurs), il faut utiliser le script importAccounts :

./ank.php --script=importAccounts --file=vendor/My/Accounts/initRoles.xml

# Les groupes

Un Smart Element groupe d'utilisateurs est une collection qui peut contenir un ensemble d'utilisateurs ou de groupe d'utilisateurs.
Une arborescence de groupes peut ainsi être constituée à l'aide de ces groupes.
Un utilisateur ou un groupe d'utilisateurs peut appartenir à plusieurs groupes.
La seule contrainte est que le graphe des groupes ne doit pas contenir de cycle (Le groupe A ne peut pas appartenir au groupe B si B appartient déjà au groupe A).
La Smart Structure décrivant les groupes d'utilisateurs est IGROUP.
Note : Il existe aussi la Smart Structure "groupe" (GROUP) qui est la Smart Structure mère de "groupe d'utilisateur". Cette Smart Structure de plus haut niveau permet de regrouper aussi des Smart Elements qui ne sont pas forcément des utilisateurs. Dans ce chapitre, le terme groupe désignera les groupes d'utilisateurs.

# Déclaration des groupes

Les groupes sont décrits dans un fichier XML qui suit le schéma https://platform.anakeen.com/4/schemas/account/1.0.

Le groupe contient les informations suivantes :

Balise XML Description
groupes/groupe/@name La référence système (obligatoire)
groupes/groupe/displayName Le libellé du groupe (s'il est vide, il est égal à la référence)
groupes/groupe/associatedRoles/@reset S'il vaut true, enlève les références des rôles enregistrés
groupes/groupe/associatedRoles/associatedRole/@ref Ajout d'une référence à un rôle
groupes/groupe/parentGroups/@reset S'il vaut true, enlève les références des groupes parents enregistrés
groupes/groupe/parentGroups/parentGroup/@ref Ajout d'une référence à un groupe parent
groupes/groupe/structure/@name Le nom logique du Smart Element associé
groupes/groupe/structure/@ref La référence à la Smart Structure (IGROUP par défaut)

WARNING

La référence est toujours en minuscule.

Exemple : vendor/My/Accounts/initGroups.xml

<accounts:accounts xmlns:accounts="https://platform.anakeen.com/4/schemas/account/1.0">

    <accounts:groups>
        <!-- minimalist description -->
        <accounts:group name="laboratories" />

        <accounts:group name="lab 51">
            <accounts:displayName>Laboratoire 51. Exoplanet research</accounts:displayName>
            <accounts:parentGroups>
                <accounts:parentGroup ref="laboratories"/>
            </accounts:parentGroups>
            <accounts:structure name="LAB51_GROUPE"/>
        </accounts:group>

        <accounts:group name="lab 32">
            <accounts:displayName>Laboratoire 32. Beautiful Duck research</accounts:displayName>
            <accounts:associatedRoles>
                <accounts:associatedRole ref="player"/>
                <accounts:associatedRole ref="writer"/>
            </accounts:associatedRoles>
            <accounts:parentGroups>
                <accounts:parentGroup ref="lab 51"/>
            </accounts:parentGroups>
        </accounts:group>

    </accounts:groups>
</accounts:accounts>

Importation via le script importAccounts :

./ank.php --script=importAccounts --file=vendor/My/Accounts/initGroups.xml

# Les utilisateurs

Un Smart Element utilisateur regroupe les informations permettant à une personne de se connecter sur l'application. Par extension, un utilisateur est une personne qui peut se connecter à l'application. La Smart Structure décrivant les utilisateurs est IUSER.

# Déclaration des utilisateurs

Les utilisateurs sont décrits dans un fichier XML qui suit le schéma https://platform.anakeen.com/4/schemas/account/1.0.

L'utilisateur contient les informations suivantes :

Balise XML Description
users/user/@login Le login de connexion (obligatoire)
users/user/firstname Le prénom de l'utilisateur (s'il est vide, il est égal à la référence)
users/user/lastname Le nom de l'utilisateur (s'il est vide ainsi que le prénom, il est égal à la référence)
users/user/mail Le courriel de l'utilisateur
users/user/password Le mot de passe de l'utilisateur - s'il n'est pas défini, l'utilisateur devra suivre la procédure de réinitialisation du mot de passe
users/user/password/@crypted Si false, mot de passe en clair à utiliser (seul le crytage est stocké), si true mot de passe crypté/
users/user/status/@activated Si true (par défaut), l'utilisateur peut se connecter, si false, il ne peut pas se connecter
users/user/associatedRoles/@reset S'il vaut true, enlève les références des rôles enregistrés
users/user/associatedRoles/associatedRole/@ref Ajout d'une référence à un rôle
users/user/parentGroups/@reset S'il vaut true, enlève les références des groupes parents enregistrés
users/user/parentGroups/parentGroup/@ref Ajout d'une référence à un groupe parent
users/user/structure/@name Le nom logique du Smart Element associé
users/user/structure/@ref La référence à la Smart Structure (IUSER par défaut)

WARNING

Le login est toujours en minuscule.

Exemple : vendor/My/Accounts/initUsers.xml

<accounts:accounts xmlns:accounts="https://platform.anakeen.com/4/schemas/account/1.0">
     <accounts:users>
             <!-- minimalist description -->
            <accounts:user login="yoda"/>

            <accounts:user login="chewie">
                <accounts:lastname>Chewbacca</accounts:lastname>
                <accounts:mail>chewie@starwars.com</accounts:mail>
            </accounts:user>

            <accounts:user login="luke">
                <accounts:firstname>Luke</accounts:firstname>
                <accounts:lastname>Skywalker</accounts:lastname>
                <accounts:mail>luke@starwars.com</accounts:mail>
                <accounts:password crypted="false">May the force be with you</accounts:password>
                <accounts:status activated="true"/>
                <accounts:associatedRoles reset="true">
                    <accounts:associatedRole ref="big force"/>
                </accounts:associatedRoles>
                <accounts:parentGroups reset="true">
                    <accounts:parentGroup ref="lab 51"/>
                </accounts:parentGroups>
                <accounts:structure name="AGENT_L" />
            </accounts:user>

            <accounts:user login="leia">
                <accounts:firstname>Leia</accounts:firstname>
                <accounts:lastname>Skywalker</accounts:lastname>
                <accounts:mail>leia@starwars.com</accounts:mail>
                <accounts:password crypted="false">May the force be with you</accounts:password>
                <accounts:status activated="true"/>
                <accounts:associatedRoles>
                    <accounts:associatedRole ref="big force"/>
                </accounts:associatedRoles>
                <accounts:parentGroups>
                    <accounts:parentGroup ref="lab 51"/>
                </accounts:parentGroups>
            </accounts:user>

            <accounts:user login="solo">
                <accounts:firstname>Han</accounts:firstname>
                <accounts:lastname>Solo</accounts:lastname>
                <accounts:mail>solo@starwars.com</accounts:mail>
                <!-- Falcon Millenium : is the crypted password CRYPT_SHA256 -->
                <accounts:password crypted="true">$5$u9ap7nzr0tIClII4$EuUVVB0YOMFuWN1y2DH.Yc7flwgSCEVezzhGwgKUAW/</accounts:password>
                <accounts:status activated="false"/>
                <accounts:substitute ref="leia"/>
                <accounts:associatedRoles>
                    <accounts:associatedRole ref="fat force"/>
                </accounts:associatedRoles>
                <accounts:parentGroups>
                    <accounts:parentGroup ref="lab 51"/>
                    <accounts:parentGroup ref="lab 32"/>
                </accounts:parentGroups>
                <accounts:structure name="AGENT_H" />

            </accounts:user>
        </accounts:users>
</accounts:accounts>

Importation via le script importAccounts :

./ank.php --script=importAccounts --file=vendor/My/Accounts/initUsers.xml