# 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.