الأدوار والصلاحيات
يوفر Joryio نظام تحكم دقيقًا بالوصول بحسب الدور، RBAC، يتيح لك تحديد ما يستطيع كل عضو في الفريق فعله بدقة. تعيّن الوصول من مكان واحد، Settings ← Team & Access، باستخدام الأدوار المدمجة أو القوالب الجاهزة أو مجموعات الصلاحيات المخصصة أو عضوية الفريق.
آلية الوصول
يُحل وصول كل عضو من ثلاثة أشياء، تُجمع معًا:
- منح مساحة العمل: دور أو مجموعة صلاحيات مخصصة تُطبق على كل مساحات العمل أو مساحات عمل محددة. هنا توجد معظم الصلاحيات.
- عضوية الفريق: تحمل الفرق دورها ونطاق مساحة العمل الخاص بها وتضيّق الرؤية بالوسوم، راجع قسم Teams أدناه.
- صلاحيات المؤسسة: مجموعة صغيرة من الإمكانات على مستوى المؤسسة تُمنح مباشرة للعضو.
تتبع الصلاحيات صيغة resource:action، مثل campaigns:read وcampaigns:send.
صلاحيات مساحة العمل مقابل صلاحيات الشركة
هذا أهم مفهوم في النموذج:
- صلاحيات مساحة العمل، وهي الأغلبية: الحملات والرحلات والجمهور والمحتوى والبيانات والأحداث والتحليلات والتكاملات ومفاتيح API والإعدادات والامتثال وقواعد التواصل وWhatsApp، تتحكم في موارد تخص مساحة عمل واحدة. تحملها منح الأدوار لكل مساحة عمل والفرق، ولا تُمنح عالميًا.
- صلاحيات الشركة، على مستوى المؤسسة هي الإمكانات الوحيدة التي تنطبق في كل مكان بصرف النظر عن مساحة العمل. تُمنح كـ قائمة اختيار مباشرة للعضو، لا عبر دور ولا ضمن نطاق مساحة عمل. وهي ست فقط:
| الصلاحية | ما تسمح به |
|---|---|
team:read | عرض الأعضاء وأدوارهم |
team:write | دعوة الأعضاء وتحديثهم وإزالتهم |
team:manage_roles | إنشاء الأدوار المخصصة وتحريرها وحذفها |
workspaces:manage | إنشاء مساحات العمل وحذفها وضبطها |
org_settings:write | تعديل إعداد المؤسسة: موفرو Email/SMS وكلمات SMS المفتاحية وقوالب Viber والإعدادات العامة ونطاق التتبع وإعدادات الخصوصية والاحتفاظ بالبيانات وصفحة هبوط تثبيت بطاقات Wallet؛ ويعرض أيضًا الإدخالات على مستوى المؤسسة في سجل تدقيق الامتثال |
billing:read | عرض سجل التدقيق على مستوى المؤسسة، وتفصيل الاستخدام والتكلفة، ورصيد المحفظة ودفترها (يشمل جميع مساحات العمل) |
كل ما ليس في القائمة هو على مستوى مساحة العمل. لهذا يمكن أن يكون العضو مسؤولًا في مساحة عمل واحدة ولا يملك وصولًا لأخرى، بينما تنطبق "إدارة الأعضاء" أو "إدارة مساحات العمل" دائمًا عبر المؤسسة كلها.
يتجاوز Admin وOwner محلل الصلاحيات بالكامل؛ فهما يملكان كل الصلاحيات في كل مساحة عمل دائمًا. التقسيم أعلاه مهم للجميع عداهم.
أدوار النظام
لدى Admin وصول كامل إلى كل ميزة وإعداد، ولا يمكن تعديله أو حذفه، ويعكس دائمًا مجموعة الصلاحيات الحالية: عند إضافة صلاحية جديدة إلى المنصة، يحصل عليها Admin تلقائيًا. وOwner اسم بديل لـ Admin.
| الدور | الوصف | الصلاحيات |
|---|---|---|
| Admin / Owner | وصول كامل إلى جميع الميزات والإعدادات | كل الصلاحيات، محدثة دائمًا |
| Editor | إنشاء المحتوى وتحريره؛ لا يمكنه الحذف أو الإرسال أو إدارة الإعدادات/الفريق/الأدوار/مفاتيح API | Read + Write، بلا Delete أو Send أو settings:write أو compliance:write أو team:write أو api_keys:write |
| Viewer | وصول للقراءة فقط إلى كل البيانات | كل صلاحيات :read |
أدوار القوالب
القوالب نقاط بداية جاهزة يمكنك تعيينها مباشرة أو نسخها وتخصيصها. على عكس Admin، القالب لقطة ثابتة تديرها أنت ولا يحصل تلقائيًا على الصلاحيات التي تضيفها المنصة لاحقًا.
| القالب | الوصف | الصلاحيات الرئيسية |
|---|---|---|
| Marketer | إنشاء الحملات وإرسالها وإدارة الجماهير والقوالب | Campaigns كاملة، Journeys كاملة، Segments قراءة/كتابة، Templates قراءة/كتابة، Analytics قراءة، Users قراءة |
| Developer | إدارة التكاملات والأحداث ومفاتيح API | Events قراءة/كتابة، Integrations قراءة/كتابة، API Keys قراءة/كتابة، Settings قراءة، Analytics قراءة |
| Analyst | وصول للقراءة فقط إلى التحليلات والحملات وبيانات المستخدمين | Analytics وCampaigns وJourneys وSegments وUsers وEvents: قراءة |
فئات الصلاحيات
تنظم الصلاحيات ضمن الفئات التالية. ما لم يُعلَّم بأنه على مستوى الشركة، تكون كل فئة على مستوى مساحة العمل وتُمنح لكل مساحة عبر دور أو مجموعة مخصصة.
Campaigns
campaigns:read: عرض الحملات وإحصاءاتها.campaigns:write: إنشاء الحملات وتحديثها.campaigns:delete: حذف الحملات.campaigns:send: إرسال الحملات وإيقافها مؤقتًا واستئنافها وإلغاؤها.campaigns:test: إرسال اختبار لحملة إلى عنوانك أو جهازك فقط. يحصل عليها المحررون افتراضيًا ليتمكنوا من فحص عملهم؛ ومن يملك هذه الصلاحية وحدها لا يمكنه إرسال اختبار إلى شخص آخر، لأن الاختبار يستخدم هوية الإرسال الحقيقية لمساحة العمل. وcampaigns:sendتتضمنها.campaigns:approve: الموافقة على الحملات المقدَّمة للمراجعة أو رفضها. منفصلة عنcampaigns:sendعن قصد: الاتفاق على صحة الحملة وإطلاقها قرارَان مختلفان، فيمكن لمساحة العمل أن تطلب شخصًا مختلفًا لكل منهما.
Journeys، Canvas
canvas:read: عرض الرحلات وتنفيذاتها.canvas:write: إنشاء الرحلات وتحديثها.canvas:delete: حذف الرحلات.canvas:activate: تفعيل الرحلات وإيقافها مؤقتًا واستئنافها.canvas:enter: إضافة شخص إلى رحلة نشطة (دخول عبر API، مثل إجراء "Add to journey" في Zapier). مشمولة فيcanvas:activate؛ ولا تسمح وحدها بتشغيل الرحلة أو إيقافها مؤقتًا أو تعديلها.canvas:approve: الموافقة على الرحلات المقدَّمة للمراجعة أو رفضها. منفصلة عنcanvas:activate، فيمكن لمساحة العمل أن تطلب أشخاصًا مختلفين للمراجعة وللإطلاق.
Users
users:read: عرض ملفات المستخدمين وسماتهم.users:write: إنشاء ملفات المستخدمين وتحديثها.users:delete: حذف ملفات المستخدمين.pii:view: إظهار قيم السمات المخصصة المعلَّمة PII في عروض جهات الاتصال، وإلا تكون مقنّعة؛ يملكها Admin وOwner دائمًا. وهي أيضًا ما يحتاجه اتصال تطبيق مثل Zapier، إضافة إلى المربع الاختياري "عرض عنوان البريد الإلكتروني ورقم الهاتف لجهات الاتصال" في صفحة الموافقة، ليتلقى البريد الإلكتروني والهاتف والمعرّف الخارجي لجهات الاتصال - انظر Me API.agents:contacts: وكلاء الذكاء الاصطناعي: بيانات جهات الاتصال. يتيح لوكيل ذكاء اصطناعي متصل عبر MCP البحث عن الأشخاص وقراءتهم وتحديثهم؛ يُعرض فقط عندما تسمح المؤسسة لوكلاء الذكاء الاصطناعي بقراءة بيانات جهات الاتصال (الإعدادات > عام، معطّل افتراضيًا).
صفحات الهبوط
landing_pages:read: عرض صفحات الهبوط ونماذجها وإرسالاتها.landing_pages:write: إنشاء صفحات الهبوط ونماذجها وتحريرها.landing_pages:publish: نشر صفحة هبوط على عنوانها العام وسحبها (المسؤولون والمالكون).
Segments
segments:read: عرض الشرائح ومستخدميها.segments:write: إنشاء الشرائح وتحديثها.segments:delete: حذف الشرائح.
Templates
templates:read: عرض قوالب Email وIn-app.templates:write: إنشاء القوالب وتحديثها.templates:delete: حذف القوالب.
Events
events:read: الاستعلام عن بيانات الأحداث والتحليلات.event_schema:write: تعريف مخططات الأحداث وقاموس البيانات (الاستيعاب هوevents:track).events:track: استقبال الأحداث عبر SDK ونقاط الخادم.
Entities
entities:read: عرض الكيانات المخصصة وسجلاتها.entities:write: إنشاء الكيانات المخصصة وسجلاتها وتحديثها.
Analytics
analytics:read: عرض لوحات التحليلات والتقارير.analytics:write: إنشاء لوحات المعلومات والمسارات وتحليلات الاحتفاظ والاستعلامات المحفوظة وتعديلها.
Settings، مساحة العمل
settings:read: عرض إعدادات مساحة العمل.settings:write: تعديل إعدادات مساحة العمل: المراقبة والوقت الهادئ وقواعد التواصل والاشتراكات والتطبيقات وWeb Push.settings:delete: حذف موارد إعدادات مساحة العمل.
Integrations
integrations:read: عرض التكاملات المضبوطة.integrations:write: ضبط التكاملات وإدارتها.hooks:manage: اشتراكات Webhook: اشتراك عنوان URL خارجي في أحداث مساحة العمل وإلغاء الاشتراك (REST hooks، مثل مشغلات Zapier).lists:read: عرض قوائم الاشتراك وعضويتها.lists:write: إنشاء قوائم الاشتراك وتحديثها وحذفها وتغيير العضوية.data_streaming:read: عرض تدفقات الأحداث وحالة تسليمها.data_streaming:write: إعداد تدفقات الأحداث نحو وجهتك.users:alias: إرفاق أسماء المستخدمين البديلة والمعرّفات الخارجية وإزالتها وتحليلها.users:merge: دمج ملفَّي مستخدم في ملف واحد.users:export: بدء مهام تصدير الشرائح وقراءتها.subscriptions:read: قراءة حالة اشتراك جهة الاتصال في القنوات والقوائم.subscriptions:write: تعيين حالة اشتراك جهة الاتصال في القنوات والقوائم.apps:read: عرض التطبيقات ومفاتيح SDK وإعدادات الإشعارات.apps:write: إنشاء التطبيقات وضبطها وضبط إعدادات الإشعارات.assets:read: عرض أصول مكتبة الوسائط.assets:write: رفع أصول مكتبة الوسائط وتحديثها.email_suppression:read: قراءة قوائم الارتداد والبريد المزعج وإلغاء الاشتراك للبريد.email_suppression:write: تعديل مدخلات حظر البريد.sms_suppression:read: قراءة أرقام الهواتف غير الصالحة والمحظورة.sms_suppression:write: إزالة علامة الهاتف غير الصالح عن المستخدمين.ai_agents:read: عرض وكلاء الذكاء الاصطناعي وسجل تشغيلهم.ai_agents:write: إنشاء وكلاء الذكاء الاصطناعي وتحديثهم واختبارهم وحذفهم.ecommerce:write: إنشاء المنتجات والسلات والطلبات وتحديثها.
WhatsApp
whatsapp:read: عرض حسابات وقوالب WhatsApp Business.whatsapp:write: ربط الحسابات وإدارة قوالب WhatsApp.
Wallet
wallet:read: عرض حسابات Wallet pass والبطاقات الصادرة.wallet:write: إدارة بيانات اعتماد Wallet وإصدار/تحديث البطاقات.
API Keys
api_keys:read: عرض مفاتيح API، باستثناء القيم السرية.api_keys:write: إنشاء مفاتيح API وتحديثها.api_keys:delete: إلغاء مفاتيح API وحذفها.
Compliance
compliance:read: عرض سجلات تدقيق الامتثال وطلبات DSR.compliance:write: معالجة طلبات DSR وإدارة إعدادات الامتثال.
Touching Rules
touching_rules:read: عرض قواعد حدود التكرار.touching_rules:write: ضبط قواعد حدود التكرار.
Team Management، على مستوى الشركة
team:read: عرض الأعضاء وأدوارهم.team:write: دعوة الأعضاء وتحديثهم وإزالتهم.team:manage_roles: إنشاء الأدوار المخصصة وتحريرها وحذفها.
Workspaces، على مستوى الشركة
workspaces:manage: إنشاء مساحات العمل وحذفها وضبطها.
Organization Settings، على مستوى الشركة
org_settings:write: تعديل إعداد المؤسسة، موفرو Email/SMS وكلمات SMS المفتاحية وقوالب Viber والإعدادات العامة ونطاق التتبع وإعدادات الخصوصية والاحتفاظ بالبيانات وصفحة هبوط تثبيت بطاقات Wallet.
إنشاء دور مخصص
- انتقل إلى Settings ← Team & Access ← Roles.
- انقر Create Role.
- أدخل اسمًا ووصفًا.
- اختر اختياريًا قالبًا لنسخ صلاحياته.
- حدد أو أزل تحديد الصلاحيات الفردية المجمعة حسب الفئة.
- انقر Save.
تعيين الوصول لعضو
توجد كل إدارة الأعضاء في Settings ← Team & Access ← Members. انقر Invite member لشخص جديد أو عدّل عضوًا قائمًا. يتكون النموذج من جزأين. يعمل رابط الدعوة لمدة 7 أيام. إذا انتهت صلاحيته، افتح قائمة صف العضو (النقاط الثلاث) واختر Resend invitation - يُرسل رابط جديد لمدة 7 أيام بالبريد ويتوقف الرابط القديم عن العمل. يتم تسجيل دخول الشخص الذي تدعوه مباشرة إلى مؤسستك عند قبوله الدعوة؛ وتذكر الرسالة أيضًا اسم حسابك ورابط تسجيل الدخول لاحقًا (راجع قبول دعوة). الدعوة هي الطريقة الوحيدة لإضافة عضو: لا يعيّن المسؤول أبدًا كلمة مرور لشخص آخر - يختار الشخص الذي تدعوه كلمة المرور الخاصة به عند قبول الدعوة.
1. Who
الاسم والبريد والهاتف، مع منتقي رمز البلد ويُخزن بـ E.164، وDepartment. Department قائمة اختيار؛ اختيار Agency / Third Party يعلّم العضو تلقائيًا كـ External، ولا يوجد مربع اختيار منفصل.
2. Access
وصول العضو هو اتحاد كتلة واحدة أو أكثر. أضف ما تحتاجه عبر + Add access، في أعلى يمين بطاقة Access، وكل كتلة تكون مستقلة إحدى هذه:
| الكتلة | معناها |
|---|---|
| Assign a role | إعادة استخدام دور محفوظ، نظام أو قالب أو مخصص. |
| Custom permissions | بناء مجموعة صلاحيات لمرة واحدة لهذا العضو فقط. |
| Team access | يرث العضو دور ومساحات عمل كل فريق محدد. |
تتحد الكتل بحرية: مثلًا Marketer in Production + مجموعة مخصصة في Staging + عضوية Team X، كلها لعضو واحد. وفي كتلتي Assign a role وCustom permissions تختار أيضًا Workspace access: All workspaces أو مجموعة محددة.
- Assign a role: اختر الدور من شبكة البطاقات، الاسم والوصف وعدد الصلاحيات.
- Custom permissions: حدد بالضبط صلاحيات مستوى مساحة العمل، مجمعة حسب الفئة، مع عداد حي "n of m selected" وخياري Select all / Clear all.
- Team access: اختر فريقًا أو أكثر؛ يحمل كل منها دوره ومساحات عمله.
صلاحيات المؤسسة
أسفل كتل الوصول قائمة Organization permissions مستقلة، وهي الإمكانات الست على مستوى الشركة. تنطبق في كل مكان بصرف النظر عن نطاق مساحة العمل أعلاه، لذلك تُمنح هنا مباشرة لا عبر دور.
تدخل صلاحيات العضو حيز التنفيذ خلال 60 ثانية.
تُحفظ مجموعة الصلاحيات المخصصة على العضو لا كدور مشترك. يؤدي تعديلها لاحقًا إلى تغيير ذلك العضو فقط ولا ينشئ أو يعدل دورًا يستخدمه الآخرون.
صلاحيات مفتاح API
صلاحيات مفتاح API نظام منفصل عن وصول الأعضاء. عند إنشاء مفتاح API تعيّن له صلاحيات محددة تتحكم فيما يمكنه الوصول إليه برمجيًا. تتحكم أدوار الأعضاء في قدرة الشخص على إدارة مفاتيح API، api_keys:read/write/delete، في مساحة عمل، لكن صلاحيات مفتاح API نفسه مستقلة.
Teams
توفر الفرق تحديد نطاق الموارد بالوسوم ضمن مساحة العمل. تتحكم الأدوار في الإجراءات التي يستطيع العضو تنفيذها، بينما تتحكم الفرق في الموارد التي يستطيع رؤيتها؛ ويحمل الفريق دوره ونطاق مساحة عمله الخاصين.
آلية الفرق
- لكل فريق دور ونطاق مساحة عمل ومجموعة اختيارية من الوسوم، مثل
marketingأوeuropeأوpremium. - يمكن وسم الموارد، الحملات والرحلات والشرائح والقوالب.
- لا يرى أعضاء الفريق إلا الموارد التي تشترك في وسم واحد على الأقل مع فريقهم.
- الموارد بلا وسوم مرئية للجميع.
- يرى الأعضاء بلا تعيين فريق كل الموارد، للتوافق مع السابق.
- تحديد نطاق الفريق فلتر تضييق: يقيد فقط ولا يوسّع الوصول أبدًا.
إنشاء فريق
- انتقل إلى Settings ← Team & Access ← Teams.
- انقر Create Team.
- أدخل الاسم والوصف واختر role وworkspace scope للفريق.
- أضف tags التي تحدد الموارد التي يستطيع الفريق الوصول إليها، واختَرها من وسوم مساحة العمل القائمة.
- انقر Save.
إدارة أعضاء الفريق
- انتقل إلى Settings ← Team & Access ← Teams.
- افتح فريقًا واستخدم منتقي الأعضاء لإضافة أشخاص من مؤسستك.
- أزل عضوًا بزر الإزالة.
مثال: فرق إقليمية
| الفريق | الوسوم | الموارد المرئية |
|---|---|---|
| EMEA Marketing | emea, marketing | الحملات الموسومة بـ emea أو marketing |
| US Sales | us, sales | الحملات الموسومة بـ us أو sales |
| Global Analytics | بلا وسوم | كل الموارد، بلا تقييد |
وسم الموارد
لاستخدام تحديد نطاق الفرق، ضع وسومًا على مواردك. يمكن إضافة الوسوم عند إنشاء أو تحرير أي مما يلي:
Campaigns
- انتقل إلى Campaigns ← Create أو حرر حملة قائمة.
- في تبويب Details، ابحث عن قسم Tags.
- اكتب اسم وسم واضغط Enter أو انقر Add.
Journeys
- انتقل إلى Journeys ← Create أو حرر رحلة قائمة.
- في نموذج الإنشاء، ابحث عن قسم Tags بعد الوصف.
- أضف الوسوم بالطريقة نفسها.
Segments
- انتقل إلى Segments ← Create أو حرر شريحة قائمة.
- ابحث عن قسم Tags بعد الوصف.
قوالب Email
- انتقل إلى Templates ← Email Templates ← Create أو حرر قالبًا قائمًا.
- ابحث عن قسم Tags بعد الوصف.
قوالب In-app
- انتقل إلى Templates ← In-App Templates ← Create أو حرر قالبًا قائمًا.
- ابحث عن قسم Tags بعد الوصف.
نصائح
- استخدم أسماء وسوم متسقة عبر الموارد، مثل
emeaدائمًا لاEMEAأوEurope. - المورد الذي لا يحمل وسومًا مرئي لكل أعضاء الفريق.
- المورد ذو الوسوم مرئي فقط لأعضاء الفرق التي تشترك في وسم مطابق واحد على الأقل.
- الوسوم حساسة لحالة الأحرف.
ضع وسومًا مناسبة لحملاتك ورحلاتك وشرائحك وقوالبك، ولن يرى أعضاء الفريق إلا ما يخصهم.