Comment paramétrer le cycle de vie - Comment créer des profils dynamiques
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement avoir vu comment créer un profil.
De plus, il faut avoir abordé la notion de Cycle de vie
: Comment créer cycle de vie
Création d’un ou plusieurs profils
Pour pouvoir créer un profil pour le cycle de vie il va falloir utiliser le même fichier de profil que celui des profils statiques.
Si vous ne l’avez pas encore créé voici un lien vers le tutoriel de Création de profil
Voici le fichier généré
src/vendor/<vendorName>/<moduleName>/SmartStructures/<SmartStructureName>/<SmartStructureName>Settings/120-Profile<SmartStructureName>.xml
<?xml version="1.0" encoding="UTF-8"?> <smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"> <smart:access-configuration name="<SmartStructureName>" label="<SmartStructureName>"> <!-- <smart:element-access access="view" account="account1"/> <smart:element-access access="view" account="account2"/> --> </smart:access-configuration> </smart:config>
Il reste maintenant à paramétrer ce profil afin de sécuriser les transitions du cycle de vie.
Définir les profils de chaques étapes
Prenons comme exemple la smart Structure PLAT
qui contient quatre états possibles différents et suivra donc le modèle
d’état suivant : Rédaction => En test => À la carte => Retiré.
Dans le fichier xml généré vous allez pouvoir ajouter un profil pour chaque états du cycle de vie:
src/vendor/Cogip/Restauratec/SmartStructures/Plat/PlatSettings/120-ProfilePlat.xml
<?xml version="1.0" encoding="UTF-8"?> <smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"> <smart:access-configuration name="PDOC_PLAT_E1" label="En cours de rédaction" access-structure="PLAT"> <smart:description>A cet état le plat ne peut être vu, modifié et supprimé seulement par le créateur </smart:description> <smart:element-access access="view" field="consommable_creator"/> <!-- access = definit l’accés de l’état / field = spécification du field-account de la smartStructure (par exemple le créateur du smart element) --> <smart:element-access access="edit" field="consommable_creator"/> <smart:element-access access="delete" field="consommable_creator"/> </smart:access-configuration> <smart:access-configuration name="PDOC_PLAT_E2" label="En test" access-structure="PLAT"> <smart:description>A cet état le plat peut être vu par tout le monde mais seul le créateur peut le modifier</smart:description> <smart:element-access access="view" account="role_restaurant_member"/> <smart:element-access access="edit" field="consommable_creator"/> </smart:access-configuration> <smart:access-configuration name="PDOC_PLAT_E3" label="A la carte" access-structure="PLAT"> <smart:description>A cet état le plat est en lecture seul par tous le monde</smart:description> <smart:element-access access="view" account="role_restaurant_member"/> </smart:access-configuration> <smart:access-configuration name="PDOC_PLAT_E4" label="Retiré" access-structure="PLAT"> <smart:description>A cet état le plat est en lecture seul par tous le monde</smart:description> <smart:element-access access="view" account="role_restaurant_member"/> </smart:access-configuration> </smart:config>
Nom interne | Description | Description | PDOC |
---|---|---|---|
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 . |
Lier les profils au cycle de vie
Maintenant il ne vous reste plus qu’à lier vos profils aux états du cycle de vie.
Dans le fichier
src/vendor/Cogip/Restauratec/SmartStructures/Plat/PlatWorkflows/WdocPlatWorkflow/130-WdocPlatWorkflowPermissions.xml
:<?xml version="1.0" encoding="UTF-8"?> <smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:workflow="https://platform.anakeen.com/4/schemas/workflow/1.0"> <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--> <!--Step Element Accesses of workflow: profile and field accesses reference--> <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--> <workflow:config xmlns:workflow="https://platform.anakeen.com/4/schemas/workflow/1.0" name="WDOC_PLAT" structure="PLAT" model="WFAM_PLAT"> <workflow:steps> <workflow:step ref="plat_e1"> <!-- wfam* = référence vers le nom de l’état du cycle de vie --> <workflow:element-access-configuration ref="PDOC_PLAT_E1"/> <!-- PDOC* = nom de votre profil--> </workflow:step> <workflow:step ref="plat_e2"> <workflow:element-access-configuration ref="PDOC_PLAT_E2"/> </workflow:step> <workflow:step ref="plat_e3"> <workflow:element-access-configuration ref="PDOC_PLAT_E3"/> </workflow:step> <workflow:step ref="plat_e4"> <workflow:element-access-configuration ref="PDOC_PLAT_E4"/> </workflow:step> </workflow:steps> </workflow:config> </smart:config>
Attention
Pensez à effectuer une réinstallation afin que l’application prenne en compte les modifications effectuées :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Résultat / Vérification
Nous souhaitons vérifier qu'à l'état En cours de rédaction
, le plat ne peut être vu, modifié et supprimé seulement par
le créateur.
Pour ce faire, créons un plat avec un utilisateur ayant le rôle role_direction
:
http://localhost:8080/api/v2/smart-elements/PLAT/views/!defaultCreation.html
Une fois le plat crée, vérifions qu'avec cet utilisateur le plat peut être vu, modifié et supprimé :
À l'inverse, vérifions que pour ce même Plat
, un utilisateur ayant le rôle role_cuisinier
n'a pas accès au plat :