إدارة عضوية المجموعة عبر المصادقة

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

بعض الملاحظات.

لقد اخترت حالة Google Apps HD Groups الأكثر تعقيداً قليلاً للتنفيذ الأولي، لأنني أعتقد أن ذلك يساعد في استيعاب التباديل المحتملة لهذه الحالة، مثل الحاجة إلى أخذ المجموعات الخاصة بالنطاق من مزود الخدمة في الاعتبار.

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

لاحظ أنه لتطبيق حالة مجموعات Google HD، يجب أن تمنح الأعضاء غير المسؤولين في مجموعات Google Apps HD الخاصة بك صلاحية المسؤول المفوض من أجل سرد مجموعاتهم (عبر واجهة برمجة تطبيقات دليل الإدارة). يوجد في الواقع دور إداري مُعد مسبقاً يُسمى “Groups Reader” في النسخة التجريبية (beta) يعمل بشكل جيد لهذا الغرض. راجع Prebuilt administrator roles  |  User management  |  Google Workspace Help

يعمل تطبيق Google بنجاح. إذا قمت بإعداده ثم قمت بالمصادقة مع HD، فستكون مجموعات Google HD الخاصة بك متاحة في إعداد عضوية المجموعة التلقائية، وسيتم إضافتك إلى مجموعة Discourse هذه إذا تم اختيار مجموعة HD هذه، وسيتم إزالتك إذا تم إزالتها (مع تسجيل كلتا الإجراءين بدقة)، وسيتم إضافة المستخدمين اللاحقين في مجموعة Google HD هذه الذين يقومون بالمصادقة فوراً.

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


بعض المهام التقنية المتبقية (إلى جانب الأسئلة المفاهيمية/المنتجة المذكورة أعلاه). الترحيب أيضاً بالاقتراحات في هذا الجانب:

  • ربما يتم تسلسل label الخاص بـ associated_groups (بدلاً من نمذجته على جانب العميل).
  • إضافة الاختبارات المفقودة ووحدة QUnit.
  • ربما نقل إنشاء/تدمير user_associated_group أو group_associated_group إلى مهمة في الخلفية، حيث يمكن أن يكون ذلك بطيئاً مع الأعداد الكبيرة.