HandyCafe Docs
owner

أدوار أمناء الصندوق والصلاحيات

يستخدم HandyCafe التحكم بالوصول المبني على الأدوار (RBAC) لإدارة ما يمكن لكل موظف رؤيته وفعله داخل النظام. يُعيّن لكل أمين صندوق دور ويحدد ذلك الدور صلاحياته الدقيقة عبر التطبيق بأكمله.


أنواع الأدوار

يوفر HandyCafe ثلاثة أنواع من الأدوار:

المسؤول

دور المسؤول يمنح وصولًا غير مقيد لكل ميزة في النظام. يمكن للمسؤولين إدارة أمناء الصندوق وعرض جميع التقارير وتعديل الإعدادات وتنفيذ أي عملية. هذا الدور مخصص لأصحاب المقاهي والمديرين الكبار الذين يحتاجون إلى تحكم كامل.

يوجد دائمًا حساب مسؤول واحد على الأقل في النظام. لا يمكن حذف دور المسؤول أو تقليص صلاحياته.

الافتراضي

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

مخصص

تتيح لك الأدوار المخصصة تحديد الصلاحيات التي يملكها أمين الصندوق بالضبط. اختر اسمًا وحدد مستوى ثم فعّل أو عطّل علامات الصلاحيات الفردية عبر ست فئات. يمنحك هذا تحكمًا دقيقًا في ما يمكن لكل موظف الوصول إليه.


فئات الصلاحيات

يحتوي HandyCafe على 22 علامة صلاحية فردية منظمة في 6 فئات. تتحكم كل علامة في إجراء أو عرض محدد داخل النظام.

1. المصادقة (علامة واحدة)

العلامة الوصف
CLIENT_LOGIN يسمح لأمين الصندوق بتسجيل الدخول على أجهزة العملاء (بدء الجلسات نيابةً عن الزبائن)

بدون هذه الصلاحية لا يستطيع أمين الصندوق بدء جلسات العملاء أو إدارتها.

2. الأعضاء (6 علامات)

العلامة الوصف
VIEW عرض قائمة الأعضاء وتفاصيلهم
ADD إنشاء حسابات أعضاء جديدة
DELETE حذف حسابات الأعضاء من النظام
UPDATE تعديل معلومات الأعضاء الحالية (الاسم والرصيد وغيرها)
DISPLAY_EMAIL عرض عناوين البريد الإلكتروني للأعضاء في القائمة
DISPLAY_GSM عرض أرقام هواتف الأعضاء في القائمة

أمين الصندوق الذي يملك VIEW فقط يمكنه تصفح قائمة الأعضاء لكنه لا يستطيع إنشاء أو تعديل أو حذف أي عضو. تتحكم علامتا DISPLAY_EMAIL وDISPLAY_GSM في ما إذا كانت معلومات الاتصال الحساسة مرئية. مفيد للامتثال للخصوصية حيث لا ينبغي لجميع الموظفين رؤية البيانات الشخصية.

3. وحدات التحكم (4 علامات)

العلامة الوصف
VIEW عرض صفحة وحدات التحكم وبطاقات حالتها
ADD تسجيل وحدات تحكم ألعاب جديدة في النظام
DELETE حذف وحدات التحكم من النظام
UPDATE تعديل تفاصيل وحدات التحكم (الاسم وعنوان MAC والتسعير)

4. السجلات (4 علامات)

العلامة الوصف
VIEW الوصول إلى صفحة السجلات
DISPLAY_FULL عرض سجل السجلات الكامل (جميع التواريخ)
DISPLAY_TODAY عرض مدخلات السجلات لليوم الحالي فقط
DELETE حذف مدخلات السجلات

إذا كان لدى أمين الصندوق VIEW وDISPLAY_TODAY بدون DISPLAY_FULL فإنه يرى مدخلات السجلات لليوم الحالي فقط. مفيد لمشرفي الورديات الذين يحتاجون لمتابعة النشاط الحالي دون الوصول إلى السجلات التاريخية.

5. التقارير (3 علامات)

العلامة الوصف
PAGE_VIEW الوصول إلى صفحة التقارير/تقرير النقد
DISPLAY_FULL عرض سجل التقارير الكامل (جميع التواريخ)
DISPLAY_TODAY عرض بيانات تقارير اليوم الحالي فقط

مشابه للسجلات، تتيح لك صلاحيات التقارير التحكم في ما إذا كان الموظفون يرون السجل المالي الكامل أو أرقام اليوم الحالي فقط. أمين الصندوق الذي يملك PAGE_VIEW وDISPLAY_TODAY يمكنه مراجعة معاملات ورديته لكنه لا يستطيع الوصول إلى بيانات الإيرادات التاريخية.

6. طرق الدفع (4 علامات)

العلامة الوصف
MANAGE الوصول إلى منطقة إدارة طرق الدفع
ADD إنشاء طرق دفع جديدة (نقد وبطاقة ودفع إلكتروني وغيرها)
DELETE حذف طرق الدفع من النظام
UPDATE تعديل تفاصيل طرق الدفع الحالية

الملخص

الفئة العلامات الإجمالي
المصادقة CLIENT_LOGIN 1
الأعضاء VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM 6
وحدات التحكم VIEW, ADD, DELETE, UPDATE 4
السجلات VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE 4
التقارير PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY 3
طرق الدفع MANAGE, ADD, DELETE, UPDATE 4
الإجمالي 22

كيف تعمل الصلاحيات

لكل فئة صلاحيات مجموعة من علامات الصلاحيات الفردية. يمكن تفعيل أو تعطيل كل علامة بشكل مستقل باستخدام مربعات اختيار في محرر الأدوار.

توفر الواجهة مربعات اختيار لكل صلاحية. ما عليك سوى تحديد أو إلغاء تحديد الصلاحيات التي تريد منحها أو سحبها. يتعامل النظام مع التخزين الأساسي تلقائيًا ولا تحتاج لحساب أي قيم يدويًا.

على سبيل المثال في فئة الأعضاء يمكنك تفعيل أو تعطيل: VIEW وADD وDELETE وUPDATE وDISPLAY_EMAIL وDISPLAY_GSM بشكل مستقل. أمين الصندوق الذي لديه VIEW وUPDATE فقط يمكنه عرض الأعضاء وتعديلهم لكنه لا يستطيع إضافتهم أو حذفهم.


إنشاء حساب أمين صندوق

  1. انتقل إلى الإدارة > أمناء الصندوق في تطبيق الخادم.
  2. انقر على زر إضافة أمين صندوق.
  3. أدخل اسم المستخدم لأمين الصندوق. هذا ما سيستخدمه لتسجيل الدخول.
  4. عيّن كلمة مرور. اختر كلمة مرور قوية. قد يملك هذا الحساب وصولًا إلى بيانات مالية ومعلومات عملاء.
  5. حدد دورًا من القائمة المنسدلة. يمكنك اختيار المسؤول أو الافتراضي أو أي دور مخصص أنشأته.
  6. انقر على حفظ لإنشاء الحساب.

يمكن لأمين الصندوق الجديد الآن تسجيل الدخول إلى خادم HandyCafe باستخدام بيانات اعتماده.


إنشاء دور مخصص

  1. انتقل إلى الإدارة > أدوار أمناء الصندوق في تطبيق الخادم.
  2. انقر على زر إضافة دور.
  3. أدخل اسم الدور (مثلًا "مشرف الوردية" أو "أمين صندوق مبتدئ" أو "موظف الوردية الليلية").
  4. حدد مستوى الدور. المستويات الأعلى تشير إلى سلطة أكبر. يُستخدم لترتيب العرض والتسلسل الهرمي التنظيمي.
  5. حدد أو ألغِ تحديد الصلاحيات الفردية عبر الفئات الست. يتوافق كل مربع اختيار مع واحدة من إعدادات الصلاحيات الـ 22.
  6. انقر على حفظ لإنشاء الدور.

بمجرد إنشائه يمكنك تعيين هذا الدور لأي حساب أمين صندوق.


التطبيق من جانب الخادم

تُطبّق الصلاحيات على جانب الخادم وليس فقط مخفية في الواجهة. حتى لو تجاوز شخص ما واجهة العميل أو تلاعب بكود الواجهة الأمامية فإن الخادم يتحقق من كل طلب مقابل صلاحيات دور أمين الصندوق قبل تنفيذه.

هذا يعني:

  • أمين الصندوق بدون MEMBER_DELETE لا يستطيع حذف عضو حتى بإرسال طلب API مباشر.
  • أمين الصندوق بدون REPORT_DISPLAY_FULL لا يستطيع استرجاع بيانات التقارير التاريخية بغض النظر عن طريقة الوصول.
  • تحدث جميع فحوصات الصلاحيات في الواجهة الخلفية بلغة Rust قبل تنفيذ أي عملية على قاعدة البيانات.

الأمان: تحديد معدل المحاولات

لحماية ضد هجمات القوة الغاشمة يفرض HandyCafe تحديد معدل تسجيل الدخول:

  • 5 محاولات تسجيل دخول فاشلة خلال نافذة 10 دقائق تؤدي إلى قفل تلقائي.
  • يستمر القفل 15 دقيقة ولا تُقبل خلالها أي محاولات تسجيل دخول لذلك الحساب.
  • بعد انتهاء فترة القفل يمكن لأمين الصندوق المحاولة مرة أخرى.

ينطبق هذا على كلٍّ من شاشة تسجيل الدخول للخادم وتسجيل دخول أمين الصندوق على أجهزة العملاء.


إدارة الورديات

يُتتبع نشاط كل أمين صندوق بشكل فردي طوال ورديته:

  • تُسجّل جميع المعاملات (مدفوعات الجلسات ومدفوعات الطلبات وغيرها) بهوية أمين الصندوق.
  • يتتبع صندوق النقد أرصدة الافتتاح والإغلاق لوردية كل أمين صندوق بشكل منفصل.
  • يمكن إنشاء تقارير الورديات لكل أمين صندوق توضح بالضبط مقدار الإيرادات التي عالجها خلال ورديته.
  • عند تسجيل خروج أمين الصندوق تُغلق ورديته ويتوفر ملخص للمراجعة.

يضمن هذا التتبع الفردي المحاسبية ويسهّل تحديد التناقضات في نهاية كل وردية.


أمثلة على الصلاحيات

السيناريو 1: أمين صندوق أساسي موظف جديد يحتاج فقط لبدء/إيقاف الجلسات واستلام المدفوعات. عيّن له دورًا مخصصًا مع CLIENT_LOGIN فقط. لا يستطيع عرض الأعضاء أو التقارير أو السجلات أو وحدات التحكم.

السيناريو 2: مشرف الوردية موظف موثوق يشرف على القاعة. عيّن له دورًا يتضمن CLIENT_LOGIN وMEMBER_VIEW وMEMBER_UPDATE وCONSOLE_VIEW وREPORT_PAGE_VIEW وREPORT_DISPLAY_TODAY. يمكنه إدارة الجلسات وعرض الأعضاء (دون حذفهم) ورؤية وحدات التحكم ومراجعة إيرادات اليوم لكنه لا يستطيع الوصول إلى التقارير التاريخية الكاملة أو تعديل طرق الدفع.

السيناريو 3: مدير الوردية الليلية مدير يتولى الوردية الليلية بشكل مستقل. امنحه معظم الصلاحيات باستثناء MEMBER_DELETE وLOG_DELETE وPAYMENT_METHOD_DELETE. يمكنه إدارة كل شيء خلال ورديته لكنه لا يستطيع حذف البيانات الحساسة نهائيًا.

السيناريو 4: موظف مع قيود الخصوصية أمين صندوق لا ينبغي له رؤية بيانات اتصال العملاء. أنشئ دورًا مع MEMBER_VIEW مفعّلة لكن DISPLAY_EMAIL وDISPLAY_GSM معطلتين. يمكنه البحث عن الأعضاء بالاسم لكن معلومات الاتصال الشخصية مخفية.