📍 المقالة الرئيسية: Directus 2026.
دون roles محددة، Directus الخاص بك مفتوح. هذا الدرس يفصل التكوين التحريري المُختبَر عند عدة وسائل ومتاجر فرنكوفونية.
المتطلبات
Directus في الإنتاج مع collections. 3 مستخدمين نشطين على الأقل. المستوى: متوسط. الوقت: 1-2 ساعة.
الخطوة 1 — نموذج Roles
لوسيلة رقمية أو متجر:
- Admin: تكوين، schema، users.
- Editor: ينشئ ويُحدِّث المقالات/المنتجات. لا delete.
- Reviewer: يصادق وينشر (status: draft → published).
- Author: ينشئ مقالات في draft، لا يمكنه النشر ولا delete.
- Public: قراءة فقط عبر API.
الخطوة 2 — إنشاء roles
Settings → Access Control → Roles → Create Role.
لـ Editor:
- Name: Editor.
- App access: ON.
- Admin access: OFF.
الخطوة 3 — صلاحيات لكل collection
لـ Editor على collection Articles:
- Read: All Items.
- Create: All Fields. Validation: status يجب أن يكون ‘draft’.
- Update: Use Custom. Filter:
{"created_by": {"_eq": "$CURRENT_USER"}, "status": {"_neq": "published"}}. - Delete: No Access.
الخطوة 4 — صلاحيات Reviewer
Reviewer لديه نفس صلاحيات Read/Create لكنه يستطيع update field status فقط.
الخطوة 5 — صلاحيات Author
Author أكثر تقييداً:
- Read: Use Custom. Filter: created_by.
- Create: OK مع status forced draft.
- Update: items الخاصة به، fields content + title، not status.
الخطوة 6 — صلاحيات حقل دقيقة
لـ Products، role Editor:
- Field price: Update OFF (admin فقط).
- Field stock: Update OFF.
- Field name، description، images: Update ON.
الخطوة 7 — Public role: API عام
Settings → Access Control → Public role.
لـ Articles: Read: Use Custom. Filter: {"status": {"_eq": "published"}}.
الخطوة 8 — Workflow Flow (automation)
Settings → Flows → Create Flow. Trigger: Event Hook → items.update → status changes.
عند تغيير status إلى review_requested، إرسال إشعار إلى reviewers.
الخطوة 9 — Audit log
Settings → Activity. كل الأعمال مُسجَّلة. للـ audit ARTCI/CDP/NESA: تصدير logs إلى Loki + Grafana مع احتفاظ سنة.
الخطوة 10 — اختبار سيناريو كامل
- Author ينشئ مقالاً (status: draft).
- Author يُحدِّث content، يغير status → review_requested.
- Reviewer يستلم إشعاراً.
- Reviewer يرى المقال، يغير status → published.
- Public role يستطيع قراءة عبر API.
الأخطاء الشائعة
| الخطأ | الحل |
|---|---|
| Editor يستطيع update published | Filter status._neq published |
| Author يرى مقالات الآخرين | Filter created_by |
| Public يرى drafts | Filter status._eq published |
التكيف مع السياق
Workflow صحفي/محرر: Author = صحفي، Reviewer = رئيس تحرير. Marketplaces multi-vendeurs: role Vendor مع filter vendor_id. ESN multi-clients: role لكل عميل + filter tenant_id.
دروس الإخوة
الأسئلة المتكررة
كم role كحد أقصى؟ لا حدود.
SSO + roles؟ Map groupe Authentik → role Directus.