# PARTIE V — Administration et maintenance

# CHAPITRE 27 — Mise à jour du module

Les mises à jour du module s'effectuent sans interruption visible côté visiteurs. Ce chapitre présente la procédure standard et les précautions à observer.

### <span style="color: rgb(35, 111, 161);">Avant la mise à jour — liste de contrôle</span>

**Sur une instance de production, ne sautez jamais ces étapes :**

- Sauvegarde complète de la base Dolibarr (mysqldump).
- <span style="white-space: pre-wrap;">Sauvegarde du dossier </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/</span>`<span style="white-space: pre-wrap;"> existant.</span>
- <span style="white-space: pre-wrap;">Sauvegarde des données : </span>`<span class="editor-theme-code">DOL_DATA_ROOT/<entity>/website/</span>`<span style="white-space: pre-wrap;"> et </span>`<span class="editor-theme-code">medias/</span>`.
- Lecture du changelog de la nouvelle version pour repérer d'éventuelles modifications majeures.
- Test de la mise à jour sur une instance de pré-production lorsque c'est possible.

### <span style="color: rgb(35, 111, 161);">Procédure standard</span>

##### **Étape 1 — Désactiver le module**

<span style="white-space: pre-wrap;">Configuration → Modules → InfraSStudio → cliquer sur </span>**Désactiver**.

**Effet de la désactivation —**<span style="white-space: pre-wrap;"> Les constantes du module sont sauvegardées sous le préfixe </span>`<span class="editor-theme-code">INFRASSTUDIOBKP_</span>`. Les tables et leurs données restent intactes. L'entrée Outils → InfraS disparaît.

##### **Étape 2 — Remplacer les fichiers**

Trois méthodes selon votre environnement :

**Via l'interface Dolibarr**

1. <span style="white-space: pre-wrap;">Configuration → Modules → bouton </span>**« Déployer / installer un module »**.
2. <span style="white-space: pre-wrap;">Sélectionner la nouvelle archive </span>`<span class="editor-theme-code">module_infrasstudio-X.Y.Z.zip</span>`.
3. Confirmer le remplacement.

**Via SSH ou FTP**

```
cd /var/www/dolibarr/htdocs/custom/
mv infrasstudio infrasstudio.old.20260504
unzip /tmp/module_infrasstudio-1.9.0.zip
chown -R www-data:www-data infrasstudio/
```

**Via Git**

```
cd /var/www/dolibarr/htdocs/custom/infrasstudio
git fetch --tags
git checkout v1.9.0
```

##### **Étape 3 — Réactiver le module**

1. <span style="white-space: pre-wrap;">Configuration → Modules → InfraSStudio → cliquer sur </span>**Activer**.
2. Le module exécute alors :
    - <span style="white-space: pre-wrap;">la restauration des constantes </span>`<span class="editor-theme-code">INFRASSTUDIOBKP_</span>`<span style="white-space: pre-wrap;"> vers </span>`<span class="editor-theme-code">INFRASSTUDIO_</span>`,
    - <span style="white-space: pre-wrap;">l'application des migrations SQL nécessaires (fichiers </span>`<span class="editor-theme-code">sql/update_X.Y.Z_*.sql</span>`),
    - le réenregistrement des hooks et triggers,
    - <span style="white-space: pre-wrap;">la mise à jour de la constante </span>`<span class="editor-theme-code">INFRASSTUDIO_MAIN_VERSION</span>`.

##### **Étape 4 — Vérifier avec la page Diagnostic**

***Outils → InfraSStudio → Diagnostic***. L'ensemble des contrôles doit être au vert. La section Schéma SQL confirme en particulier que toutes les tables sont à jour.

##### **Étape 5 — Test fonctionnel**

Reproduisez trois actions courantes :

1. Ouvrir une page existante dans l'éditeur — l'aperçu doit se charger.
2. Modifier un slot — l'enregistrement automatique doit fonctionner (indicateur « Enregistré »).
3. Publier les modifications — vérifier que la version publique reflète bien la modification.

### <span style="color: rgb(35, 111, 161);">Lire le changelog avant chaque mise à jour</span>

Le changelog est accessible :

- <span style="white-space: pre-wrap;">Dans le module : </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/docs/changelog.xml</span>`.
- Dans l'administration : Outils → InfraSStudio → onglet Changelog.

##### **Lire les types de changement**

<table id="bkmrk-typesignificationfix" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Signification

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">fix</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Correction d'une anomalie.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">chg</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Modification d'un comportement existant.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">add</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Nouvelle fonctionnalité ou option.

</td></tr></tbody></table>

##### **Numérotation X.Y.Z**

<table id="bkmrk-composantcas-de-modi" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Composant

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Cas de modification

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**X (majeur)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">La version Dolibarr minimale prise en charge change.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Y (mineur)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Une nouvelle fonctionnalité ou option utilisateur est ajoutée.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Z (correctif)**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Corrections et modifications internes uniquement.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Fréquence des mises à jour</span>

Recommandations :

- **Correctif (Z)**<span style="white-space: pre-wrap;"> : à appliquer rapidement, surtout si l'anomalie corrigée vous concerne.</span>
- **Mineur (Y)**<span style="white-space: pre-wrap;"> : à appliquer dans les une à deux semaines, après lecture du changelog.</span>
- **Majeur (X)**<span style="white-space: pre-wrap;"> : à tester en pré-production, à planifier dans une fenêtre de maintenance, à communiquer à votre équipe.</span>

### <span style="color: rgb(35, 111, 161);">Retour en arrière</span>

Si une mise à jour pose problème :

1. Désactivez le module.
2. <span style="white-space: pre-wrap;">Restaurez le dossier </span>`<span class="editor-theme-code">infrasstudio.old.<date>/</span>`<span style="white-space: pre-wrap;"> sauvegardé à l'étape 2.</span>
3. Si une migration SQL a été appliquée, restaurez la base depuis le dump précédent.
4. Réactivez le module.

<p class="callout warning">**Avertissement — Restauration SQL —**<span style="white-space: pre-wrap;"> Une migration ajoute parfois des colonnes ou des tables. Si vous restaurez le dump pré-migration sans restaurer également les fichiers, le module détectera des structures manquantes et s'interrompra. Synchronisez toujours fichiers et base de données ensemble.</span></p>

### <span style="color: rgb(35, 111, 161);">Récapitulatif</span>

**Vous savez désormais :**

- Préparer une mise à jour avec une liste de contrôle (sauvegarde base, fichiers, données).
- Suivre la procédure en cinq étapes (désactiver, remplacer, réactiver, diagnostic, test).
- Lire le changelog et comprendre la numérotation X.Y.Z.
- Appliquer la fréquence appropriée selon le type de version.
- Revenir en arrière en cas d'incident.

**Fin de la Partie V —**<span style="white-space: pre-wrap;"> Vous savez gérer le module en tant qu'administrateur : permissions, configuration avancée, résolution des incidents, mises à jour. Le module est désormais entre des mains compétentes.</span>

La Partie VI propose la référence pure du module : tableaux exhaustifs des constantes, des shortcodes, des hooks, des tables SQL et des scripts en ligne de commande. À garder à portée pour une consultation rapide.

# CHAPITRE 26 — Diagnostic et résolution des incidents

Lorsqu'un comportement inattendu apparaît, ce chapitre vous guide dans la résolution. Le réflexe à adopter est simple : commencer par la page Diagnostic, lire les journaux, et n'envisager une action plus radicale qu'en dernier recours.

### <span style="color: rgb(35, 111, 161);">Toujours commencer par la page Diagnostic</span>

***Outils → InfraSStudio → onglet Diagnostic***. Le contrôle visuel (vert, orange, rouge) couvre :

- Versions de Dolibarr et de PHP, présence des extensions PHP requises.
- État du module et de sa dépendance Website.
- Présence des cinq tables SQL du module.
- <span style="white-space: pre-wrap;">Permissions d'écriture sur </span>`<span class="editor-theme-code">DOL_DATA_ROOT</span>`.
- Hooks chargés, présence du trigger, déclaration des tâches planifiées.
- Pour chaque site géré : résolution du docroot, mode média, dossier de données.

<p class="callout info">**À retenir —**<span style="white-space: pre-wrap;"> 80 % des incidents signalés sont en réalité une ligne rouge ou orange du Diagnostic ignorée. Demandez systématiquement à toute personne qui rapporte un dysfonctionnement de joindre d'abord cette capture.</span></p>

### <span style="color: rgb(35, 111, 161);">Lire les journaux Dolibarr</span>

<span style="white-space: pre-wrap;">Le module utilise </span>`<span class="editor-theme-code">dol_syslog()</span>`<span style="white-space: pre-wrap;"> pour tracer les opérations sensibles, avec le préfixe </span>`<span class="editor-theme-code">infrasstudio</span>`.

##### **Emplacement**

```
htdocs/documents/dolibarr.log
```

##### **Filtrer les entrées du module**

```
# Toutes les entrées du module
grep "infrasstudio" htdocs/documents/dolibarr.log

# Uniquement les erreurs
grep "infrasstudio.*LOG_ERR" htdocs/documents/dolibarr.log

# Suivi en temps réel pendant qu'un utilisateur reproduit le problème
tail -f htdocs/documents/dolibarr.log | grep infrasstudio
```

<p class="callout info">**Conseil — Activer le niveau DEBUG —**<span style="white-space: pre-wrap;"> Pour traquer un incident subtil, augmentez temporairement le niveau de journalisation Dolibarr (Configuration → Sécurité → Système) à </span>`<span class="editor-theme-code">LOG_DEBUG</span>`. Pensez à le rabaisser une fois le diagnostic terminé.</p>

### <span style="color: rgb(35, 111, 161);">Incidents fréquents et solutions</span>

##### **Le menu InfraS n'apparaît pas dans Outils**

<table id="bkmrk-cause-probablel%27util" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">L'utilisateur ne possède pas la permission </span>

`<span class="editor-theme-code">paramMenu</span>`

.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Onglet Permissions de l'utilisateur, cocher </span>

`<span class="editor-theme-code">paramMenu</span>`

<span style="white-space: pre-wrap;"> dans la section InfraSStudio.</span>

</td></tr></tbody></table>

##### **Les modifications ne sont pas visibles publiquement**

<table id="bkmrk-cause-probablemodifi" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Modifications restées en brouillon sans être publiées.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Cliquer sur « Publier les modifications » dans la barre d'outils. Voir le Chapitre 12.

</td></tr></tbody></table>

##### **L'aperçu affiche une erreur 404**

<table id="bkmrk-cause-probablela-pag" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">La page possède un type\_container </span>

`<span class="editor-theme-code">other</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">menu</span>`

<span style="white-space: pre-wrap;"> ou </span>

`<span class="editor-theme-code">setup</span>`

, et le filtre du noyau la bloque.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Le module corrige automatiquement ce comportement depuis la version 1.8.7. Vérifiez que vous êtes en version 1.8.7 ou supérieure.

</td></tr></tbody></table>

##### **Erreur réseau dans l'éditeur (erreur AJAX)**

<table id="bkmrk-cause-probablesessio" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Session Dolibarr expirée, ou avertissement PHP émis avant les en-têtes HTTP.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Recharger la page Studio (F5). Si le problème persiste, consultez </span>

`<span class="editor-theme-code">dolibarr.log</span>`

<span style="white-space: pre-wrap;"> pour identifier l'erreur PHP réelle.</span>

</td></tr></tbody></table>

##### **Les images téléversées ne s'affichent pas publiquement**

<table id="bkmrk-cause-probablelien-s" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Lien symbolique </span>

`<span class="editor-theme-code">medias</span>`

<span style="white-space: pre-wrap;"> manquant ou cassé en mode native.</span>

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Recréer le lien symbolique avec </span>

`<span class="editor-theme-code">ln -sfn ...</span>`

<span style="white-space: pre-wrap;">, ou basculer le site en mode média </span>

`<span class="editor-theme-code">module</span>`

.

</td></tr></tbody></table>

##### **Les wrappers solution-\*.php ne se génèrent pas**

<table id="bkmrk-cause-probableinfras" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_WEBSITE_KEY</span>`

<span style="white-space: pre-wrap;"> ou </span>

`<span class="editor-theme-code">INFRASSTUDIO_PUBLIC_DOCROOT</span>`

<span style="white-space: pre-wrap;"> non configurées.</span>

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Configurer ces deux constantes dans Outils → InfraSStudio → Configuration → Wrappers.

</td></tr></tbody></table>

##### **Les slots ne se mettent pas à jour après modification du tpl.php**

<table id="bkmrk-cause-probablele-sca" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 30%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 30%;">**Cause probable**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Le scanner n'a pas été lancé.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">**Solution**

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Outils → InfraSStudio → Contenu → bouton « Rescanner ». Ou en ligne de commande : </span>

`<span class="editor-theme-code">php scripts/rescan_slots.php <ref-site></span>`

.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Réinitialiser le module</span>

Si le module se trouve dans un état incohérent (utilisation impossible, erreurs SQL persistantes), vous pouvez le réinitialiser :

1. ***Configuration → Modules → InfraSStudio***<span style="white-space: pre-wrap;"> → cliquer sur </span>**Désactiver**.
2. <span style="white-space: pre-wrap;">Le module sauvegarde toutes ses constantes sous le préfixe </span>`<span class="editor-theme-code">INFRASSTUDIOBKP_</span>`.
3. <span style="white-space: pre-wrap;">Cliquer à nouveau sur </span>**Activer**.
4. Le module restaure ses constantes, recrée les tables manquantes et réenregistre les hooks.

<p class="callout success">**Aucune perte de données —**<span style="white-space: pre-wrap;"> Les valeurs de slot, les médias et les traductions sont conservés dans leurs tables respectives. La désactivation puis réactivation ne touche qu'au descripteur et aux hooks.</span></p>

### <span style="color: rgb(35, 111, 161);">Demander de l'aide</span>

Si rien ne fonctionne, préparez ces trois informations avant toute demande d'aide :

1. Capture d'écran de la page Diagnostic complète.
2. <span style="white-space: pre-wrap;">Les vingt dernières lignes de </span>`<span class="editor-theme-code">dolibarr.log</span>`<span style="white-space: pre-wrap;"> filtrées sur </span>`<span class="editor-theme-code">infrasstudio</span>`.
3. La version exacte du module et de Dolibarr (visibles en haut de la page Diagnostic).

Avec ces trois éléments, n'importe quel développeur connaissant le module peut établir un diagnostic en quelques minutes.

### <span style="color: rgb(35, 111, 161);">Récapitulatif</span>

**Vous savez désormais :**

- Lancer la page Diagnostic comme premier réflexe.
- Lire et filtrer les journaux Dolibarr.
- Identifier les sept incidents fréquents et leurs solutions.
- Réinitialiser le module proprement (désactivation et réactivation).
- Préparer un rapport d'incident efficace en trois étapes.

# CHAPITRE 25 — Configuration avancée (constantes)

Le module expose une vingtaine de constantes Dolibarr qui permettent d'ajuster son comportement. Ce chapitre les classe par catégorie d'usage avec les valeurs typiques.

### <span style="color: rgb(35, 111, 161);">Sites gérés</span>

<table id="bkmrk-constantedescription" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_MANAGED_SITES</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">CSV des identifiants de sites gérés. Exemple : </span>

`<span class="editor-theme-code">1,2,5</span>`

.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_MEDIA_MODE</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Mode média par site. </span>

`<span class="editor-theme-code">native</span>`

<span style="white-space: pre-wrap;"> (par défaut) ou </span>

`<span class="editor-theme-code">module</span>`

.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_BLOG_INDEX_PAGE</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Identifiant de la page d'index du blog (active l'assistant « + Nouvel article »).

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_DOCROOT</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Surcharge du docroot Apache pour ce site spécifique.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Portabilité du système de fichiers</span>

Pour les hébergements aux configurations non standards :

<table id="bkmrk-constantedescription-1" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DOCROOT_PATTERN</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Modèle de chemin partagé utilisant le marqueur </span>

`<span class="editor-theme-code">{ref}</span>`

<span style="white-space: pre-wrap;">. Exemple : </span>

`<span class="editor-theme-code">/srv/sites/{ref}</span>`

.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TEMPLATE_EXTRA_DIR</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Dossier supplémentaire à scanner pour les gabarits de page.

</td></tr></tbody></table>

**Note — Cascade de résolution —**<span style="white-space: pre-wrap;"> Pour le docroot d'un site, l'ordre de recherche est : </span>`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_DOCROOT</span>`<span style="white-space: pre-wrap;">, puis </span>`<span class="editor-theme-code">INFRASSTUDIO_DOCROOT_PATTERN</span>`<span style="white-space: pre-wrap;">, puis le repli sur </span>`<span class="editor-theme-code">/var/www/<ref></span>`.

### <span style="color: rgb(35, 111, 161);">Catalogue produit</span>

<table id="bkmrk-constantedescription-2" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_WEBSITE_KEY</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Référence du site cible des wrappers solution.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_PUBLIC_DOCROOT</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Docroot Apache absolu où écrire les wrappers.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_PRODUCT_UNIVERS_MAP</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Surcharge JSON de la cartographie catégorie vers univers.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">CSV de slugs de champs personnalisés à déclarer comme traduisibles, en complément du registre par défaut.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS_JSON</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Surcharge JSON complète du registre.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_WRAPPER_PREFIX</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Préfixe des wrappers (par défaut </span>

`<span class="editor-theme-code">solution-</span>`

).

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_WRAPPER_TEMPLATE_PAGEURL</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Slug du gabarit (par défaut </span>

`<span class="editor-theme-code">solution-detail</span>`

).

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Apparence du Studio</span>

<table id="bkmrk-constantevaleurspar-" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Valeurs

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Par défaut

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_UI_THEME</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">light</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">dark</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">light</span>`

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_UI_ACCENT</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">indigo</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">ochre</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">plum</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">forest</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">indigo</span>`

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Multilingue côté gabarits</span>

<table id="bkmrk-constantedescription-3" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_ISO</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Force la langue active. Définie dynamiquement par les gabarits.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_COOKIE</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Nom du cookie de persistance de la langue (par défaut </span>

`<span class="editor-theme-code">infras_lang</span>`

).

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_MAP_JSON</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Surcharge de la cartographie ISO2 vers locale (exemple : </span>

`<span class="editor-theme-code">{"en":"en_GB"}</span>`

).

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_BLOG_FALLBACK_IMAGE</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Image par défaut affichée lorsqu'un article ne possède pas d'image principale.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Compatibilité et débogage</span>

<table id="bkmrk-constantedescription-4" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DOL_VERSION</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Version de Dolibarr lors de l'activation du module. Géré automatiquement.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_MAIN_VERSION</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Version du module. Géré automatiquement.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DISABLE_CHECK_VERSION_MIN</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">À régler sur </span>

`<span class="editor-theme-code">1</span>`

<span style="white-space: pre-wrap;"> pour contourner la vérification de version Dolibarr minimale (usage avancé).</span>

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Définir une constante</span>

##### **Méthode A — Via l'administration du module**

La majorité des constantes sont accessibles dans Outils → InfraSStudio → Configuration, dans la section dépliable « Réglages avancés ». Le formulaire valide les saisies et affiche des avertissements non bloquants en cas d'incohérence.

##### **Méthode B — Via SQL**

```
INSERT INTO llx_const (name, value, type, visible, entity)
VALUES ('INFRASSTUDIO_DOCROOT_PATTERN', '/srv/sites/{ref}', 'chaine', 0, 2);
```

##### **Méthode C — Via PHP en ligne de commande**

```
php -r "
require 'htdocs/master.inc.php';
\$conf->entity = 2;
dolibarr_set_const(\$db, 'INFRASSTUDIO_DOCROOT_PATTERN', '/srv/sites/{ref}',
    'chaine', 0, '', 2);
"
```

### <span style="color: rgb(35, 111, 161);">Vérifier la configuration</span>

Après chaque modification de constante, lancez la page Diagnostic du module. Elle valide en direct l'existence des chemins, la cohérence des modèles, etc.

### <span style="color: rgb(35, 111, 161);">Récapitulatif</span>

**Vous savez désormais :**

- Identifier les vingt constantes du module classées par usage.
- Comprendre la cascade de résolution du docroot.
- Configurer le catalogue produit (référence du site, docroot, préfixe, gabarit).
- Personnaliser l'apparence (thème, couleur d'accent).
- Définir une constante via l'administration, SQL ou ligne de commande.
- Valider une configuration via la page Diagnostic.

# CHAPITRE 24 — Permissions et rôles utilisateur

Le module expose sept permissions distinctes, attribuables finement aux utilisateurs Dolibarr. Ce chapitre vous indique les attributions à privilégier en fonction des rôles, dans l'esprit du principe de moindre privilège.

### <span style="color: rgb(35, 111, 161);">Les sept permissions du module</span>

<table id="bkmrk-permissionce-qu%27elle" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Permission

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Ce qu'elle autorise

</th></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">paramMenu</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Voir l'entrée InfraS dans le menu Outils. Sans cette permission, le module est invisible pour l'utilisateur.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Consulter le contenu (pages, slots, médias) en lecture seule. Aucune modification possible.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Modifier les valeurs des slots (textes, images, couleurs, etc.) en brouillon.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editTranslations</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Saisir et modifier les traductions (slots et fiches produit).

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editMedias</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Téléverser, modifier et supprimer des médias dans la bibliothèque.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">publish</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Publier les brouillons en attente, mettre en ligne ou retirer des pages.

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">admin</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Configurer le module (sites gérés, constantes), supprimer des pages, accéder au Diagnostic.

</td></tr></tbody></table>

<p class="callout info">**Note —**<span style="white-space: pre-wrap;"> Un utilisateur portant le drapeau Dolibarr « Super-administrateur » contourne toutes les permissions du module. Ce comportement est volontaire pour rester cohérent avec la philosophie de Dolibarr. Pour tester finement les permissions, utilisez un compte non administrateur.</span></p>

### <span style="color: rgb(35, 111, 161);">Les rôles types</span>

Plutôt que d'attribuer les permissions une à une à chaque utilisateur, il est préférable de définir des profils que vous applique ensuite aux comptes.

##### **Lecteur**

Pour une personne qui consulte le site sans le modifier (commercial, support, juriste relisant la conformité).

<table id="bkmrk-parammenuouireadcont" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 40%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 40%;">`<span class="editor-theme-code">paramMenu</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Toutes les autres

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Non

</td></tr></tbody></table>

##### **Rédacteur**

Pour une personne qui modifie les contenus mais ne publie pas seule (mise en place d'un circuit de relecture).

<table id="bkmrk-parammenuouireadcont-1" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 40%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 40%;">`<span class="editor-theme-code">paramMenu</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editMedias</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">publish</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Non (pas de publication directe)

</td></tr></tbody></table>

##### **Traducteur**

Pour une personne qui n'effectue que des traductions (souvent un prestataire externe).

<table id="bkmrk-parammenuouireadcont-2" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 40%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 40%;">`<span class="editor-theme-code">paramMenu</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editTranslations</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Toutes les autres

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Non

</td></tr></tbody></table>

##### **Rédacteur autonome**

Pour une personne qui rédige et publie seule (équipe restreinte, indépendant, etc.).

<table id="bkmrk-parammenuouireadcont-3" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col style="width: 40%;"></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235); width: 40%;">`<span class="editor-theme-code">paramMenu</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editContent</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editMedias</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">editTranslations</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">publish</span>`

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr></tbody></table>

##### **Administrateur du module**

Pour le développeur de l'agence ou le responsable technique du site.

<table id="bkmrk-toutes-les-permissio" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col></colgroup><tbody><tr><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Toutes les permissions

</td><td style="padding: 0.5rem 1rem; border: 1px solid rgb(229, 231, 235);">Oui

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Attribuer les permissions à un utilisateur</span>

1. Rendez-vous dans Accueil → Utilisateurs et Groupes → Liste des utilisateurs.
2. Sélectionnez l'utilisateur cible.
3. <span style="white-space: pre-wrap;">Cliquez sur l'onglet </span>**Permissions**.
4. <span style="white-space: pre-wrap;">Faites défiler jusqu'à la section </span>**InfraSStudio**.
5. Cochez les permissions à attribuer.
6. Enregistrez.

<p class="callout info">**Conseil — Utilisez les groupes —**<span style="white-space: pre-wrap;"> Si vous administrez plusieurs rédacteurs, créez un groupe Dolibarr (par exemple « InfraS Rédacteurs ») et attribuez-lui les permissions. Les utilisateurs ajoutés au groupe en héritent automatiquement.</span></p>

### <span style="color: rgb(35, 111, 161);">Mettre en place un circuit de relecture</span>

Voici comment exploiter les permissions pour un circuit de relecture propre :

<table id="bkmrk-acteurpermissionst%C3%A2c" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.95em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Acteur

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Permissions

</th><th class="align-left" style="padding: 0.6rem 1rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Tâche

</th></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Rédacteur

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

<span style="white-space: pre-wrap;"> + </span>

`<span class="editor-theme-code">editContent</span>`

<span style="white-space: pre-wrap;"> + </span>

`<span class="editor-theme-code">editMedias</span>`

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Modifie les slots et prépare les brouillons.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Relecteur

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Consulte les brouillons dans l'aperçu, valide ou demande des modifications.

</td></tr><tr><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Publicateur

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">readContent</span>`

<span style="white-space: pre-wrap;"> + </span>

`<span class="editor-theme-code">publish</span>`

</td><td style="padding: 0.6rem 1rem; border: 1px solid rgb(229, 231, 235);">Publie les brouillons après validation du relecteur.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Récapitulatif</span>

**Vous savez désormais :**

- Identifier les sept permissions du module.
- Définir cinq rôles types (lecteur, rédacteur, traducteur, rédacteur autonome, administrateur).
- Attribuer les permissions à un utilisateur ou à un groupe Dolibarr.
- Mettre en place un circuit de relecture à plusieurs.