Aptli

من يمكنه رؤية وتغيير ماذا

هذا هو السؤال الذي يُطرح علينا أكثر من غيره، لذا يجدر بنا توضيحه منذ البداية. نموذج الوصول في Aptli بسيط عن قصد، ويبدأ من إعداد افتراضي واحد:

بشكل افتراضي، يمكن للجميع رؤية كل شيء — ولكن لا يمكن للجميع تغيير كل شيء. الرؤية مفتوحة بشكل افتراضي؛ أما القدرة على التعديل فهي ما تمنحه أنت. ثم تقوم بتضييق نطاق الرؤية فقط حيثما تحتاج إلى ذلك على وجه التحديد.

يتم التحكم في طبقتين مستقلتين. تتراكبان: الوصول النهائي لأي شخص إلى أي سجل هو ما تسمح به كلتا الطبقتين.

   START: everyone can SEE everything
              │
              ▼
   ┌──────────────────────────────────────────────┐
   │ LAYER 1 — ADMIN RIGHTS                        │
   │ "What may this person CHANGE?"                │
   │ Granted per area, per action.                 │
   │ No right → can view, but not create/edit/delete
   └──────────────────────────────────────────────┘
              │
              ▼
   ┌──────────────────────────────────────────────┐
   │ LAYER 2 — ROLE RESTRICTIONS                   │
   │ "What may this person's role even SEE?"       │
   │ Hides matching records from the role —        │
   │ everywhere those records would appear.        │
   └──────────────────────────────────────────────┘
              │
              ▼
   RESULT: what this person can see and do

الطبقة 1 — حقوق الإدارة (ما يمكنك تغييره)

كل شخص لديه مجموعة من حقوق الإدارة. كل حق هو مفتاح واحد لإجراء واحد في مجال واحد — على سبيل المثال jobsUpdate، sitesDelete، resourcesCreate. إذا كان لديك الحق، يمكنك تنفيذ هذا الإجراء؛ وإذا لم يكن لديك، فلا يمكنك ذلك.

هذا النمط ثابت في جميع أنحاء النظام: تحتوي معظم المجالات على حق إنشاء وتحديث وحذف.

   Jobs        →  jobsCreate · jobsUpdate · jobsDelete
   Sites       →  sitesCreate · sitesUpdate · sitesDelete
   Resources   →  resourcesCreate · resourcesUpdate · resourcesDelete
   Reports     →  reportsCreate · reportsUpdate · reportsDelete
   ... and so on for every area

في حالة عدم وجود حقوق، يكون الشخص فعليًا في وضع القراءة فقط: يمكنه فتح السجلات وعرضها عبر التطبيق، ولكن عناصر التحكم في الإنشاء/التحرير/الحذف غير متاحة له. تقوم بتوزيع الحقوق لتوسيع نطاق ما يُسمح لكل شخص بالقيام به.

هناك عدد قليل من الحقوق لا يقتصر على مجال واحد — فهي تفتح إمكانية، مثل عرض المحذوف (viewDeleted) أو تسهيل عمليات الاستلام أو عرض التدقيق. تعمل هذه الحقوق بنفس الطريقة: إما أن تكون ممنوحة أو غير ممنوحة.

الطبقة 2 — قيود الدور (ما يمكنك رؤيته)

الطبقة الأولى لا تخفي أي شيء أبدًا — فهي تحكم عملية التحرير فقط. لإخفاء المحتوى عن العرض، تستخدم الأدوار.

الدور هو مجموعة مسماة من الأشخاص تحمل قائمة بالقيود. كل قيد هو قاعدة تنص، في الواقع، على ما يلي: "يجب ألا يلمس أعضاء هذا الدور السجلات التي تتطابق مع هذا الشرط." الشيء الأساسي الذي يفعله القيد هو إخفاء السجلات المطابقة — فهي ببساطة لا تظهر لهذا الدور، في أي مكان.

المستويات الثلاثة

بالنسبة لأي سجل معين، ينتهي الأمر بالشخص في واحد من هذه المستويات بالضبط:

   ┌────────────────────────────────┬──────┬───────┐
   │                                │ SEE  │ EDIT  │
   ├────────────────────────────────┼──────┼───────┤
   │ Open                           │  ✓   │  ✓ *  │
   │ View-only                      │  ✓   │  ✗    │
   │ Hidden          (role-hidden)  │  ✗   │  ✗    │
   └────────────────────────────────┴──────┴───────┘

   * Editing requires the matching admin right from Layer 1.
  • مفتوح — مرئي وقابل للتحرير من قبل أي شخص يمتلك حق الإدارة ذي الصلة.
  • للعرض فقط — مرئي، ولكن غير قابل للتحرير. هذا ببساطة ما تحصل عليه لأي سجل لا يمتلك فيه الشخص حق التحرير (الطبقة 1). نظرًا لأن الرؤية مفتوحة بشكل افتراضي والتحرير مسموح به، فإن معظم الأشخاص يكونون في وضع "للعرض فقط" بالنسبة لمعظم الأشياء — وهذا هو الوضع الطبيعي، وليس إغلاقًا خاصًا.
  • مخفيدور ما يخفي السجل، لذا فهو غير موجود في قوائم ذلك الشخص أو على خريطته على الإطلاق.

نظرًا لأن قواعد الأدوار ترتبط بالسجلات التي تتطابق مع شرط ما (وليس بالصفحات بأكملها)، يمكن لدور ما رؤية مجموعة فرعية من المهام أو المواقع أو الميزات بينما يرى دور آخر مجموعة فرعية مختلفة من نفس المجموعة.

يعمل على كل المستويات

الإخفاء عبر الأدوار ليس ميزة لشاشة واحدة. تنطبق قواعد العرض نفسها بشكل موحد عبر النظام — الوظائف، أوامر العمل، التقارير، الموارد، المواقع، المخزون، ميزات الخريطة، المستخدمون، الأدوار، والمزيد، كلها تُعرض قوائمها وفقًا لقيود دور الشخص الحالي. قم بإخفاء فئة من السجلات لدور ما في مكان واحد، وسيتم إخفاؤها في كل مكان يطل عليه هذا الدور.

ملاحظة حول عمل الطبقتين معًا. يتم الإخفاء بناءً على الأدوار ويُطبق في كل مكان. يتم التحرير بناءً على حقوق المسؤول — لذا فإن الطريقة الموثوقة لجعل شيء ما للقراءة فقط لمجموعة ما هي حجب حق التحرير الخاص به. (يمكن أن تتضمن الأدوار أيضًا قواعد التحرير/الإنشاء/الحذف، ولكن تعامل حق المسؤول على أنه بوابة التحرير الحقيقية.)

الاستثناءات من "يمكن للجميع رؤية كل شيء"

يحتوي الإعداد الافتراضي المفتوح على بعض الاستثناءات المتعمدة:

  • يتم إخفاء السجلات المحذوفة ما لم يكن لدى الشخص حق عرض المحذوفات و يطلب عرضها. تظل العناصر المحذوفة مؤقتًا قابلة للاستعادة ولكنها تظل مخفية.
  • المواقع الشخصية ملك لأصحابها. موقع المخزون الشخصي للموظف مرئي للآخرين، ولكن لا يمكن تعديله إلا لمالكه — بغض النظر عن حقوق الموقع.
  • تظل ميزات الخريطة اليتيمة (التي تم حذف الطبقة الأم لها) مخفية ما لم تكن تعرض المحتوى المحذوف بشكل صريح.

كل شيء آخر يتبع القاعدة: مفتوح للعرض، ممنوح للتعديل، ومحدد حسب الدور حيثما تقرر أن ذلك مهم.

كيف ينطبق هذا على منطقة الإدارة

تدير كلا الطبقتين من قائمة الإدارة:

  • المستخدمون — قم بتعيين حقوق الإدارة للشخص (الطبقة 1) وعضويته في الدور.
  • الأدوار — حدد الأدوار وقيودها (الطبقة 2).
  • منح الوصول — أدخل أشخاصًا جددًا وقم بإعدادهم.

للحصول على صورة كاملة للأمان، راجع المصادقة (كيف يثبت الأشخاص هويتهم) والتفويض (كيف يتم تكوين الحقوق والأدوار بالتفصيل).