📍 Article principal du cluster : Directus 2026 : guide complet.
Sans rôles définis, votre Directus est ouvert : tout admin peut tout faire, le rédacteur peut accidentellement supprimer une catégorie. Ce tutoriel détaille la configuration éditoriale validée chez plusieurs médias et e-commerces francophones d’Afrique de l’Ouest et du Maghreb.
Prérequis
- Directus en production avec collections (voir tutoriel installation).
- Au moins 3 utilisateurs actifs.
- Niveau attendu : intermédiaire.
- Temps estimé : 1-2 heures.
Étape 1 — Modèle de rôles
Pour un média digital ou e-commerce :
- Admin : configuration, schema, users. Tout pouvoir.
- Editor : crée et update articles/produits. Pas de delete.
- Reviewer : valide et publie (status: draft → published).
- Author : crée articles en draft, ne peut pas publier ni delete.
- Public : lecture seule via API.
Étape 2 — Créer rôles
Settings → Access Control → Roles → Create Role.
Pour Editor :
- Name : Editor.
- Description : « Edite articles et produits, ne peut pas publier ».
- App access : ON (Studio access).
- Admin access : OFF.
Étape 3 — Permissions par collection
Pour le rôle Editor sur collection Articles :
- Read : All Items.
- Create : All Fields. Validation : status doit être ‘draft’.
- Update : Use Custom. Filter :
{"created_by": {"_eq": "$CURRENT_USER"}, "status": {"_neq": "published"}}. Fields : tous sauf status. - Delete : No Access.
Editor peut update SES articles tant qu’ils ne sont pas published. Pas de modification après publication.
Étape 4 — Permissions Reviewer
Reviewer a même permissions Read/Create que Editor mais en plus :
- Update : Use Custom. Filter : aucun (peut update tous). Fields : status uniquement.
Reviewer peut faire passer status draft → published mais pas modifier le contenu.
Étape 5 — Permissions Author
Author plus restrictif :
- Read : Use Custom. Filter :
{"created_by": {"_eq": "$CURRENT_USER"}}. Voit uniquement ses propres articles. - Create : OK avec status forcé draft.
- Update : ses items, fields content + title, pas status.
- Delete : No Access.
Étape 6 — Champ permissions granulaires
Pour collection Products, role Editor :
- Field price : Update OFF (admin only).
- Field stock : Update OFF.
- Field name, description, images : Update ON.
Editor enrichit catalogue mais ne touche pas aux prix/stock.
Étape 7 — Public role : API publique
Settings → Access Control → Public role.
Pour Articles :
- Read : Use Custom. Filter :
{"status": {"_eq": "published"}}. - Other : No Access.
API publique retourne uniquement articles publiés. Aucun token requis.
Étape 8 — Workflow Flow (automation)
Settings → Flows → Create Flow.
Trigger : Event Hook → items.update → collection articles → status changes.
Operations :
- Condition : payload.status === ‘review_requested’.
- Send Notification → User Notifications → all reviewers.
- Email reviewer : « Article X attend votre review ».
Quand un Author passe son article en « review_requested », tous les Reviewers reçoivent notification.
Étape 9 — Audit log
Settings → Activity. Toutes les actions sont loggées : qui a edit quoi, quand. Conservation 90 jours par défaut. Configurable.
Pour audit ARTCI/CDP/NESA : exporter logs vers Loki + Grafana avec rétention 1 an.
Étape 10 — Test scénario complet
- Author crée article (status: draft).
- Author update content, change status → review_requested.
- Reviewer reçoit notification.
- Reviewer voit article, change status → published.
- Public role peut désormais lire via API.
- Author ne peut plus modifier (status published bloqué).
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Editor peut update published | Filter mal défini | Vérifier filter status._neq published |
| Author voit articles autres | Filter created_by manquant | Filter {created_by: {_eq: $CURRENT_USER}} |
| Public voit drafts | Filter manquant | Filter {status: {_eq: published}} |
| Reviewer ne peut pas publier | Field status update OFF | Activer field status Update |
| Notification flow ne marche pas | Trigger condition incorrecte | Tester avec Run Flow Manually |
| Audit log saturé | Rétention par défaut | Configurer cleanup périodique |
Adaptation au contexte ouest-africain
Trois précisions. Workflow journaliste/rédacteur : pour une rédaction à Casablanca, journalistes en Author, chef de rédaction en Reviewer, directeur en Admin. Workflow review obligatoire avant publication. Marketplaces multi-vendeurs : chaque vendeur en role Vendor avec filter {vendor_id: {_eq: $CURRENT_USER.vendor}}. Voit uniquement ses produits. ESN multi-clients : créer role par client + filter sur tenant_id.
Tutoriels frères
FAQ
Combien de rôles max ? Pas de limite. 10-20 typique pour PME complexe.
Permissions héritées ? Pas natif. Workaround : copier permissions entre rôles puis ajuster.
SSO + rôles ? Map groupe Authentik → role Directus via custom flow.
Audit conformité ? Activity log Directus + export Loki = trace complète.
Approbations multi-niveau ? Status draft → review_l1 → review_l2 → published, un Reviewer par niveau.
Pour aller plus loin
- 🔝 Retour au pilier : Guide complet Directus 2026
- Documentation Permissions : docs.directus.io/configuration/users-roles-permissions