# Sécurité des accès aux Smart Elements

# Le profil de Smart Element

Un profil de Smart Element permet de déterminer les droits acquis pour les rôles, les groupes et les utilisateurs pour un Smart Element donné.

Le profil contient la matrice permettant d'associer comptes et droits.

Exemple de matrice de droits :

Droit D1 Droit D2 Droit D3
Rôle R1
Rôle R2
Groupe G1
Utilisateur U1

Quatre types de profils sont définis :

  • profil de Smart Structure (droit de créer des Smart Elements ou de voir la Smart Structure),
  • profil de Smart Element (droit de voir, modifier ou supprimer des Smart Elements),
  • profil de dossier (droit de voir le contenu du dossier),
  • profil de recherche (droit d'exécuter la recherche).

Le type de profil est indiqué dans l'attribut access-configuration/@profil-type.

Liste des droits définis pour ces quatre Smart Structures de profils :

Légende :

  • PDOC : Pour les profils de Smart Element,
  • PDIR : Pour les profils de Dossier (Folder),
  • PSEARCH : Pour les profils de Recherche (Search),
  • PFAM : Pour les profils de Smart Structure (Class).
Nom interne Description Description longue PDOC PDIR PSEARCH PFAM
view Voir Voir les caractéristiques du Smart Element, du dossier ou de la recherche. Le fait de ne pas voir un dossier n'implique pas de ne pas voir les Smart Elements contenus dans le dossier.
edit Modifier Modifier les caractéristiques du Smart Element, du dossier.
delete Supprimer Supprimer le Smart Element, le dossier, la recherche .
unlock Déverrouiller Déverrouiller le Smart Element.
viewacl Voir les droits Voir les droits du Smart Element.
modifyacl Modifier les droits Modifier les droits du Smart Element.
confidential Voir Smart Element confidentiel Permet d'utiliser normalement un Smart Element qui est confidentiel. (Confidentiel est une propriété de Smart Element).
send Envoyer Envoyer par courriel le Smart Element.
open Ouvrir Ouvrir le dossier. Permet de voir le contenu du dossier.
modify Contenu Modifier le contenu du dossier. Permet d'ajouter ou de supprimer des Smart Elements dans le dossier.
execute Executer Permet d'exécuter la recherche.
create Créer Autorise la création de Smart Element de cette Smart Structure.
icreate Créer manuellement Autorise la création de Smart Element de cette Smart Structure à partir de l'interface. Si ce droit n'est pas mis et que create est mis, l'utilisateur ne pourra créer le Smart Element que de manière indirecte (soit sur une transition, soit sur toute autre action particulière mis en place par l'administrateur). Sans ce droit les menus de création de cette Smart Structure sont inaccessibles. Si ce droit est mis il faut que le droit create soit aussi mis.

Exemple de définition d'un profil standard (PDOC) et d'un profil de structure (PFAM).

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:access-configuration name="MY_ELEMENT_PROFIL" label="Mon profil">
        <smart:description>User can modify its own information</smart:description>
        <smart:element-access access="view" account="all"/>
        <smart:element-access access="view" account="mystaff"/>
        <smart:element-access access="edit" account="mystaff"/>
        <smart:element-access access="delete" account="mybigboss"/>
    </smart:access-configuration>


    <smart:access-configuration name="MY_STRUCTURE_PROFIL" label="Mon profil" profil-type="PFAM">
        <smart:description>User can modify its own information</smart:description>
        <smart:element-access access="create" account="mystaff"/>
        <smart:element-access access="icreate" account="mystaff"/>
    </smart:access-configuration>

</smart:config>

L'enregistrement d'un fichier de configuration XML pour les droits est identique à la configuration des Smart Structures.

# Profil lié

Un Smart Element Profil est fait pour être appliqué à des Smart Elements. Un Smart Element qui est lié à un profil obtient les mêmes droits que ceux définis sur le profil. Dès que les droits du profil sont changés alors tous les Smart Elements liés à ce profil ont également leurs droits mis à jour.

Note

Un Smart Element sans profil n'est accessible qu'avec l'utilisateur admin.

# Profil par défaut

Une Smart Structure peut indiquer un profil par défaut pour les Smart Elements de cette Smart Structure. Une fois cette propriété de Smart Structure enregistrée, tous les Smart Elements sont liés au même profil lors de leur création. Les Smart Elements déjà existants ne sont donc pas affectés.

Le profil par défaut est indiqué sur l'attribut structure-configuration/accesses/element-access-configuration/@ref.

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:structure-configuration name="MY_STRUCTURE">
        <smart:accesses>
            <smart:structure-access-configuration ref="MY_STRUCTURE_PROFIL"/>
            <smart:element-access-configuration ref="MY_ELEMENT_PROFIL"/>
        </smart:accesses>
    </smart:structure-configuration>
</smart:config>

Le profil de la Smart Structure est indiqué sur l'attribut structure-configuration/accesses/structure-access-configuration/@ref. Ce profil est de type PFAM, il permet d'indiquer qui a le droit de créer des Smart Elements de cette Smart Structure.

# Lier un profil par fichier d'importation

Le profil d'un Smart Element peut être modifié avec un fichier d'importation en utilisant l'attribut access-configuration/@ref.

Dans l'exemple suivant le Smart Element MY_SPECIAL_ELEMENT sera lié au profil MY_ELEMENT_PROFIL.

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
     <smart:access-configuration name="MY_SPECIAL_ELEMENT" ref="MY_ELEMENT_PROFIL"/>
</smart:config>

# Affecter les droits d'un profil par fichier de configuration

Un droit peut être posé sur un rôle, un groupe ou un utilisateur.

Le compte est identifié avec son login pour les utilisateurs et sa référence pour les groupes et rôles.

TIP

Il est recommandé de n'affecter des droits qu'à des rôles pour que la configuration des droits par
l'administrateur soit plus aisée.

Exemple :

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:access-configuration name="MY_ELEMENT_PROFIL" label="Mon profil">
        <smart:description>User can modify its own information</smart:description>
        <smart:element-access access="view" account="all"/>
        <smart:element-access access="view" account="mystaff"/>
        <smart:element-access access="edit" account="mystaff"/>
        <smart:element-access access="delete" account="mybigboss"/>
    </smart:access-configuration>

</smart:config>

Quatre options permettent de spécifier le comportement d'importation des droits : Elles sont configurables dans l'attribut access-configuration/@policy

  • ADD : Ajout de droits (option par défaut).
    Les anciens droits sont conservés, les droits spécifiés sont ajoutés.
  • DELETE: Suppression de droits.
    Les droits spécifiés sont retirés.
  • SET: Synchronisation des droits sans mise à jour systématique des Smart Elements. Les droits à importer sont comparés aux droits en base et la mise à jour des Smart Elements n'est effectuée que si les droits à importer sont différents de ceux présents en base.
  • RESET: Réinitialisation des droits.
    Les anciens droits sont retirés, les droits spécifiés sont ajoutés et un calcul des droits est lancé sur tous les Smart Elements associés à ce profil. Attention : Cette opération est consommatrice en temps et en ressources en proportion du nombre de Smart Elements lié au profil.

Exemple :

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:access-configuration name="MY_ELEMENT_PROFIL1" policy="DELETE">
        <smart:element-access access="view" account="all" />
    </smart:access-configuration>

    <smart:access-configuration name="MY_ELEMENT_PROFIL2" policy="RESET">
        <smart:element-access access="edit" account="all" />
    </smart:access-configuration>

    <smart:access-configuration name="MY_ELEMENT_PROFIL3" policy="SET">
        <smart:element-access access="edit" account="all" />
    </smart:access-configuration>

</smart:config>

# Lier un profil par programmation

La méthode AccessControl::setProfil($profilIdentifier) permet de lier un profil à un Smart Element.

<?php
$elt = \Anakeen\SmartElementManager::getDocument($myName);
$elt->accessControl()->setProfil($profilName);

Note : Un Smart Element Profil ne peut pas être lié à un autre profil.

# Profil dédié

Un Smart Element qui porte son propre profil est déclaré comme profil dédié. Cela implique que la modification du profil du Smart Element n'impacte que lui-même.

Les Smart Elements "profil" ont tous un profil dédié.

En utilisant un fichier d'importation, l'exemple suivant déclare un profil dédié :

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
     <smart:access-configuration name="MY_SPECIAL_ELEMENT" ref="MY_SPECIAL_ELEMENT"/>
</smart:config>

Il est aussi possible d'indiquer directement des droits sur un Smart Element. Dans ce cas, le profil devient dédié et les droits déclarés sont appliqués.

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
     <smart:access-configuration name="MY_SPECIAL_ELEMENT" >
         <smart:element-access access="view" account="all" />
     </smart:access-configuration>
</smart:config>

# Profil dynamique {dynamic}

Un Smart Element profil est dynamique si l'attribut access-configuration/@access-structure est renseigné. Ce champ doit contenir un identifiant de Smart Structure. Dans ce cas, ce profil ne peut être lié qu'à un Smart Element de cette Smart Structure ou dérivé de cette Smart Structure.

Cette caractéristique permet de rajouter des droits en fonction des smart fields de type account présents dans le Smart Element. Les champs de type docid avec l'option isuser=yes sont aussi utilisables comme paramètre de droit. Ces champs doivent néanmoins faire référence à des Smart Elements qui sont associés à des comptes.

Système

La référence à la structure est enregistrée dans le champ dpdoc_famid du Smart Element (de type PDOC ou dérivé) qui est créé suite à la déclaration du profil.

Un profil dynamique demande plus de ressources pour calculer ses droits. Notamment lorsque la modification de la définition un profil dynamique requiert le recalcul de tous les droits des Smart Elements liés au profil.

Exemple :

<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0">
    <smart:structure-configuration name="MY_ARTICLE" label="News">
        <smart:fields>
            <smart:field-set name="my_fr_info" type="frame" label="Information" access="ReadWrite">
                <smart:field-text name="my_title" label="Title" access="ReadWrite" needed="true" is-title="true"/>
                <smart:field-account name="my_writer" label="Writer" access="ReadWrite"/>
                <smart:field-account name="my_reporter" label="Reporter" access="ReadWrite" multiple="true"/>
                <smart:field-account name="my_team" label="Collaborators" access="ReadWrite" match="group"/>
            </smart:field-set>
        </smart:fields>
    </smart:structure-configuration>

     <smart:access-configuration name="MY_ARTICLE_PROFILE" label="Pr" access-structure="MY_ARTICLE">
            <smart:description>
               Writer and Reporters can modify, Collaborators can view news article
            </smart:description>
             <smart:element-access access="view" account="redaction team" />
             <smart:element-access access="edit" field="my_writer" />
             <smart:element-access access="delete" field="my_writer" />
             <smart:element-access access="edit" field="my_reporter" />
             <smart:element-access access="view" field="my_team" />
     </smart:access-configuration>

    <smart:structure-configuration name="MY_ARTICLE">
        <smart:accesses>
            <!-- affectation par défaut aux nouveaux articles -->
            <smart:element-access-configuration ref="MY_ARTICLE_PROFILE"/>
        </smart:accesses>
    </smart:structure-configuration>
</smart:config>

Si le rédacteur (Writer), le rapporteur (Reporter) ou l'équipe (Collaborators) sont modifiés alors les droits sur le Smart Element sont recalculés. De même si un utilisateur devient membre du groupe référencé par l'attribut my_team alors il a aussitôt le droit de voir ce Smart Element.

L'importation de droits pour un profil dynamique se fait en utilisant l'identifiant de l'attribut à la place de l'identifiant d'un rôle, d'un groupe ou d'un utilisateur. Un profil dynamique peut aussi avoir une partie statique comme les profils standards.